BigQuery DML для секционированных по столбцам таблиц с потоковым буфером - PullRequest
0 голосов
/ 30 ноября 2018

Насколько я понимаю, UPDATE и DELETE работают на многораздельных таблицах с потоковым буфером, если запрос не касается каких-либо записей в потоковом буфере.В противном случае сообщается о следующей ошибке:

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

Проблема аналогична обсуждаемой этому вопросу , однако речь идет о таблицах с разделением по столбцам, а не о таблицах с разделением по времени приема.

Проблема в том, что, хотя у разделенных во время приема средств есть средства игнорировать данные в потоковом буфере с помощью условий _PARTITIONTIME, это не доступно для таблиц с разделенными столбцами.Существуют ли другие подходы, которые позволили бы игнорировать данные потокового буфера в инструкциях DML?

1 Ответ

0 голосов
/ 06 января 2019

В настоящее время вы можете использовать только устаревший 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 или когда это будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...