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

use*_*770 5 google-bigquery

我有一个包含“订单”和“订单行”的表,它们以 JSON 形式出现,并且将其以 JSON 形式存储在BigQuery中很简单。我可以运行一个进程将文件扁平化为行,但这是一种负担,并且会使 BigQUery 表更大。

BigQuery 的最佳性能结构是什么?假设我对订单行中的总和或产品以及销售额有疑问。

记录列中“记录”(或“订单行”)数量的最佳实践是什么?它可以容纳数千人还是只针对少数人?假设我会像在基于MongoDB文档的数据库中一样查询它。

这将帮助我规划正确的架构。

Mic*_*hri 3

BigQuery 的列式架构旨在以高性能方式处理嵌套和重复字段,并且通常可以像平展这些记录一样快速返回查询结果。事实上,在某些情况下(取决于您的数据和正在运行的查询类型)使用已经嵌套的记录实际上可以让您避免增加额外步骤的子查询。

简短的回答:不要担心扁平化,将数据保留在嵌套结构中,无论哪种方式,查询性能通常都是相同的。

但是,关于您的第二个问题:您的记录限制将取决于您可以在单个记录中存储多少数据。目前 BigQuery每行的最大值为 100MB。一条记录中可以有很多很多重复字段,但它们需要符合此限制。