我们有不同维度的数据,例如:
我们正在考虑将这些存储在BigQuery中的最佳方式。一种可能的方法是将它们全部放在同一个表中,并嵌套额外的维度。
这意味着:
有缺点吗?是否有性能影响?在每个公司的行中嵌套5000个日期+相关值是否明智?
答案 0 :(得分:3)
在BigQuery模式中使用嵌套/重复列很常见,因为它可以更轻松地推理数据。例如,Firebase会在多个级别生成重复的模式。如果你压扁所有东西,那么缺点是你需要为每一行提供某种独特的ID以便将事件相互关联,然后你需要聚合(使用ID作为关键)而不是简单的过滤器,如果你想做任何计数。
至于嵌套/重复模式的缺点,一个是您可能会发现自己使用ARRAY
子查询或STRUCT
运算符执行结构的复杂变换。这些通常很快,但相对于查询而言,它们确实有一些开销,而根本没有对结果施加任何结构。
我最好的建议是加载一些数据并运行一些实验。存储和查询都相对便宜,因此您可以尝试一些不同的架构形状,看看哪种更适合您的用途。
答案 1 :(得分:-4)
在Bigquery中更新是一项新功能,但根据公开信息BigQuery DML,目前仅限每桌每天48次更新。
配额
DML语句的处理成本远高于SELECT 语句。
每个表每天的最大UPDATE / DELETE语句:48最大值 每个项目每天的UPDATE / DELETE语句:500最大INSERT 每个表每天的语句:每天1,000个最大INSERT语句 每个项目:10,000
处理嵌套数据也非常昂贵,因为每列查询都会加载该列的所有数据。如果您对嵌套数据进行大量操作,它也会很慢。