我知道这个问题不久前已经以不同的形式提出过。但是现在BQ允许在分区表上使用DML,更重要的是要了解何时刷新流缓冲区以便我们可以在表上执行DML以进行维护。
这是非常重要的,因为
现在我必须更新所有表,因为我们正在为GDPR执行某种散列。
如果我不能运行DML,那么 我必须通过加入参考表来重新设置200 * 1500分区。
如果我可以运行DML,那么我只需要运行1500个udpate语句。
我已经停止了流式传输并且一直在等待,因为> 90分钟,但仍然得到相同的错误,我不能运行DML,因为表有流缓冲区。任何有您自己经验的回复都将受到高度赞赏。
答案 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语句会影响流缓冲区中的行,这是不受支持的