google-bigquery - 如果我们在 BigQuery 中使用具有相同分区类型(天)的另一个列进行过滤,那么 where 子句中的分区列是否不是必需的?
问题描述
我在 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
推荐阅读
- c# - 从日期列表中查找最小日期值
- node.js - Jest not showing errors that are thrown
- botframework - 如何创建处理来自应用程序的所有对话框的机器人对象的多个实例
- docker - 在 docker 内构建包后,纱线冻结
- excel - VBA复制链接到列中某个关键字的单元格
- git - TFS CI 构建触发器未触发 SVN 存储库
- angular - NgRx 自定义序列化程序的问题 - 类型错误
- laravel - 在 Laravel Eloquent 中的相同模型中具有不同的关系
- android - FFmpeg 错误:无法为“”找到合适的输出格式
- javascript - 如何检测类名的元素是父级/高于所有其他类名?