Descripción general
Los tipos unificados son los tipos de datos que aparecen en los eventos de Avro o JSON. Son una representación unificada y específica de Datastream de un tipo de datos en múltiples fuentes de datos y destinos, como una base de datos de origen de Oracle, MySQL o PostgreSQL, y un destino de BigQuery o Cloud Storage.
Los tipos unificados son el superconjunto de todas las representaciones de tipo en todos los tipos de fuentes compatibles, que representan el tipo de fuente original de forma genérica pero sin pérdidas.
En las siguientes tablas, se enumeran las siguientes:
- Los tipos unificados asociados con Datastream
- Las asignaciones entre los tipos de datos de una base de datos de Oracle, una base de datos MySQL o una base de datos de PostgreSQL, y los tipos unificados de Datastream
Consulta la documentación de destino de BigQuery para obtener información sobre las asignaciones entre los tipos de datos de las diferentes fuentes y BigQuery.
Tipos unificados de Datastream
Nombre del tipo | Info | Definición de Avro | Definición de JSON |
---|---|---|---|
BOOLEAN |
boolean | boolean | boolean |
BYTES |
Una secuencia de bytes sin firma | bytes | string |
DATE |
Días desde la época | Un tipo lógico de fecha | string [ISO-8601] |
DATETIME |
La fecha (en días desde la época) y la hora (en microsegundos desde la medianoche) | Un tipo personalizado { "type": "record", "name": "datetime", "fields": [ {"name": "date", "type": "int", "logicalType": "date"}, {"name": "time", "type": "long", "logicalType": "time-micros"} ] } |
string [ISO-8601] |
DECIMAL (p,s) |
Número decimal con signo de precisión arbitraria | Un tipo lógico decimal | número |
DOUBLE |
Números de punto flotante de 64 bits | double | número |
FLOAT |
Números de punto flotante de 32 bits | float | número |
INTEGER |
Un número entero de 32 bits. | int | número |
INTERVAL |
Duración entre dos eventos (en meses, horas y microsegundos) | Un tipo personalizado { "type": "record", "name": "interval", "fields": [ {"name": "months", "type": "int"} {"name": "hours", "type": "int"}, {"name": "micros", "type": "long"} ] } |
string [ISO-8601] |
JSON |
Un objeto JSON | Un tipo lógico personalizado { "type": "string", "logicalType": "json" } |
JSON anidado |
LONG |
Un número entero de 64 bits. | long | número |
NUMBER |
Un tipo de datos numéricos | Un tipo lógico personalizado { "type": "string", "logicalType": "number" } |
string |
STRING |
Una longitud de cadena ilimitada | string | string |
TIME |
Cantidad de microsegundos transcurridos desde la medianoche, independientemente de la zona horaria. | Un tipo lógico de micros de tiempo | string [ISO-8601] |
TIME_INTERVAL |
Cuántos microsegundos transcurrieron entre dos eventos | Un tipo lógico personalizado { "type": "long", "logicalType": "time-interval-micros" } |
long |
TIMESTAMP |
Cuántos microsegundos transcurrieron desde la época, independientemente de la zona horaria | Un tipo lógico de marca de tiempo | string [ISO-8601] |
TIMESTAMP WITH TIME ZONE |
Cantidad de microsegundos transcurridos desde la época con un desplazamiento específico de la zona horaria en milisegundos | Un tipo personalizado { "type": "record", "name": "timestampTz", "fields": [ {"name": "timestamp", "type": "long" "logicalType": "timestamp-micros"}, {"name": "offset", "type": "int" "logicalType": "time-millis"} ] } |
string [ISO-8601] |
TIME WITH TIME ZONE |
Cuántos microsegundos transcurrieron desde la medianoche con un desplazamiento específico de la zona horaria | Un tipo personalizado { "type": "record", "name": "timeTz", "fields": [ {"name": "time", "type": "long" "logicalType": "time-micros"}, {"name": "offset", "type": "int", "logicalType": "time-millis"} ] } |
string [ISO-8601] |
UNION |
Un tipo de datos variable | Union | array |
UNSUPPORTED |
Un tipo de datos no compatible | Un tipo lógico personalizado { "type": "null", "logicalType": "unsupported" } |
null |
VARCHAR |
Una string con una longitud máxima de n caracteres | Un tipo lógico personalizado { "type": "string", "logicalType": "varchar" "length": N } |
string |
Asigna los tipos de datos de Oracle a los tipos unificados de Datastream
Tipo de datos de Oracle | Tipo unificado de Datastream |
---|---|
ANYDATA |
UNSUPPORTED |
BFILE |
STRING |
BINARY DOUBLE |
DOUBLE |
BINARY FLOAT |
FLOAT |
BLOB |
BYTES |
CHAR |
VARCHAR |
CLOB |
STRING |
DATE |
DATETIME
|
DOUBLE PRECISION |
DOUBLE |
FLOAT(p) |
DOUBLE |
INTERVAL DAY TO SECOND |
UNSUPPORTED |
INTERVAL YEAR TO MONTH |
UNSUPPORTED |
LONG/LONG RAW |
UNSUPPORTED |
NCHAR |
STRING |
NCLOB |
STRING |
NUMBER |
NUMBER |
NUMBER(p,s<=0) |
Si p<=18, entonces |
NUMBER(p,s>0) |
Si p= |
NVARCHAR2 |
STRING |
RAW |
STRING |
ROWID |
STRING |
SDO_GEOMETRY |
UNSUPPORTED |
SMALLINT |
INTEGER |
TIMESTAMP |
TIMESTAMP
|
TIMESTAMP WITH TIME ZONE |
TIMESTAMP WITH TIME ZONE
|
UDT (tipo definido por el usuario) |
UNSUPPORTED |
UROWID |
UNSUPPORTED |
VARCHAR |
VARCHAR |
VARCHAR2 |
VARCHAR |
XMLTYPE |
UNSUPPORTED |
Asigna los tipos de datos de MySQL a los tipos unificados de Datastream
Tipo de datos de MySQL | Tipo unificado de Datastream |
---|---|
BIGINT(size) |
Si tiene firma, entonces LONG ; si no está firmada, entonces DECIMAL |
BINARY(size) |
STRING (hex encoded) |
BIT(size) |
LONG |
BLOB(size) |
STRING (hex encoded) |
BOOL |
INTEGER |
CHAR(size) |
STRING |
DATE |
Si el destino es BigQuery, entonces DATE , si es Cloud Storage, y, luego, TIMESTAMP |
DATETIME(fsp) |
DATETIME |
DECIMAL(size, d) |
DECIMAL(size, d) |
DOUBLE(size, d) |
DOUBLE |
ENUM(val1, val2, val3, ...) |
STRING |
FLOAT(p) |
FLOAT |
FLOAT(size, d) |
FLOAT |
INTEGER(size) |
INTEGER |
JSON |
JSON
Se admiten los tipos de datos BOOLEAN , NUMBER , OBJECT , STRING , ARRAY y NULL . |
LONGBLOB |
STRING (hex encoded) |
LONGTEXT |
STRING (hex encoded) |
MEDIUMBLOB |
STRING (hex encoded) |
MEDIUMINT(size) |
INTEGER |
MEDIUMTEXT |
STRING |
SET(val1, val2, val3, ...) |
STRING |
SMALLINT(size) |
INTEGER |
TEXT(size) |
STRING |
TIME(fsp) |
INTERVAL |
TIMESTAMP(fsp) |
TIMESTAMP |
TINYBLOB |
STRING (hex encoded) |
TINYINT(size) |
INTEGER |
TINYTEXT |
STRING |
VARBINARY(size) |
STRING (hex encoded) |
VARCHAR |
STRING |
YEAR |
INTEGER |
Asigna los tipos de datos de PostgreSQL a los tipos unificados de Datastream
Tipo de datos de PostgreSQL | Tipo unificado de Datastream |
---|---|
ARRAY |
JSON
|
BIGINT |
LONG |
BIT |
BYTES |
BIT_VARYING |
BYTES |
BOOLEAN |
BOOLEAN |
BOX |
UNSUPPORTED |
BYTEA |
BYTES |
CHARACTER |
|
CHARACTER_VARYING |
|
CIDR |
STRING |
CIRCLE |
UNSUPPORTED |
CITEXT |
STRING |
DATE |
DATE |
DOUBLE_PRECISION |
DOUBLE |
ENUM |
STRING |
INET |
STRING |
INTEGER |
INTEGER |
INTERVAL |
INTERVAL |
JSON |
JSON |
JSONB |
JSON |
LINE |
UNSUPPORTED |
LSEG |
UNSUPPORTED |
MACADDR |
STRING |
MONEY |
DOUBLE |
NUMERIC |
|
OID |
LONG |
PATH |
UNSUPPORTED |
POINT |
UNSUPPORTED |
POLYGON |
UNSUPPORTED |
REAL |
FLOAT |
SMALLINT |
INTEGER |
SMALLSERIAL |
INTEGER |
SERIAL |
INTEGER |
TEXT |
STRING |
TIME |
TIME |
TIMESTAMP |
TIMESTAMP |
TIMESTAMP_WITH_TIMEZONE |
TIMESTAMP_WITH_TIMEZONE |
TIME_WITH_TIMEZONE |
TIME_WITH_TIMEZONE |
TSQUERY |
STRING |
TSVECTOR |
STRING |
TXID_SNAPSHOT |
STRING |
UUID |
STRING |
XML |
STRING |
Asigna los tipos de datos de SQL Server a los tipos unificados de Datastream
Tipo de datos de SQL Server | Tipo unificado de Datastream |
---|---|
BIGINT |
LONG |
BINARY |
BYTES |
BIT |
BOOLEAN |
CHAR |
STRING |
DATE |
DATE |
DATETIME2 |
DATETIME |
DATETIME |
DATETIME |
DATETIMEOFFSET |
TIMESTAMP WITH TIMEZONE |
DECIMAL |
DECIMAL (p, s) |
FLOAT |
DOUBLE |
HIERARCHYID |
STRING |
INT |
INTEGER |
IMAGE |
BYTES |
MONEY |
DECIMAL |
NCHAR |
STRING |
NVARCHAR |
STRING |
NVARCHAR(MAX) |
STRING |
NTEXT |
STRING |
NUMERIC |
DECIMAL (p, s) |
REAL |
FLOAT |
SMALLDATETIME |
DATETIME |
SMALLINT |
INTEGER |
SMALLMONEY |
DECIMAL |
TEXT |
STRING |
TINYINT |
INTEGER |
TIME |
TIME |
TIMESTAMP/ROWVERSION |
BYTES |
UNIQUEIDENTIFIER |
STRING |
VARCHAR |
STRING |
VARCHAR(MAX) |
STRING |
VARBINARY |
BYTES |
VARBINARY(MAX) |
BYTES |
XML |
STRING |