Mapeamentos de tipos unificados para tipos de dados de origem e destino

Visão geral

Os tipos unificados são os tipos de dados que aparecem nos eventos Avro ou JSON. Eles são uma representação unificada e específica do Datastream de um tipo de dados em várias fontes de dados e destinos, como um banco de dados Oracle de origem, MySQL ou PostgreSQL e um destino do BigQuery ou do Cloud Storage.

Os tipos unificados são o superconjunto de todas as representações de tipos compatíveis, que representam o tipo de origem original de maneira genérica, mas sem perdas.

A tabela a seguir lista:

  • Os tipos unificados associados ao Datastream
  • Os mapeamentos entre os tipos de dados de um banco de dados Oracle, MySQL ou PostgreSQL e os tipos unificados do Datastream

Consulte a documentação de destino do BigQuery para saber mais sobre os mapeamentos entre os tipos de dados das diferentes fontes e do BigQuery.

Tipos unificados de fluxo de dados

Nome do tipo Informações Definição do Avro Definição de JSON
BOOLEAN boolean boolean boolean
BYTES Uma sequência de bytes não assinados bytes string
DATE Dias desde a Era Unix Um tipo lógico de data String (ISO 8601)
DATETIME A data (em dias desde a época) e a hora (em microssegundos a partir da meia-noite)

Um 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) Um número decimal com precisão arbitrária Um tipo lógico decimal número
DOUBLE números de ponto flutuante de 64 bits duplo número
FLOAT números de ponto flutuante de 32 bits float número
INTEGER Um número inteiro de 64 bits int number
INTERVAL Duração entre dois eventos (em meses, horas e microssegundos)

Um tipo personalizado

{
  "type": "record",
  "name": "interval",
  "fields": [
    {"name": "months",
     "type": "int"}
    {"name": "hours",
     "type": "int"},
    {"name": "micros",
     "type": "long"}
  ]
}
    
String (ISO 8601)
JSON Um objeto JSON

Um tipo lógico personalizado

{
  "type": "string",
  "logicalType": "json"
}
JSON aninhado
LONG Um número inteiro de 64 bits long número
NUMBER Um tipo de dados numéricos

Um tipo lógico personalizado

{
  "type": "string",
  "logicalType": "number"
}
string
STRING Um comprimento de string ilimitado string string
TIME Quantos microssegundos se passaram desde a meia-noite, independentemente do fuso horário. Um tipo lógico de time-micros String (ISO 8601)
TIME_INTERVAL Quantos microssegundos se passaram entre dois eventos

Um tipo lógico personalizado

{
  "type": "long",
  "logicalType": "time-interval-micros"
}
long
TIMESTAMP Quantos microssegundos se passaram desde a época, independentemente do fuso horário Um tipo lógico de carimbo de data/hora String (ISO 8601)
TIMESTAMP WITH TIME ZONE Quantos microssegundos passaram desde o período com uma diferença de fuso horário específica em milissegundos

Um 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 Quantos microssegundos se passaram desde a meia-noite com uma diferença de fuso horário específica

Um 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 Um tipo de dados variável. União matriz
UNSUPPORTED Um tipo de dados não compatível

Um tipo lógico personalizado

{
  "type": "null",
  "logicalType": "unsupported"
}
null
VARCHAR Uma string com comprimento máximo de n caracteres.

Um tipo lógico personalizado

{
  "type": "string",
  "logicalType": "varchar"
  "length": N
}
string

Mapear tipos de dados Oracle para tipos unificados do Datastream

Tipo de dados Oracle Tipo unificado do 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)

Se p<=18, então LONG. Se p>18 ou p=*, então NUMBER.

NUMBER(p,s>0)

Se p=*, em seguida, DECIMAL(38,s), caso contrário 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 pelo usuário) UNSUPPORTED
UROWID UNSUPPORTED
VARCHAR VARCHAR
VARCHAR2 VARCHAR
XMLTYPE UNSUPPORTED

Mapear tipos de dados MySQL para tipos unificados do Datastream

Tipo de dados do MySQL Tipo unificado do Datastream
BIGINT(size) SIGNED LONG
BIGINT(size) UNSIGNED Se o destino for o BigQuery, DECIMAL se for o Cloud Storage, então NUMBER.
BINARY(size) STRING (hex encoded)
BIT(size) LONG
BLOB(size) STRING (hex encoded)
BOOL INTEGER
CHAR(size) STRING
DATE Se o destino for o BigQuery, DATE se for o Cloud Storage, então TIMESTAMP.
DATETIME(fsp) Se o destino for o BigQuery, DATETIME se for o Cloud Storage, então TIMESTAMP.
DECIMAL(size, d) DECIMAL(size, d)
DOUBLE(size, d) DOUBLE
ENUM(val1, val2, val3, ...) STRING
FLOAT(p) FLOAT
FLOAT(size, d) FLOAT
GEOMETRY UNSUPPORTED
INTEGER(size) SIGNED INTEGER
INTEGER(size) UNSIGNED LONG
JSON Se o destino for o BigQuery, JSON se for o Cloud Storage, então STRING.
LONGBLOB STRING (hex encoded)
LONGTEXT STRING
MEDIUMBLOB STRING (hex encoded)
MEDIUMINT(size) INTEGER
MEDIUMTEXT STRING
SET(val1, val2, val3, ...) STRING
SMALLINT(size) INTEGER
TEXT(size) STRING
TIME(fsp) Se o destino for o BigQuery, INTERVAL se for o Cloud Storage, então TIME_INTERVAL.
TIMESTAMP(fsp) TIMESTAMP
TINYBLOB STRING (hex encoded)
TINYINT(size) INTEGER
TINYTEXT STRING
VARBINARY(size) STRING (hex encoded)
VARCHAR STRING
YEAR INTEGER

Mapear os tipos de dados do PostgreSQL para os tipos unificados do Datastream

Tipo de dados do PostgreSQL Tipo unificado do Datastream
ARRAY JSON
BIGINT LONG
BIT BYTES
BIT_VARYING BYTES
BOOLEAN BOOLEAN
BOX UNSUPPORTED
BYTEA BYTES
CHARACTER
  • Se houver limite de comprimento, mapeie para VARCHAR
  • Caso contrário, mapeie para STRING
CHARACTER_VARYING
  • Se houver limite de comprimento, mapeie para VARCHAR
  • Caso contrário, mapeie para 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
  • Se precisão = -1 e escala = -1, então mapeie para NUMBER
  • Caso contrário, mapeie para 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

Mapear tipos de dados do SQL Server para tipos unificados do Datastream

Tipo de dados do SQL Server Tipo unificado do 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

A seguir