Merge BigQuery合并-查询的大小随DELETE子句展开
在尝试MERGE语句时,BigQuery只扫描请求的分区,直到添加DELETE语句,此时它将恢复为扫描整个数据集(在本例中,从1GB扩展到>1TB) 有没有一种方法可以使用MERGE的全部功能,包括DELETE,而不产生额外的成本 与我的努力相匹配的通用示例如下:Merge BigQuery合并-查询的大小随DELETE子句展开,merge,google-bigquery,Merge,Google Bigquery,在尝试MERGE语句时,BigQuery只扫描请求的分区,直到添加DELETE语句,此时它将恢复为扫描整个数据集(在本例中,从1GB扩展到>1TB) 有没有一种方法可以使用MERGE的全部功能,包括DELETE,而不产生额外的成本 与我的努力相匹配的通用示例如下: MERGE target_table AS t *## All Dates, partitioned on activity_date* USING source_table AS s ## one date, only yest
MERGE target_table AS t *## All Dates, partitioned on
activity_date*
USING source_table AS s ## one date, only yesterday
ON t.field_a = s.field_a
AND t.activity_date >=
DATE_ADD(DATE(current_timestamp(),'America/Los_Angeles'), INTERVAL -1 DAY) ## use partition to limit to yesterday
WHEN MATCHED
THEN UPDATE SET
field_b = s.field_b
WHEN NOT MATCHED
THEN INSERT
(field_a, field_b)
VALUES
(field_a, field_b)
WHEN NOT MATCHED BY SOURCE
THEN DELETE
根据您提供的查询,它不会对整个数据集应用合并。查询运行后,应该分析数据集并检查其有效性,以确保查询仅在特定分区上运行 如果在进一步检查后,没有对数据集进行意外更改,那么所记录的1 TB数据可以简单地解释为BigQuery将该数据摄取到内存中,作为运行查询的辅助步骤 但是,为了确认这一点,建议在中提交一份带有BigQuery作业ID的票证,以便BigQuery工程部门能够正确检查问题