Объединение BigQuery удаления и вставки операторов - PullRequest
1 голос
/ 23 января 2020

Есть ли в Bigquery способ объединить операторы DELETE и INSERT в один

DELETE `my_project.my_dataset.demo` 
WHERE date= CURRENT_DATE()

INSERT INTO
 `my_project.my_dataset.demo` 
SELECT * FROM `my_project.my_dataset.my_source` 
WHERE date= CURRENT_DATE()

Любое выражение, которое может объединить два вышеупомянутых DML в один?

1 Ответ

0 голосов
/ 24 января 2020

MERGE:

Оператор MERGE - это оператор DML, который может комбинировать INSERT, UPDATE и УДАЛИТЬ операции в один оператор и выполнять операции атомарно.

В следующем примере все продукты в таблице NewArrivals заменяются значениями из подзапроса. Предложение INSERT не определяет имена столбцов ни для целевой таблицы, ни для исходного подзапроса.

MERGE dataset.NewArrivals
USING (SELECT * FROM UNNEST([('microwave', 10, 'warehouse #1'),
                             ('dryer', 30, 'warehouse #1'),
                             ('oven', 20, 'warehouse #2')]))
ON FALSE
WHEN NOT MATCHED THEN
  INSERT ROW
WHEN NOT MATCHED BY SOURCE THEN
  DELETE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...