我在 BigQuery 中有一个基于月(月开始日期(列分区的表,我可以观察到,当我尝试根据另一列last_updated(日期(列过滤记录并且不指定分区发生的列月份时,BigQuery 只获取last_updated范围所在的分区的记录
- 如果我们基于类似列进行过滤,是否必须使用分区列?
架构:名称、状态、last_updated、月、季度、年。 表按月列分区,包含 11 条记录,其中 5 条记录用于 6 月。 我可以在执行详细信息中看到输入行被选为 5 并输出为 1
SELECT
*
FROM
<dataset>.test_part
WHERE last_updated = '2020-06-16
即使没有明确提到月份列,也正在选择分区
创建分区表时,会将其划分为不同的段(称为分区(,以便更轻松地管理数据,因为当您使用分区列查询数据时,您只需要检查该分区,而不需要检查其他分区。但是,如果在 where 子句中使用另一列,则不能保证 dremel 处理的数据比在 where 子句中使用分区列的数据多。
您可以参考此文档以更好地了解其工作原理 [1]。
[1] https://cloud.google.com/bigquery/docs/partitioned-tables