Asignaciones de tipos unificados a tipos de datos de origen y destino

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 LONG. Si p>18 o p=*, entonces NUMBER.

NUMBER(p,s>0)

Si p=*, entonces DECIMAL(38,s); de lo contrario, es DECIMAL(p,s).

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
  • Si hay límite de longitud, asignarlo a VARCHAR
  • De lo contrario, asignar a STRING
CHARACTER_VARYING
  • Si hay límite de longitud, asignarlo a VARCHAR
  • De lo contrario, asignar a STRING
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
  • Si la precisión es igual a -1 y la escala es igual a -1, se asigna a NUMBER.
  • De lo contrario, asignar a DECIMAL
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