Google bigquery 删除不在BigQuery流式缓存中的行

Google bigquery 删除不在BigQuery流式缓存中的行,google-bigquery,Google Bigquery,我需要从分区的BigQuery表中删除与给定的WHERE条件匹配的行。该表总是有一个流式缓冲区,向其中添加更多数据。我不关心从流式传输中删除什么,只关心昨天分区中的历史数据 当BigQuery表上存在流式缓冲区时,理想情况下无需停机,删除数据的正确策略是什么?您可以使用数据操作语言DELETE语句。但是,请记住以下内容(来自DML): 支持使用数据操作语言语句修改 分区表数据当前处于测试版 但是,您始终可以通过筛选出要删除的记录来进行选择,并将结果写回同一分区。 不会有停机时间。成本将与完整单分

我需要从分区的BigQuery表中删除与给定的
WHERE
条件匹配的行。该表总是有一个流式缓冲区,向其中添加更多数据。我不关心从流式传输中删除什么,只关心昨天分区中的历史数据


当BigQuery表上存在流式缓冲区时,理想情况下无需停机,删除数据的正确策略是什么?

您可以使用数据操作语言
DELETE
语句。但是,请记住以下内容(来自DML):

支持使用数据操作语言语句修改 分区表数据当前处于测试版

但是,您始终可以通过筛选出要删除的记录来进行选择,并将结果写回同一分区。 不会有停机时间。成本将与完整单分区扫描的成本相同。

来自此页

不能使用UPDATE、DELETE或MERGE语句修改最近通过流(使用tabledata.insertall方法)写入表中的行。最近的写入通常是在最近30分钟内发生的。请注意,表中的所有其他行都可以使用UPDATE、DELETE或MERGE语句进行修改


这意味着您应该限制DML的时间,理想情况下,您应该有date created列,这样您就可以使用它,或者如果有一个内置的元数据列可以使用,但我不知道有这样的列

另请参阅@AlexeyMaloletkin中的另一列,以防您想从整个摄取时间分区表中删除旧分区。@mark,找到解决方案了吗?我需要删除不在流缓冲区中的旧重复行