Bigquery:UNNEST 重复与展平表性能

Posted

技术标签:

【中文标题】Bigquery:UNNEST 重复与展平表性能【英文标题】:Bigquery: UNNEST repeated vs flatten table performance 【发布时间】:2021-05-24 15:58:33 【问题描述】:

我正在使用带有字段数组的 sturct 记录类型的嵌套表。 最重要的是,我使用了一个视图,但是要在视图中引用一个特定的字段,我需要先取消表格的嵌套,这再次使结果变胖。

那么已经将数据存储为扁平格式或使用嵌套表并在视图中使用非嵌套是明智的吗?两种方式我都得到相同的输出。

【问题讨论】:

在视图中取消嵌套没有问题。如果您的数据自然适合嵌套格式,请使用它。 每次阅读都会影响性能吗? 性能测试,敬请期待 两种情况下的结果是否相似?谢谢 【参考方案1】:

如果您以展平格式存储数据,那么展平表格的大小将比原表格更大,因为在原表格中不重复的列中重复数据。更大的表会导致更高的存储和查询成本。

但这在很大程度上取决于非重复列的大小以及您将使用的特定查询。

您可以尝试这两种变体,看看在使用您的特定查询进行查询时,哪一种会处理更少的 GB。也可以看看Execution details(查询计划)。

【讨论】:

是的,这是一回事,但由于 Bigquery 提供了更便宜的存储费率,我对此并不担心,从更多方面来看这是一种更好的方法,我也在检查性能和字节处理。会回复我的观察结果

以上是关于Bigquery:UNNEST 重复与展平表性能的主要内容,如果未能解决你的问题,请参考以下文章

访问 BigQuery RECORD - 在 Tableau 中重复

BigQuery 中记录类型与展平表的查询性能

BigQuery UNNEST 重复值

如何在 BigQuery SQL 中使用 UNNEST 和 SPLIT 避免重复?

在 BigQuery 中展平嵌套层次结构

在 BIGQUERY 上使用 UNNEST 左连接