在BigQuery中向历史表添加新字段

时间:2016-08-26 12:39:13

标签: google-analytics google-bigquery

我每天都会将Google Analytics数据导出到BigQuery中,这些构成了我们主要报告数据集的基础。

随着时间的推移,我需要为我们用来丰富数据的其他内容添加新列 - 比如说从url到'报告类别'的映射。

这很容易只是作为一个新列添加到已处理的表中(目前大约有10个处理步骤用于我们所做的所有浓缩)。

这个问题是如果利益相关者随后问 - 我们可以将新列添加到历史数据中吗?

目前我需要重新运行所有非常缓慢且成本高昂的日常工作。

这种情况经常出现,我正在认真考虑重新设计我的数据流水线以适应这样一个事实:我经常需要在我需要添加新字段时不时删除并重新创建所有数据纠正旧脏数据或其他东西。

我只是想知道是否有更好的方法

  1. 在BQ中的旧表中添加一个新列(我很乐意为这些实例手动执行此操作,我可以根据我已定义的ga [hit_key]加入新列,这基本上是一个行键)
  2. (不太常见)根据某些条件更新现有表格。
  3. 只是想知道最佳实践是什么,如果有人有类似的问题,你基本上需要更新历史性的shema,如果有办法做到这一点,而不只是删除和重新创建,这基本上是我目前正在做的。

    要更清楚我当前的方法:我正在使用[ga_sessions_yyyymmdd]表并制作一系列[ga_data_prepN_yyyymmdd]表,其中要么在每一步添加新列,要么以某种方式减少数据。现在有11个这样的步骤,每次我带着所有100或更多列进行骑行。这就是我将要尝试设计的目标,因为目前90%的每个阶段的列都不需要被触摸,因为它们可以在最后结合,可能基于hit_key或其他东西。

    尽管尝试分开但有点混乱。

1 个答案:

答案 0 :(得分:0)

可以将新列添加到现有历史表的模式中,但新添加的列的值将为NULL。如果确实需要将值填充到这些列中,可能最好的方法是使用UPDATE DML语句。有关如何试用的详细信息,请访问:Does BigQuery support UPDATE, DELETE, and INSERT (SQL DML) statements?