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が必要でない場合、これは機能しないことに注意してください)
または、2つのクエリを実行して結果を追加することもできます。
BigQueryは最近 標準SQL 、UNION
操作を含むのサポートを追加しました。
ウェブUIを介してクエリを送信する場合は、SQLバージョンのルーブリックで「レガシーSQLを使用する」のチェックを必ず外してください:
あなたはいつでもできます:
SELECT * FROM (query 1), (query 2);
それは同じことをします:
SELECT * from query1 UNION select * from query 2;
これは、大きなクエリのStandardSQLでUNION INTERSECTを実行するのに非常に役立ちました。
#standardSQL
WITH
a AS (
SELECT
*
FROM
table_a),
b AS (
SELECT
*
FROM
table_b)
SELECT
*
FROM
a INTERSECT DISTINCT
SELECT
*
FROM
b
この例を盗んだ/変更した: https://Gist.github.com/yancya/bf38d1b60edf972140492e3efd0955d
組合は確かにサポートされています。あなたが投稿したリンクからの抜粋:
注:他の多くの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
- youhaveを意味します。ユニオンが必要な場合の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