您可能需要将 BigQuery 表划分为较小的段,以提高查询性能并控制费用。由于 Datastream 不支持在 BigQuery 中对表进行分区,因此您需要在启动数据流之前手动添加分区。如需大致了解 BigQuery 中的分区,请参阅分区表简介。
对 BigQuery 中的表进行分区
如需在 BigQuery 中对表进行分区,请根据您的使用情形,使用下文各部分中所述的选项之一。
选项 1:相应表已存在于 BigQuery 中,并包含在某个数据流中
- 从数据流的来源配置中排除相应表。如需详细了解如何在源配置中包含和排除对象,请参阅配置源数据库。
- 等待几分钟,确保 Datastream 已完成对该表的所有事件的处理。
- 在 BigQuery 中创建分区表。 如果您想保留原始 BigQuery 表中已有的数据,请为该表指定其他临时名称。
- 将原始表中的数据复制到新的分区表中。
- 删除或重命名原始表。
- 将新表的临时名称更改为原始表的名称。
- 将源表添加到流的配置中。
方案 2:BigQuery 中不存在相应表
使用以下方法之一在 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)
创建分区表后,请确保其
max_staleness值已根据您的要求进行设置。如果您未设置值,则系统会设置默认值0。将此值设为0可确保获得最新鲜的数据,但会产生高昂的费用。如需了解如何为表找到最佳值,请参阅将 BigQuery 表与max_staleness选项搭配使用。(可选)如果您已为数据流设置手动回填,请为表启动回填。