本页面简要介绍了 BigQuery 目标平台。本文介绍了将数据复制到 BigQuery 时,Datastream 的写入行为和已知限制。
写入行为
将数据流式传输到 BigQuery 时,事件的最大大小为 20 MB。
配置数据流时,您可以选择 Datastream 将更改数据写入 BigQuery 的方式。如需了解详情,请参阅配置写入模式。
表元数据
Datastream 会向写入 BigQuery 目标平台的每个表中附加一个名为 datastream_metadata
的 STRUCT
列。
合并写入模式
如果表在来源处具有主键,则该列包含以下字段:
UUID
:此字段的数据类型为STRING
。SOURCE_TIMESTAMP
:此字段的数据类型为INTEGER
。
如果表没有主键,则该列包含一个额外的字段:IS_DELETED
。此字段的数据类型为 BOOLEAN
,用于指示 Datastream 流式传输到目标位置的数据是否与源中的 DELETE
操作相关联。没有主键的表是仅附加的。
仅附加写入模式
datastream_metadata
列包含具有主键和不具有主键的表的相同字段:
UUID
:此字段的数据类型为STRING
。SOURCE_TIMESTAMP
:此字段的数据类型为INTEGER
。CHANGE_SEQUENCE_NUMBER
:此字段的数据类型为STRING
。这是 Datastream 为每个变更事件使用的内部序列号。CHANGE_TYPE
:此字段的数据类型为STRING
。它表示更改事件的类型:INSERT
、UPDATE-INSERT
、UPDATE-DELETE
或DELETE
。SORT_KEYS
:此字段包含一个STRING
值数组。您可以使用这些值对更改事件进行排序。
控制 BigQuery 费用
BigQuery 费用与 Datastream 费用分开收取。如需了解如何控制 BigQuery 费用,请参阅 BigQuery CDC 价格。
已知限制
将 BigQuery 用作目标位置的已知限制包括:
- 您只能将数据复制到与 Datastream 流位于同一 Google Cloud 项目中的 BigQuery 数据集。
- 默认情况下,Datastream 不支持向已复制到 BigQuery 且没有主键的表添加主键,也不支持从已复制到 BigQuery 且有主键的表中移除主键。如果您需要进行此类更改,请与 Google 支持团队联系。如需了解如何更改已具有主键的源表的主键定义,请参阅诊断问题。
BigQuery 中的主键必须采用以下数据类型:
DATE
BOOL
GEOGRAPHY
INT64
NUMERIC
BIGNUMERIC
STRING
TIMESTAMP
DATETIME
包含不受支持的数据类型的主键的表不会被 Datastream 复制。
BigQuery 不支持包含
.
、$
、/
、@
或+
字符的表名。Datastream 在创建目标表时会将此类字符替换为下划线。例如,源数据库中的
table.name
在 BigQuery 中会变为table_name
。如需详细了解 BigQuery 中的表名称,请参阅表命名。
BigQuery 不支持超过 4 个聚簇列。复制主键列超过 4 列的表时,Datastream 会使用 4 个主键列作为聚簇列。
Datastream 会将超出范围的日期和时间字面量(例如 PostgreSQL 无限日期类型)映射到以下值:
- 正值:
DATE
到9999-12-31
- 将负
DATE
更改为0001-01-01
的值 - 正值:
TIMESTAMP
到9999-12-31 23:59:59.999000 UTC
- 将负
TIMESTAMP
更改为0001-01-01 00:00:00 UTC
的值
- 正值:
BigQuery 不支持主键数据类型为
FLOAT
或REAL
的流式表。此类表不会被复制。 如需详细了解 BigQuery 日期类型和范围,请参阅数据类型。如果您的数据源是 Salesforce,则不支持每个架构的数据集配置选项。