BigQuery查询自定义分区字段与_PARTITIONTIME处理计费差异原因
BigQuery两类分区表查询数据量差异原因
- 内置摄入时间分区的
_PARTITIONTIME属于系统维护的伪列,不属于用户实际存储的表数据,取值直接存放在表的分区元数据中。仅查询该字段时,BigQuery仅需要读取元数据信息,无需扫描任何用户存储的实际数据,因此统计的处理数据量为0B,不会产生查询计费。 - 基于自定义Schema字段分区的表,用作分区键的
my_partition_field本身是用户存储的表数据的一部分,分区规则仅用来做数据的物理划分,字段内容还是和普通字段一样存储在数据块中。查询该字段时需要扫描对应数据块的实际存储内容,因此会产生和该字段未作为分区键时一致的扫描数据量,按该数据量计费。
补充说明:如果自定义分区字段的查询携带了分区过滤条件,只会扫描符合条件的分区内的该字段数据,相比无过滤的全表查询可以减少扫描量,这也是分区表的核心收益之一。
内容的提问来源于stack exchange,提问作者Nakeuh
相关产品推荐
相关产品推荐

