2017-05-23 9 views
1

SQL文で指定した値を持つ列を作成したいとします。結果は次のようになります。ビッグ・クエリで表を作成する

-- +---------+ 
-- | Title | 
-- +---------+ 
-- | Title 1 | 
-- | Title 2 | 
-- | Title 3 | 
-- | Title 4 | 
-- +---------+ 

私は、(タイトルとして「タイトル2」を選択)(タイトルとして「タイトル1」を選択)SELECT * FROM構文を使用してとの方法を知っている、... が任意のですどのようにそれを行う短い方法ですか?私はそこに何百もの値を持っており、SQL文でそれらを指定する必要があります。

答えて

1

あなたが

#legacySQL 
SELECT * 
FROM FLATTEN(( 
    SELECT SPLIT(Titles) AS Title 
    FROM (SELECT 'xy,zx' AS Titles) 
), Title) AS A 
LEFT JOIN ( 
    SELECT Name, Title 
    FROM table.name 
) AS Names 
ON A.Title=Names.Title 
+0

ありがとう、完璧に動作します! –

+0

まだ、BigQuery標準SQLに移行する必要があります - https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql –

+0

ちょうど私が結果を他のテーブルは繰り返しフィールドのため。何か案が? –

1

ここでは、standard SQLを使い始める例を示します。

#standardSQL 
SELECT Title 
FROM UNNEST([ 
    'Title 1', 
    'Title 2', 
    'Title 3' 
]) AS Title; 

リストには、必要な数だけタイトルを追加できます。 BigQuery APIを使用している場合は、pass an array type query parameterを使用して、クエリテキスト自体にリストを含める必要がなくなります。

#legacySQL 
SELECT SPLIT(Titles) AS Title 
FROM (SELECT 'Title 1,Title 2,Title 3,Title 4' AS Titles) 

BigQueryのレガシーSQL用

+0

おかげで以下の例を参照してくださいSPLIT
の結果を平らにするFLATTEN演算子を使用することができますが、私はちょうどレガシーSQLを使用することができます。 –

+1

なぜ標準SQLを使用できないのですか? –