[英]BigQuery DML on column partitioned tables with streaming buffer
据我了解,如果查询未触及流缓冲区中的任何记录,则UPDATE和DELETE 会在具有流缓冲区的分区表上工作 。 否则,将报告以下错误:
UPDATE or DELETE statement over table project.dataset.table would affect rows in the streaming buffer, which is not supported
问题类似于讨论此问题 ,但问题与列分区表有关,而不与摄取时间分区表有关。
问题是,虽然摄取时间分区可以通过_PARTITIONTIME的条件忽略流缓冲区中的数据 ,但不适用于按列分区的表。 还有其他方法可以忽略DML语句中的流缓冲区数据吗?
目前,您只能使用旧版SQL来获取有关流缓冲区的信息。
像这样从流缓冲区中获取所有数据:
#legacySQL
select MIN(partitioned_tstamp) AS min_tstamp
, MAX(partitioned_tstamp) AS max_tstamp
, COUNT(1) AS lines
FROM [my_dataset_id.mystreaming_data_table$__UNPARTITIONED__]
并获得表中所有分区的摘要,如下所示:
#legacySQL
SELECT *
FROM [my_dataset_id.mystreaming_data_table$__PARTITIONS_SUMMARY__]
我不知道为什么标准SQL尚不支持此功能,或者何时支持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.