使用 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。将此值设为 0 可确保获得最新鲜的数据,但会产生高昂的费用。如需了解如何为表找到最佳值,请参阅将 BigQuery 表与 max_staleness 选项搭配使用

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

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