BigQuery 中记录类型与展平表的查询性能
Posted
技术标签:
【中文标题】BigQuery 中记录类型与展平表的查询性能【英文标题】:Query performance on record type vs flatten table in BigQuery 【发布时间】:2012-11-02 13:50:44 【问题描述】:我有一个带有“订单”的表格,以及以 JSON 形式提供的“订单行”,将其作为 JSON 存储在 BigQuery 中很简单。我可以运行一个进程将文件展平为行,但这是一种负担,并且会使 BigQUery 表变大。
BigQuery 的最佳性能结构是什么?假设我对总和或产品以及订单行中的销售有疑问。
记录列中“记录”(或“订单行”)数量的最佳做法是什么?它可以包含数千个还是针对少数几个?假设我会像在基于 MongoDB 文档的数据库中一样查询它。
这将帮助我规划正确的架构。
【问题讨论】:
【参考方案1】:BigQuery 的列式架构旨在以高性能方式处理嵌套和重复的字段,并且通常可以尽可能快地返回查询结果,就像这些记录被展平时一样。事实上,在某些情况下,(取决于您的数据和您正在运行的查询类型)使用已经嵌套的记录实际上可以让您避免附加额外步骤的子查询。
简短回答:不要担心扁平化,将数据保持在嵌套结构中,无论哪种方式查询性能通常都是一样的。
但是,关于您的第二个问题:您的记录限制将取决于您可以在单个记录中存储多少数据。目前是 BigQuery 的per row maximum is 100MB。一条记录中可以有很多很多重复的字段,但它们需要符合这个限制。
【讨论】:
以上是关于BigQuery 中记录类型与展平表的查询性能的主要内容,如果未能解决你的问题,请参考以下文章
访问 BigQuery RECORD - 在 Tableau 中重复
从BigQuery数据查询中查询名为chartio的BI工具时的最大数据大小是多少?