При попытке выполнить инструкцию 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