BigQuery 表如何与分区和集群字段一起使用?

Posted

技术标签:

【中文标题】BigQuery 表如何与分区和集群字段一起使用?【英文标题】:How does BigQuery table works with Partition and Cluster field? 【发布时间】:2019-04-10 06:33:19 【问题描述】:

当指定TIMESTAMP 列作为分区时 - 数据保存在磁盘上的分区允许每次访问。

现在,BigQuery 还允许定义多达 4 个列作为集群字段。

如果我理解正确,分区就像PK,集群字段就像indexes

所以这意味着集群字段与记录如何保存在磁盘上无关?

【问题讨论】:

查看这个answer,它为这个主题提供了一个很好的答案。还有this@Felipe 的中等帖子非常好 @TamirKlein 它没有。它讨论了无论分区字段如何的聚类字段。 【参考方案1】:

如果我得到正确的分区就像PK

这是不正确的,分区不用于标识表中的行,而是启用 BigQuery 将每个分区数据存储在不同的段中,因此当您按分区扫描表时,您只扫描指定的分区,从而减少扫描费用

簇字段就像索引

这是正确的集群字段用作指向表中记录的指针,并且无论分区如何,都可以快速/最低成本地访问数据。这意味着使用集群字段可以以最低的成本查询表跨分区

我喜欢来自his medium post 的@Felipe 图片,它可以很好地可视化数据的存储方式。

注意:分区发生在插入时,而集群作为 BigQuery 执行的后台作业发生

【讨论】:

以上是关于BigQuery 表如何与分区和集群字段一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

Bigquery 整数范围分区

BigQuery:加入集群字段

尚不支持 BigQuery、非分区表上的通配符表和基于字段的分区表

BigQuery 中的表视图是不是受益于分区/集群优化?

具有集群和分区的表上的 Bigquery SQL 性能问题

查询按分区字段分区的 BigQuery 表