Google bigquery 处理演化模式

Google bigquery 处理演化模式,google-bigquery,Google Bigquery,我们是一家游戏公司,向bigquery存储事件(每天最多1千兆次事件)。事件分为多个月和多个应用程序,以降低查询成本 现在来谈谈我们的问题 我们当前的解决方案支持添加新类型的事件,从而生成新版本的表模式。此版本也已添加到表中 即事件\u app1\u v2\u 201308和事件\u app1\u v2\u 201308 如果我们在9月份添加具有新列类型的事件,我们还将获得events\u app1\u v3\u 201309 我们已经编写了查找相关表(针对日期范围)的代码,并将它们的并集作为'

我们是一家游戏公司,向bigquery存储事件(每天最多1千兆次事件)。事件分为多个月和多个应用程序,以降低查询成本

现在来谈谈我们的问题

我们当前的解决方案支持添加新类型的事件,从而生成新版本的表模式。此版本也已添加到表中

事件\u app1\u v2\u 201308事件\u app1\u v2\u 201308

如果我们在9月份添加具有新列类型的事件,我们还将获得events\u app1\u v3\u 201309

我们已经编写了查找相关表(针对日期范围)的代码,并将它们的并集作为'la bigquery的逗号分隔FROM子句

但我刚刚意识到,当我们对不同版本的事件表进行联合时,这将不起作用

谁有一个聪明的解决方案来解决这个问题

现在我们正在调查JSON结构是否能帮助我们。当前的解决方案是扁平柱。[时间戳,事件ID,值,值,值,…]


注意:与许多其他基于SQL的系统不同,BigQuery使用逗号语法表示表联合,而不是联接。这意味着您可以使用compatible模式如下:

您应该能够修改旧表的表模式以添加列,然后联合应该匹配。请注意,您只能添加列,不能删除列。您可以使用tables.patch()方法来执行此操作,或者
bq update--schema

此外,只要新字段没有标记为必需,就应该认为它们是兼容的。但是,如果不是这样,那将是一个bug——请告诉我们您是否正在经历这种情况