Когда BigQuery очищает буфер потокового вывода - PullRequest
0 голосов
/ 15 мая 2018

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

Это очень важно сейчас, так как

  • У меня 1500 секционированных таблиц.
  • Каждая таблица имеет по крайней мере 200 разделов.

Теперь мне нужно обновить все таблицы, так как мы выполняем какое-то хеширование для GDPR.

Если я не могу запустить DML, то мне нужно пересчитать 200 * 1500 разделов, соединив их со справочной таблицей.

Если я могу запустить DML, тогда мне просто нужно выполнить 1500 операторов udpate.

Я остановил потоковую передачу и жду более 90 минут, но все еще получаю ту же ошибку, что и я не могу запустить DML, так как в таблице есть буфер потоковой передачи.Любой ответ с вашим собственным опытом будет высоко оценен.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Так что, очевидно, 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, не работает и завершается с ошибкой, приведенной ниже.

Оператор UPDATE или DELETE над таблицей dataset.table_name повлияет на строки в потокебуфер, который не поддерживается

0 голосов
/ 15 мая 2018

Ответ - «это зависит» и, в основном, зависит от размера данных, которые вы передаете в буфер - но он также основан на алгоритмической настройке на стороне BQ. На данный момент - нет определенного времени, которое вы можете вычислить, прежде чем данные будут сброшены. И нет никакого механизма, чтобы вызвать очистку буфера вручную.

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