【问题标题】:Dealing with evolving schemas处理不断发展的模式
【发布时间】:2013-09-04 08:38:56
【问题描述】:

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

现在我们的问题。

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

events_app1_v2_201308events_app1_v2_201308

如果我们在 9 月添加具有新列类型的事件,我们还将获得 events_app1_v3_201309

我们编写了代码来找出涉及的表(对于一个日期范围),并将它们合并为一个 bigquery 的逗号分隔的 FROM 子句。

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

任何人都知道如何处理这个问题!?

现在我们正在研究 JSON 结构是否可以帮助我们。当前的解决方案只是平柱。 [时间戳,eventId,值,值,值,...]

来自https://developers.google.com/bigquery/query-reference#from

注意:与许多其他基于 SQL 的系统不同,BigQuery 使用逗号语法来表示表联合,而不是联合。这意味着您可以使用兼容的 !? 架构对多个表运行查询,如下所示:

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

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

    此外,只要新字段未标记为 REQUIRED,它们就应该被视为兼容。但是,如果不是这种情况,那将是一个错误 - 如果您遇到这种情况,请告诉我们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 2014-08-19
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多