使用 Datastream 将数据注入到 BigQuery 中的分区表中

您可能需要将 BigQuery 表分区为较小的片段,以提高查询性能并控制费用。由于 Datastream 不支持在 BigQuery 中对表进行分区,因此您需要先手动添加分区,然后才能启动数据流。如需了解 BigQuery 中分区的一般信息,请参阅分区表简介

在 BigQuery 中对表进行分区

如需在 BigQuery 中对表进行分区,请根据您的用例使用下文中介绍的任一选项。

选项 1:表已在 BigQuery 中存在,并包含在数据流中

  1. 从数据流的来源配置中排除该表。如需详细了解如何在源配置中包含和排除对象,请参阅配置源数据库
  2. 请等待几分钟,以确保 Datastream 已完成处理表的所有事件。
  3. 在 BigQuery 中创建分区表。 如果您想保留原始 BigQuery 表中已有的数据,请为该表指定其他临时名称。
  4. 将数据从原始表复制到新的分区表。
  5. 删除或重命名原始表。
  6. 将新表的临时名称更改为原始表的名称。
  7. 将源表添加到数据流的配置中。

方案 2:BigQuery 中不存在该表

  1. 使用以下任一方法在 BigQuery 中创建表:

    • 使用 BigQuery Migration Toolkit
    • 手动创建与 Datastream 兼容的 BigQuery 表。例如,如果您想创建表并基于 TIMESTAMP 列对数据进行分区,可以使用类似于以下内容的查询:

      CREATE TABLE dataset.partitioned_table (
      'id' INT64,
      'name' STRING
      'update_date' DATETIME,
      'datastream_metadata' STRUCT<'uuid' STRING, 'source_timestamp' INT64>,
      PRIMARY KEY ('id') NOT ENFORCED
      )
      PARTITION BY TIMESTAMP(update_date)
      
  2. 创建分区表后,请确保其 max_staleness 值已根据您的要求设置。如果您未设置该值,系统会设置默认值 0。如需了解详情,请参阅结合使用 BigQuery 表和 max_staleness 选项

  3. 将源表添加到数据流的配置中

  4. (可选)如果您已为数据流设置手动回填,请为表启动回填。