BigQuery:在自定义分区字段上运行 Select 时处理的数据
Posted
技术标签:
【中文标题】BigQuery:在自定义分区字段上运行 Select 时处理的数据【英文标题】:BigQuery : Data processed when running Select on Custom Partitioning Field 【发布时间】:2021-10-27 13:39:32 【问题描述】:我有一个使用架构中的时间戳字段my_partition_field
(而不是摄取时间_PARTITIONTIME
)按天分区的表
当我执行以下查询时:
SELECT my_partition_field FROM MY_TABLE;
BigQuery 告诉我“此查询在运行时将处理 XX MB”。处理的数据量与该字段不是分区字段时相同。
但是,如果我有按摄取时间分区的同一个表并运行以下查询:
SELECT _PARTITIONTIME FROM MY_TABLE_2;
BigQuery 告诉我 “此查询在运行时将处理 0 B。”
为什么这两种情况处理的数据(和计费:))存在差异?
【问题讨论】:
【参考方案1】:当您在 BigQuery 中创建分区表时,您的费用取决于分区中存储的数据量以及您针对数据运行的查询[1]。许多分区表操作是免费的,_PARTITIONTIME
[2] 也是如此。处理后的数据没有区别,只是两个表中的数据可能不同,因为在时间单位分区表中,分区是基于TIMESTAMP
、DATE
或DATETIME
列桌子。另一方面,提取时间表根据 BigQuery 提取数据时的时间戳进行分区。
[1]https://cloud.google.com/bigquery/docs/partitioned-tables#pricing
[2]https://cloud.google.com/bigquery/pricing#free
【讨论】:
以上是关于BigQuery:在自定义分区字段上运行 Select 时处理的数据的主要内容,如果未能解决你的问题,请参考以下文章
如果标准 SQL 不提供 _PARTITIONTIME 字段,我如何在 BigQuery 中查询流缓冲区
尚不支持 BigQuery、非分区表上的通配符表和基于字段的分区表