Google bigquery更新行

use*_*456 11 google-bigquery

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

I understand the concept of query -> new table, then dumping the "old" table and re-naming the "new", but to be honest this is very hokey.

I don't see anything in the documentation, web, or in the new ideas that will lead me to believe in the appearance of an "update" statement either.

Thoughts anyone?

vla*_*i03 9

在2016年9月29日,谷歌更新DML,现在我们可以编写标准的SQL,这使我们能够插入,更新,并在您的BigQuery数据集删除行和列.


Jer*_*dit 8

[更新此答案已过时]

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

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

  query table -> table with WRITE_TRUNCATE
Run Code Online (Sandbox Code Playgroud)

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

在执行此更新过程时,您可以使针对"table"运行查询作业,并确保这些作业可以看到旧内容或新内容,两者之间没有不一致或错误的状态.