Mappature di tipi unificati a tipi di dati di origine e di destinazione

Panoramica

I tipi unificati sono quelli che vengono visualizzati negli eventi Avro o JSON. Sono una rappresentazione unificata specifica di Datastream di un tipo di dati in più origini e destinazioni, come un database Oracle di origine, un database MySQL o un database PostgreSQL e una destinazione BigQuery o Cloud Storage.

I tipi unificati sono il soprainsieme di tutte le rappresentazioni dei tipi su tutti i tipi di origine supportati, che rappresentano il tipo di origine originale in modo generico ma senza perdita di dati.

Di seguito sono riportate le tabelle:

  • I tipi unificati associati a Datastream
  • Mappature tra i tipi di dati per un database Oracle, un database MySQL o PostgreSQL e i tipi unificati Datastream

Per informazioni sulle mappature tra i tipi di dati per le diverse origini e BigQuery, consulta la documentazione relativa alla destinazione BigQuery.

Tipi unificati Datastream

Digita nome Informazioni Definizione di Avro Definizione JSON
BOOLEAN boolean boolean boolean
BYTES Una sequenza di byte non firmati byte string
DATE Giorni dall'epoca Un tipo logico di data stringa [ISO-8601]
DATETIME La data (in giorni dall'epoca) e l'ora (in microsecondi dalla mezzanotte)

Un tipo personalizzato


{
  "type": "record",
  "name": "datetime",
  "fields": [
    {"name": "date",
     "type": "int",
     "logicalType": "date"},
    {"name": "time",
     "type": "long",
     "logicalType": "time-micros"}
  ]
}
    
stringa [ISO-8601]
DECIMAL (p,s) Un numero decimale firmato con precisione arbitraria Un tipo logico decimale number
DOUBLE Numeri in virgola mobile a 64 bit double number
FLOAT Numeri in virgola mobile a 32 bit float number
INTEGER Un numero intero a 32 bit int number
INTERVAL Durata tra due eventi (in mesi, ore e microsecondi)

Un tipo personalizzato


{
  "type": "record",
  "name": "interval",
  "fields": [
    {"name": "months",
     "type": "int"}
    {"name": "hours",
     "type": "int"},
    {"name": "micros",
     "type": "long"}
  ]
}
    
stringa [ISO-8601]
JSON Un oggetto JSON

Un tipo logico personalizzato


{
  "type": "string",
  "logicalType": "json"
}
JSON nidificato
LONG Un numero intero a 64 bit lunghi number
NUMBER Un tipo di dati numerici

Un tipo logico personalizzato


{
  "type": "string",
  "logicalType": "number"
}
string
STRING Una lunghezza della stringa illimitata string string
TIME Quanti microsecondi sono trascorsi dalla mezzanotte, indipendentemente dal fuso orario. Un tipo logico in micro-tempi. stringa [ISO-8601]
TIME_INTERVAL Quanti microsecondi sono trascorsi tra due eventi

Un tipo logico personalizzato


{
  "type": "long",
  "logicalType": "time-interval-micros"
}
lunghi
TIMESTAMP Quanti microsecondi sono trascorsi dall'epoca, indipendentemente dal fuso orario Un tipo logico di timestamp stringa [ISO-8601]
TIMESTAMP WITH TIME ZONE Quanti microsecondi sono trascorsi dall'epoca con un fuso orario specifico in millisecondi

Un tipo personalizzato


{
  "type": "record",
  "name": "timestampTz",
  "fields": [
    {"name": "timestamp",
     "type": "long"
     "logicalType": "timestamp-micros"},
    {"name": "offset",
     "type": "int"
     "logicalType": "time-millis"}
  ]
}
    
stringa [ISO-8601]
TIME WITH TIME ZONE Quanti microsecondi sono trascorsi dalla mezzanotte con uno scarto di fuso orario specifico

Un tipo personalizzato


{
  "type": "record",
  "name": "timeTz",
  "fields": [
    {"name": "time",
     "type": "long"
     "logicalType": "time-micros"},
    {"name": "offset",
     "type": "int",
     "logicalType": "time-millis"}
  ]
}
    
stringa [ISO-8601]
UNION Un tipo di dati variabile Union array
UNSUPPORTED Un tipo di dati non supportato

Un tipo logico personalizzato


{
  "type": "null",
  "logicalType": "unsupported"
}
null
VARCHAR Una stringa con una lunghezza massima di n caratteri

Un tipo logico personalizzato


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

Mappa i tipi di dati Oracle ai tipi unificati Datastream

Tipo di dati Oracle Tipo di Dataflow unificato
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, allora LONG. Se p>18 o p=*, allora NUMBER.

NUMBER(p,s>0)

Se p=*, DECIMAL(38,s), altrimenti 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 definito dall'utente) UNSUPPORTED
UROWID UNSUPPORTED
VARCHAR VARCHAR
VARCHAR2 VARCHAR
XMLTYPE UNSUPPORTED

Mappa i tipi di dati MySQL ai tipi unificati Datastream

Tipo di dati MySQL Tipo di Dataflow unificato
BIGINT(size) Se firmato, poi LONG, se non firmato, DECIMAL
BINARY(size) STRING (hex encoded)
BIT(size) LONG
BLOB(size) STRING (hex encoded)
BOOL INTEGER
CHAR(size) STRING
DATE Se la destinazione è BigQuery, DATE se Cloud Storage è 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
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

Mappare i tipi di dati PostgreSQL ai tipi unificati di Datastream

Tipo di dati PostgreSQL Tipo di Dataflow unificato
ARRAY JSON
BIGINT LONG
BIT BYTES
BIT_VARYING BYTES
BOOLEAN BOOLEAN
BOX UNSUPPORTED
BYTEA BYTES
CHARACTER
  • Se esiste un limite di lunghezza, mappa a VARCHAR
  • In caso contrario, mappa a STRING
CHARACTER_VARYING
  • Se esiste un limite di lunghezza, mappa a VARCHAR
  • In caso contrario, mappa 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
  • Se precisione = -1 e scala = -1, mappa a NUMBER
  • In caso contrario, mappa 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

Mappa i tipi di dati SQL Server ai tipi unificati Datastream

Tipo di dati SQL Server Tipo di Dataflow unificato
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