Merge BigQuery合并-查询的大小随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语句时,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 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工程部门能够正确检查问题