web-dev-qa-db-ja.com

BigQuery SQLでUNION関数をサポートする

BigQueryはまだUNIONをサポートしていないようです: https://developers.google.com/bigquery/docs/query-reference

(ソース用にテーブルを結合することを意味するのではありません。それが含まれています。)

もうすぐですか?

20
mdahlman

クエリ結果を組み合わせることができるように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つのクエリを実行して結果を追加することもできます。

47
Jordan Tigani

BigQueryは最近 標準SQLUNION操作を含むのサポートを追加しました。


ウェブUIを介してクエリを送信する場合は、SQLバージョンのルーブリックで「レガシーSQLを使用する」のチェックを必ず外してください: enter image description here

4
olebebo

あなたはいつでもできます:

SELECT * FROM (query 1), (query 2);

それは同じことをします:

SELECT * from query1 UNION select * from query 2;
2
vgt

これは、大きなクエリの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

0
Weezy.F

組合は確かにサポートされています。あなたが投稿したリンクからの抜粋:

注:他の多くの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;
0
Emre Colak

標準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
0
Joshua Conner