BigQuery:加入集群字段
Posted
技术标签:
【中文标题】BigQuery:加入集群字段【英文标题】:BigQuery: join on clusters fields 【发布时间】:2021-05-31 01:02:14 【问题描述】:我正在尝试通过使用聚簇表来优化我们的 BigQuery 模型。
我正在测试这些场景:
-
聚簇表连接聚簇表(通过簇字段连接)
非聚簇表联接 非聚簇表(通过与方案 1 相同的字段联接)
不应用任何 where 条件场景 1 和 2 具有相同的成本(处理的时间和字节数)。 当我通过集群字段 1 应用条件时,速度快 4 倍且成本更低。
只有在查询中使用条件时,聚集字段才有用?而不是加入? 在这种情况下,如果我在没有任何条件的情况下执行连接,无论有没有集群,性能都是一样的
如何改进 BigQuery 中两个表之间的联接?
编辑 2021-05-31
添加两个作业的查询执行计划:
Clustered
Non-clustered
【问题讨论】:
看看这两个作业的查询执行计划(带有/o 聚集字段)会很有帮助。这可以解释为什么性能没有提升。一个问题:加入时,你是否保持相同的聚集字段顺序?另外,需要加入全表吗?因为如果先过滤再JOIN,可以提高性能和成本。 Alvaro,我用两个执行计划更新了帖子。关于加入全表的需要:我正在测试如何执行一个典型的查询,所以对于这个测试是必要的。 【参考方案1】:来自docs,我想说的是,当您在加入期间使用另一列进行比较时,集群将被简单地忽略。
现在,为了优化连接,您可以尝试在连接之前减少数据。例如,尝试过滤表,或预先聚合它们以尽可能多地减少数据。最后,还要注意连接上表的顺序。从大到小排序。
【讨论】:
以上是关于BigQuery:加入集群字段的主要内容,如果未能解决你的问题,请参考以下文章