將統一類型對應至來源和目的地資料類型

一致類型是指在 Avro 或 JSON 事件中顯示的資料類型。這是 Datastream 專用的資料類型統一表示法,適用於 Datastream 支援的多個資料來源和目的地。

統一類型是所有支援來源類型的所有類型表示法的超集,以通用但無損的方式表示原始來源類型。

下表列出:

  • 與 Datastream 相關聯的統一類型
  • Oracle、MySQL、SQL Server、PostgreSQL 和 Salesforce (預先發布版) 資料類型與 Datastream 統一類型之間的對應關係

如要瞭解不同來源和 BigQuery 之間的資料類型對應關係,請參閱 BigQuery 目的地說明文件

Datastream 統一類型

類型名稱 資訊 Avro 定義 JSON 定義
BOOLEAN 布林值 布林值 布林值
BYTES 一串未簽署的位元組 位元組 字串
DATE 自紀元以來的天數 日期邏輯類型 string [ISO-8601]
DATETIME 日期 (自紀元時間起算的日期天數) 和時間 (自午夜起算的微秒數)

自訂類型

{
  "type": "record",
  "name": "datetime",
  "fields": [
    {"name": "date",
     "type": "int",
     "logicalType": "date"},
    {"name": "time",
     "type": "long",
     "logicalType": "time-micros"}
  ]
}
    
string [ISO-8601]
DECIMAL (p,s) 任意精度的帶正負號小數 Decimal 邏輯類型 數字
DOUBLE 64 位元浮點數 雙精度值 數字
FLOAT 32 位元浮點數 浮點數 數字
INTEGER 32 位元整數 整數 數字
INTERVAL 兩個事件之間的時間長度 (以月、小時和微秒為單位)

自訂類型

{
  "type": "record",
  "name": "interval",
  "fields": [
    {"name": "months",
     "type": "int"}
    {"name": "hours",
     "type": "int"},
    {"name": "micros",
     "type": "long"}
  ]
}
    
string [ISO-8601]
JSON JSON 物件

自訂邏輯類型

{
  "type": "string",
  "logicalType": "json"
}
巢狀 JSON
LONG 64 位元整數 long 數字
NUMBER 數值資料類型

自訂邏輯類型

{
  "type": "string",
  "logicalType": "number"
}
字串
STRING 字串長度不受限制 字串 字串
TIME 自午夜起經過的微秒數 (不限時區)。 時間微秒邏輯類型 string [ISO-8601]
TIME_INTERVAL 兩個事件之間的微秒間隔

自訂邏輯類型

{
  "type": "long",
  "logicalType": "time-interval-micros"
}
long
TIMESTAMP 自紀元起算,不論時區為何,經過多少微秒 時間戳記邏輯類型 string [ISO-8601]
TIMESTAMP WITH TIME ZONE 自 Epoch 起經過多少微秒,以特定時區偏移量 (以毫秒為單位) 為單位

自訂類型

{
  "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 自午夜起算,經過多少微秒,並以特定時區偏移值為準

自訂類型

{
  "type": "record",
  "name": "timeTz",
  "fields": [
    {"name": "time",
     "type": "long"
     "logicalType": "time-micros"},
    {"name": "offset",
     "type": "int",
     "logicalType": "time-millis"}
  ]
}
    
string [ISO-8601]
UNION 變化資料類型 Union 陣列
UNSUPPORTED 不支援的資料類型

自訂邏輯類型

{
  "type": "null",
  "logicalType": "unsupported"
}
null
VARCHAR 長度上限為 n 個字元的字串

自訂邏輯類型

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

將 Oracle 資料類型對應至 Datastream 統一類型

Oracle 資料類型 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)

如果 p<=18,則為 LONG。如果 p>18 或 p=*,則 NUMBER

NUMBER(p,s>0)

如果 p=*,則為 DECIMAL(38,s),否則為 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 (使用者定義的類型) UNSUPPORTED
UROWID UNSUPPORTED
VARCHAR VARCHAR
VARCHAR2 VARCHAR
XMLTYPE UNSUPPORTED

將 MySQL 資料類型對應至 Datastream 統一類型

MySQL 資料類型 Datastream 統一類型
BIGINT(size) SIGNED LONG
BIGINT(size) UNSIGNED 如果目的地是 BigQuery,則為 DECIMAL;如果是 Cloud Storage,則為 NUMBER
BINARY(size) STRING (hex encoded)
BIT(size) LONG
BLOB(size) STRING (hex encoded)
BOOL INTEGER
CHAR(size) STRING
DATE 如果目的地是 BigQuery,則為 DATE;如果是 Cloud Storage,則為 TIMESTAMP
DATETIME(fsp) 如果目的地是 BigQuery,則為 DATETIME;如果是 Cloud Storage,則為 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 如果目的地是 BigQuery,則為 JSON;如果是 Cloud Storage,則為 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) 如果目的地是 BigQuery,則為 INTERVAL;如果是 Cloud Storage,則為 TIME_INTERVAL
TIMESTAMP(fsp) TIMESTAMP
TINYBLOB STRING (hex encoded)
TINYINT(size) INTEGER
TINYTEXT STRING
VARBINARY(size) STRING (hex encoded)
VARCHAR STRING
YEAR INTEGER

將 PostgreSQL 資料類型對應至 Datastream 統一類型

PostgreSQL 資料類型 Datastream 統一類型
ARRAY JSON
BIGINT LONG
BIT BYTES
BIT_VARYING BYTES
BOOLEAN BOOLEAN
BOX UNSUPPORTED
BYTEA BYTES
CHARACTER
  • 如果長度有限制,請對應至 VARCHAR
  • 否則,請對應至 STRING
CHARACTER_VARYING
  • 如果長度有限制,請對應至 VARCHAR
  • 否則,請對應至 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
  • 如果精確度 = -1 且比例 = -1,則對應至 NUMBER
  • 否則,請對應至 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
XID STRING
XID8 STRING
XML STRING

將 SQL Server 資料類型對應至 Datastream 統一類型

SQL Server 資料類型 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
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

將 Salesforce 資料類型對應至 Datastream 統一類型

Salesforce 支援兩種資料類型:

原始資料類型對應

Salesforce 資料類型 Datastream 統一類型
BOOLEAN BOOLEAN
BYTE BYTES
DATE 如果目的地是 BigQuery,則為 DATE;如果是 Cloud Storage,則為 TIMESTAMP
DATETIME 如果目的地是 BigQuery,則為 DATETIME;如果是 Cloud Storage,則為 TIMESTAMP
DOUBLE DOUBLE
INT INTEGER
STRING STRING
TIME TIME

欄位資料類型對應

Salesforce 資料類型 Datastream 統一類型
ADDRESS 這個複合欄位的子欄位會與其各自的資料類型一起複製
ANYTYPE

(可以是 STRINGDATENUMBERBOOLEAN)

STRING
COMBOBOX STRING
CURRENCY DOUBLE
DATACATEGORYGROUPREFERENCE STRING
EMAIL STRING
ENCRYPTEDSTRING STRING
GEOLOCATION 這個複合欄位的子欄位會與其各自的資料類型一起複製
ID STRING
JUNCTIONIDLIST STRING
MASTERRECORD STRING
MULTIPICKLIST STRING
PERCENT DOUBLE
PHONE STRING
PICKLIST STRING
REFERENCE STRING
TEXTAREA STRING
URL STRING

MongoDB 資料類型

每個 MongoDB 文件都會以 Datastream 中的 JSON 統一類型寫入。如需資料類型在 BigQuery 中寫入方式的範例,請參閱「設定 BigQuery 目的地」。

後續步驟