首页 > 解决方案 > 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”。

为什么在这两种情况下处理的数据(和计费:))存在差异?

标签: google-bigquery

解决方案


当您在 BigQuery 中创建分区表时,您的费用取决于分区中存储的数据量以及您对数据运行的查询 [1]。许多分区表操作是免费的_PARTITIONTIME[2]。处理后的数据没有区别,只是两个表中的数据可能不同,因为在时间单位分区表中,分区是基于表中的TIMESTAMPDATEDATETIME的。另一方面,提取时间表根据 BigQuery 提取数据时的时间戳进行分区。

[1] https://cloud.google.com/bigquery/docs/partitioned-tables#pricing

[2] https://cloud.google.com/bigquery/pricing#free


推荐阅读