Google bigquery更新行

时间:2013-09-17 16:29:36

标签: google-bigquery

那么有人可以就如何更新一组行提出想法吗?

我理解查询的概念 - >新表,然后转储“旧”表并重新命名“新”,但说实话,这是非常好的。

我在文档,网络或新想法中都没有看到任何可以让我相信“更新”声明的外观。

有人想到吗?

3 个答案:

答案 0 :(得分:8)

[更新此答案已过期]

BigQuery目前不支持对各行进行直接更新。您可以附加到表中,并且可以截断/覆盖表,但是不能将更新应用于单个行,而保持表的其余部分不变。

您提到的流程(创建新表,替换旧表)是一种合理的方法。如果有帮助,请注意您不需要两个单独的步骤来将旧表替换为新表。由于BigQuery以原子方式应用作业副作用,因此可以通过将最终复制作业上的writeDisposition设置为WRITE_TRUNCATE来一步替换旧表。例如,您可以执行以下操作:

  query table -> table with WRITE_TRUNCATE

就像更新一样,您应该注意到这对旧表具有破坏性。但是,如果您未更改架构,则可以使用快照装饰器从截断发生之前的时间开始读取表。

在进行此更新过程时,您可以针对“table”运行查询作业,并确保这些作业可以看到旧内容或新内容,中间没有不一致或错误的状态。

答案 1 :(得分:7)

2016年9月29日,Google update在那里DML,现在我们可以编写标准SQL,这使我们能够在BigQuery数据集中插入,更新和删除行和列。

答案 2 :(得分:1)

BigQuery现在提供了对插入,更新和删除行和列的支持,但仅适用于没有流缓冲区的表。