带流缓冲区的列分区表上的BigQuery DML

时间:2018-11-30 02:14:49

标签: google-cloud-platform google-bigquery

据我了解,如果查询未触及流缓冲区中的任何记录,则对具有流缓冲区的分区表上的UPDATE和DELETE are working进行操作。否则,将报告以下错误:

UPDATE or DELETE statement over table project.dataset.table would affect rows in the streaming buffer, which is not supported

问题与讨论的this question类似,但是问题与列分区表有关,而不与摄取时分区表有关。

问题是,尽管摄取时间分区可以通过_PARTITIONTIME上的条件在流缓冲区中ignore data,但它不适用于按列分区的表。还有其他方法可以忽略DML语句中的流式缓冲区数据吗?

1 个答案:

答案 0 :(得分:0)

目前,您可以only use Legacy 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尚不支持此功能,或者何时支持。