google-bigquery - BigQuery:在自定义分区字段上运行 Select 时处理的数据
问题描述
my_partition_field
我有一个使用架构中的 Timestamp 字段(而不是摄取时间_PARTITIONTIME
)按天分区的表
当我执行以下查询时:
SELECT my_partition_field FROM MY_TABLE;
BigQuery 告诉我"This query will process XX MB when run"。处理的数据量与该字段不是分区字段相同。
但是,如果我有按摄取时间分区的同一个表并运行以下查询:
SELECT _PARTITIONTIME FROM MY_TABLE_2;
BigQuery 告诉我“此查询在运行时将处理 0 B”。
为什么在这两种情况下处理的数据(和计费:))存在差异?
解决方案
当您在 BigQuery 中创建分区表时,您的费用取决于分区中存储的数据量以及您对数据运行的查询 [1]。许多分区表操作是免费的_PARTITIONTIME
[2]。处理后的数据没有区别,只是两个表中的数据可能不同,因为在时间单位分区表中,分区是基于表中的TIMESTAMP
或DATE
列DATETIME
的。另一方面,提取时间表根据 BigQuery 提取数据时的时间戳进行分区。
[1] https://cloud.google.com/bigquery/docs/partitioned-tables#pricing
推荐阅读
- javascript - 我们应该如何处理 WebApp 中的事件?许多事件处理程序与一个
- http-headers - Content-Type 多部分标头中的“通过电子邮件网关非常强大”是什么意思?
- python - 如何删除 ValueError:值的长度(55)与 python 中的索引长度(100)不匹配?
- r - 为什么我收到错误为“mapIds(GeneCol)中的错误:找不到函数“mapIds””
- node.js - JSON 响应不包含字段值
- python - 访问当前用户位置并显示其附近的所有用户
- python - 如何将带有整数的字符串拆分为两个变量?
- firebase - Firebase AUTH - 超出限制功能结果
- excel - 使用excel vba进行多个网页归档
- google-apps-script - 谷歌脚本定时计划扫描列的值,然后发送 webhook