Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery BigQuery何时刷新流输出缓冲区_Google Bigquery - Fatal编程技术网

Google bigquery BigQuery何时刷新流输出缓冲区

Google bigquery BigQuery何时刷新流输出缓冲区,google-bigquery,Google Bigquery,我知道这个问题不久前被以不同的形式提出。但现在BQ允许在分区表上使用DML,更重要的是了解何时刷新流缓冲区,以便我们可以在表上执行DML以进行维护 这一点现在非常重要,因为 我有1500张分区的桌子 每张桌子至少有200张 分区 现在我必须更新所有的表,因为我们正在对GDPR执行某种哈希 如果我不能运行DML,那么 我必须通过连接一个参考表来重述200*1500分区 如果我可以运行DML,那么我只需要运行1500条udpate语句 我已停止流式处理,并已等待了90分钟以上,但仍然得到相同的错

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

这一点现在非常重要,因为

  • 我有1500张分区的桌子
  • 每张桌子至少有200张 分区
现在我必须更新所有的表,因为我们正在对GDPR执行某种哈希

如果我不能运行DML,那么 我必须通过连接一个参考表来重述200*1500分区

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


我已停止流式处理,并已等待了90分钟以上,但仍然得到相同的错误,我无法运行DML,因为表有流式处理缓冲区。如果您能以自己的经验给予回复,我们将不胜感激

答案是“视情况而定”,主要取决于流到缓冲区的数据的大小,但也取决于BQ端的算法调整。到目前为止,在数据刷新之前,还没有确定的时间可以计算。而且没有手动调用缓冲区刷新的机制。

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

例如:

update 
  `dataset.table_name` 
set column = 'value' 
where _PARTITIONTIME = '2018-05-01' 
工作得很漂亮

但是

无法工作并失败,出现以下错误:

数据集上的UPDATE或DELETE语句。表\u name
将影响流式缓冲区中的行,这是不受支持的


无法区分两个代码段之间的差异。第一个代码段在分区“20180501”上将列设置为“value”,而第二个代码段尝试在流式缓冲区中将列设置为“value”。
update 
  `dataset.table_name` 
set column = 'value' 
where _PARTITIONTIME is null