У BigQuery пока нет поддержки для UNION: https://developers.google.com/bigquery/docs/query-reference
(Я не имею в виду объединение таблиц вместе для источника. У этого есть.)
Скоро ли это?
У BigQuery пока нет поддержки для UNION: https://developers.google.com/bigquery/docs/query-reference
(Я не имею в виду объединение таблиц вместе для источника. У этого есть.)
Скоро ли это?
Если вы хотите UNION, чтобы объединить результаты запроса, вы можете использовать подзапросы в BigQuery:
SELECT foo, bar
FROM
(SELECT integer(id) AS foo, string(title) AS bar
FROM publicdata:samples.wikipedia limit 10),
(SELECT integer(year) AS foo, string(state) AS bar
FROM publicdata:samples.natality limit 10);
Это почти точно эквивалентно SQL
SELECT id AS foo, title AS bar
FROM publicdata:samples.wikipedia limit 10
UNION ALL
SELECT year AS foo, state AS bar
FROM publicdata:samples.natality limit 10;
(обратите внимание, что если вы хотите, чтобы SQL UNION, а не UNION ALL, это не сработало)
В качестве альтернативы вы можете запустить два запроса и добавить результат.
Недавно BigQuery добавила поддержку Стандартный SQL, , включая операцию UNION
.
При отправке запроса через веб-интерфейс просто снимите флажок "Использовать устаревший SQL" в разделе "Версия SQL":
Вы всегда можете сделать:
SELECT * FROM (query 1), (query 2);
Он делает то же самое, что:
SELECT * from query1 UNION select * from query 2;
Союзы действительно поддерживаются. Выдержка из ссылки, которую вы опубликовали:
Примечание.. В отличие от многих других систем на базе SQL, BigQuery использует синтаксис запятой, чтобы указать объединения таблиц, а не объединения. Это означает, что вы можете запускать запрос по нескольким таблицам с совместимыми схемами следующим образом:
//Поиск подозрительной активности в течение нескольких дней
SELECT FORMAT_UTC_USEC(event.timestamp_in_usec) AS time, request_url
FROM [applogs.events_20120501], [applogs.events_20120502], [applogs.events_20120503]
WHERE event.username = 'root' AND NOT event.source_ip.is_internal;
Обратите внимание: если вы используете стандартный SQL, теперь оператор запятой означает JOIN
- вам нужно использовать синтаксис UNION
, если вы хотите союз:
В устаревшем SQL, оператор запятой, имеет нестандартное значение UNION ALL при применении к таблицам. В стандартном SQL оператор запятой имеет стандартное значение JOIN.
Например:
#standardSQL
SELECT
column_name,
count(*)
from
(SELECT * FROM me.table1 UNION ALL SELECT * FROM me.table2)
group by 1