【发布时间】:2020-10-12 03:08:22
【问题描述】:
大家好:我想了解分区表是如何工作的。我有一个大小为 12.9MB 的销售表。我有一个按天分区的日期列。我的假设是,当我使用此日期列过滤数据表时,BigQuery 处理的数据量将得到优化。但是,它似乎并没有那样工作,我想了解原因。 在下面的查询中,我使用子查询过滤 sales.date。当我尝试这样执行查询时,它正在处理 12.9 MB 的整个表。
但是,如果我将下面的子查询替换为实际日期(与子查询的结果相同),则处理的数据量为 4.9 MB。
子查询单独处理 630 KB 的数据。如果我的理解是正确的,下面给出的查询过程不应该是 4.9 MB + 630 KB = ~ 5.6 MB 吗?但是,它仍然处理 12.9 MB。有人能解释一下这里发生了什么吗?
SELECT
sales.*,
FROM `my-project.transaction_data.sales_table` sales
WHERE DATE(sales.date) >= DATE_SUB(DATE((select max(temp.date) FROM ` my-project.transaction_data.sales_table ` temp)), INTERVAL 2 YEAR)
ORDER BY sales.customer, sales.date
【问题讨论】:
标签: google-bigquery partitioning