BigQuery什么时候刷新流输出缓冲区

时间:2018-05-15 15:01:03

标签: google-bigquery

我知道这个问题不久前已经以不同的形式提出过。但是现在BQ允许在分区表上使用DML,更重要的是要了解何时刷新流缓冲区以便我们可以在表上执行DML以进行维护。

这是非常重要的,因为

  • 我有1500个分区表。
  • 每张桌子至少有200张 分区。

现在我必须更新所有表,因为我们正在为GDPR执行某种散列。

如果我不能运行DML,那么 我必须通过加入参考表来重新设置200 * 1500分区。

如果我可以运行DML,那么我只需要运行1500个udpate语句。

我已经停止了流式传输并且一直在等待,因为> 90分钟,但仍然得到相同的错误,我不能运行DML,因为表有流缓冲区。任何有您自己经验的回复都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

答案是“它取决于”并且主要基于您流式传输到缓冲区的数据大小 - 但它也基于BQ端的算法调整。截至目前 - 没有确定的时间你可以以某种方式计算数据将刷新之前。而且没有机制可以手动调用缓冲区。

答案 1 :(得分:1)

显然,BigQuery现在允许使用流缓冲区更新分区表的旧分区。但不是流式缓冲区本身。

例如:

update 
  `dataset.table_name` 
set column = 'value' 
where _PARTITIONTIME = '2018-05-01' 

工作得很漂亮。

但是

update 
  `dataset.table_name` 
set column = 'value' 
where _PARTITIONTIME = '2018-05-01' 

为null无效并且失败并出现以下错误。

dataset.table_name上的UPDATE或DELETE语句会影响流缓冲区中的行,这是不受支持的