Big Query中的WRITE_TRUNCATE行为

时间:2017-09-13 00:06:04

标签: google-bigquery google-cloud-dataflow

我对Big Query中的 WRITE_TRUNCATE 行为有疑问。

我有一个大的查询表( T1 ),我定期附加日志数据(每个日志行一行)。我希望有一个从该表读取的数据流作业( D1 ),删除任何重复的行并执行其他数据清理操作,然后将其输出到另一个大查询表( T2 ),替换此表中可能已存在的任何数据。我相信我可以通过在数据流作业中使用BigQuery.IO接收器中的WRITE_TRUNCATE write disposition来实现此目的。

问题是,如果我从表 T2 读取另一个数据流作业( D2 ),而作业 D1 正在写入中间截断到此表, D2 看到的数据是什么,即它是否在截断前或截断完成后的状态下查看表。或者它可以在截断期间的任何步骤中看到该表(例如,通过附加新数据的一部分)?

上面链接的javadoc表明截断可能不是是原子的,而REST documentation for Big Query表示它是原子的。

1 个答案:

答案 0 :(得分:3)

REST API实际上是这里的真相来源,即BigQuery作业成功完成后, 更改原子。