BigQuery Merge - размер запроса увеличивается с предложением DELETE - PullRequest
0 голосов
/ 08 февраля 2019

При попытке выполнить инструкцию MERGE, BigQuery сканирует только запрошенные разделы, ДО того как добавлен статус УДАЛИТЬ, после чего он возвращается к сканированию всего набора данных (в этом случае цвет от 1 ГБ до> 1 ТБ).

Есть ли способ использовать все возможности MERGE, включая DELETE, без дополнительных затрат?

Общий образец, который соответствует моим усилиям ниже:

MERGE target_table AS t *## All Dates, partitioned on 
activity_date*

USING source_table AS s ## one date, only yesterday

ON t.field_a = s.field_a

AND t.activity_date >= 
DATE_ADD(DATE(current_timestamp(),'America/Los_Angeles'), INTERVAL -1 DAY) ## use partition to limit to yesterday

WHEN MATCHED
THEN UPDATE SET
field_b = s.field_b

WHEN NOT MATCHED
THEN INSERT
(field_a, field_b)
VALUES
(field_a, field_b)

WHEN NOT MATCHED BY SOURCE
THEN DELETE

1 Ответ

0 голосов
/ 09 августа 2019

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

Если после дальнейшей проверки в вашем наборе данных не было внесено никаких неожиданных изменений, отмеченный 1 ТБ данных может быть просто объяснен тем, что BigQuery вводит эти данные в память как побочный шаг, чтобы можно было выполнить запрос.

Однако для подтверждения рекомендуется отправить заявку в систему отслеживания проблем с вашим идентификатором BigQuery JobID, чтобы инженеры BigQuery могли должным образом проверить проблему.

...