首页 > 解决方案 > 删除数据时未使用 Bigquery 分区

问题描述

我们的项目正在收取高额费用。看起来这样的命令没有使用分区。bigquery 有没有办法根据子查询的结果强制查询成为分区感知?

以下查询当前正在处理 TB 的数据。

    delete from tableName
    where QuoteDate >= cast((SELECT batch_date as start  from batch_table where  Batch_Status='Running') as timestamp)

处理 1TB 的数据。

理想情况下,这应该只处理数百 MB 的数据。

delete from TableName
    where
        QuoteDate >= '2018-11-01'

进程 ~100MB

标签: google-bigquery

解决方案


文档中

需要评估查询的多个阶段以解析谓词(例如内部查询或子查询)的复杂查询不会从查询中删除分区。

...

以下查询不修剪分区(注意子查询的使用):

#standardSQL
SELECT
  t1.name,
  t2.category
FROM
  table1 t1
INNER JOIN
  table2 t2
ON
  t1.id_field = t2.field2
WHERE
  t1.ts = (SELECT timestamp from table3 where key = 2)

目前,您需要评估您单独提供的查询。


推荐阅读