BigQuery 目标位置

本页面简要介绍了 BigQuery 目标平台。本文介绍了将数据复制到 BigQuery 时,Datastream 的写入行为和已知限制。

写入行为

  • 将数据流式传输到 BigQuery 时,事件的最大大小为 20 MB。

  • 配置数据流时,您可以选择 Datastream 将更改数据写入 BigQuery 的方式。如需了解详情,请参阅配置写入模式

表元数据

Datastream 会向写入 BigQuery 目标平台的每个表中附加一个名为 datastream_metadataSTRUCT 列。

合并写入模式

如果表在来源处具有主键,则该列包含以下字段:

  • 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。它表示更改事件的类型:INSERTUPDATE-INSERTUPDATE-DELETEDELETE
  • 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 无限日期类型)映射到以下值:

    • 正值:DATE9999-12-31
    • 将负 DATE 更改为 0001-01-01 的值
    • 正值:TIMESTAMP9999-12-31 23:59:59.999000 UTC
    • 将负 TIMESTAMP 更改为 0001-01-01 00:00:00 UTC 的值
  • BigQuery 不支持主键数据类型为 FLOATREAL 的流式表。此类表不会被复制。 如需详细了解 BigQuery 日期类型和范围,请参阅数据类型

  • 如果您的数据源是 Salesforce,则不支持每个架构的数据集配置选项。

后续步骤