我正在使用bigquery计划查询功能来每30分钟运行一次查询。我的目标表将是一个分区表,而partionining列是'event_date'
我正在使用的计划查询将是从source_table -> Dest_table
复制今天的数据(例如select * from source_table where event_date = CURRENT_DATE()
)每30分钟但我希望它write_truncate现有分区,而不会写截断整个表。(因为我不想每30分钟重复一次今天的数据)
[当前,当我将partition_field
设置为event_date
和write_truncate
安排此查询时,它将截断整个表,这将导致先前的数据丢失。还有其他我想念的东西
代替指定目标表,您可以使用MERGE截断一个分区。
不幸的是,它更昂贵,因为您还需要从dest_table中删除数据。 (插入仍然免费)
MERGE dest_table t
USING source_table
ON FALSE
WHEN NOT MATCHED BY SOURCE AND event_date=CURRENT_DATE() THEN DELETE
WHEN NOT MATCHED BY TARGET THEN INSERT ROW