google-bigquery - 删除数据时未使用 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
解决方案
从文档中:
需要评估查询的多个阶段以解析谓词(例如内部查询或子查询)的复杂查询不会从查询中删除分区。
...
以下查询不修剪分区(注意子查询的使用):
#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)
目前,您需要评估您单独提供的查询。
推荐阅读
- python-3.x - 为什么我们用它来处理最小值
- google-bigquery - BigQuery - 联合数据集中的所有表
- sql-server - 如何根据条件订购?SQL 服务器
- akka - 路由 Akka 演员的孩子的路径
- c++ - Aws::S3::S3Client 构造函数非常慢
- swift - 在 Mac Catalyst 应用程序中,如何设置可拖动区域以在屏幕上移动窗口?
- postgresql - 与从视图的脚本中选择相比,从视图中选择会更改行的顺序
- sql - SQL Server 在以前可以工作的选择上返回错误
- jmeter - 清理脚本期间创建的数据
- amazon-s3 - Redshift COPY 命令如何处理来自 S3 的特殊字符