Как написать запрос MERGE, используя SELECT FROM VALUES в BigQuery? - PullRequest
0 голосов
/ 10 февраля 2020

Я хочу написать MERGE запрос с использованием литеральных значений в базе данных BigQuery. Я пробовал это: { ссылка } (версия для SQL Server), но BigQuery возвращает ошибку: «Табличная функция не найдена»

Возможно ли сделать это в BigQuery а как?

1 Ответ

0 голосов
/ 11 февраля 2020

После нашего обсуждения в разделе комментариев я могу предложить вам два варианта:

Сначала используйте оператор INSERT . Согласно документации:

Используйте оператор INSERT, если вы хотите добавить новые строки в таблицу.

Поэтому вы изменяете строки в исходной таблице. Я использовал фиктивные данные, чтобы воспроизвести его. Моя исходная база данных была:

enter image description here

В интерфейсе BigQuery синтаксис выглядит следующим образом:

insert `source_table` (email, content)
select "ale@gmail.com" as email, "add something" as content

или

insert `source_table` (email, content)
select "ale@gmail.com" , "add something" 

Обратите внимание, что я использовал двойные кавычки, потому что поле, которое я добавляю, это String . И вывод будет следующим:

enter image description here

Второй вариант - использовать UNION ALL . Я хотел бы отметить, что с помощью этой опции вы не обновляете или не изменяете исходную таблицу, вместо этого вы создаете представление с добавлением новых данных. Синтаксис следующий:

SELECT 'aleee@gmail.com' , "add something 2" UNION ALL
--#if you want to add more rows to your view, you will need to write another 
--#select 'email@gmail.com.br', "something " UNION ALL
SELECT * FROM  `test-proj-261014.sample.foobar`

Надеюсь, это поможет.

...