我们是一家游戏公司,将事件(每天最多 1 个千兆事件)存储到 bigquery。事件按月份和应用程序进行分片,以降低查询成本。
现在来谈谈我们的问题。
我们当前的解决方案支持添加新类型的事件,从而产生新版本的表模式。该版本也已添加到表中。
I.e. events_app1_v2_201308 and events_app1_v2_201308
如果我们在 9 月份添加具有新列类型的事件,我们还将得到events_app1_v3_201309
我们编写了代码来查找涉及的表(针对日期范围)并将它们合并为一个用 bigquery 逗号分隔的 FROM 子句。
但我刚刚意识到,当我们对不同版本的事件表进行联合时,这将不起作用。
任何人都有一个聪明的解决方案来处理这个问题!?
现在我们正在研究 JSON 结构是否可以帮助我们。当前的解决方案只是平柱。 [时间戳、事件 ID、值、值、值、...]
From https://developers.google.com/bigquery/query-reference#from https://developers.google.com/bigquery/query-reference#from
注意:与许多其他基于 SQL 的系统不同,BigQuery 使用逗号语法来指示表联合,而不是联接。这意味着您可以对多个表运行查询与兼容!?架构如下:
您应该能够修改旧表的表架构以添加列,然后并集应该匹配。请注意,您只能添加列,而不能删除它们。您可以使用tables.patch()方法来执行此操作,或者bq update --schema
此外,只要新字段未标记为 REQUIRED,它们就应被视为兼容。但是,如果情况并非如此,则这将是一个错误 - 请告诉我们您是否遇到了这种情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)