2017-06-26 10 views
1

繰り返しフィールドとテーブルの作成:私は以下のフォーマットでBigQueryの(レガシー)でテーブルを作成する手動

-- +---------+---------+ 
-- | Var1 | Var2 + 
-- +---------+---------+ 
-- | x  | 1  + 
-- |   | 2  + 
-- |   | 3  + 
-- | y  | 1  + 
-- +---------+---------+ 

以下のコードは、行によって行手動でテーブルを作成することができます。私は、値1,2,3はxのVAR1などに属していることを指定するコードを探しています

SELECT SPLIT(Var1x) AS Var1 
FROM (SELECT 'x,y' AS Var1x) 

また多分助けることができる1つの繰り返しフィールドに列を変換する方法方法があるかどうか。あなたのようなものは、y列とx1〜x5列を持ち、ただ1つのx繰り返し列に変換できます。何か案は?

+0

質問がありますか? – mtoto

+0

どうすればいいですか?私のコード例では、行ごとに手動でテーブルを作成することができますが、var2が列と値1-2-3が属することをどのように指定できるか分かりません〜var1 xまで –

答えて

0
#legacySQL 
SELECT 
    Var1, NEST(Var2) AS Var2 
FROM 
    (SELECT 'x' AS Var1, 1 AS Var2), 
    (SELECT 'x' AS Var1, 2 AS Var2), 
    (SELECT 'x' AS Var1, 3 AS Var2), 
    (SELECT 'y' AS Var1, 1 AS Var2) 
GROUP BY Var1 

注意してください - このような構造を維持するために - あなたはdestination tableを選び、allow large resultをチェックし、Web UIでflatten resultsのチェックを外す必要がある - それ以外のBigQueryレガシーSQLは、自動的に最もoutterのクエリ出力

に別の方法を平ら上記の確認は行数をカウントすることです(2ではなく4でなければなりません)

#legacySQL 
SELECT COUNT(1) FROM (
    SELECT 
    Var1, NEST(Var2) AS Var2 
    FROM 
    (SELECT 'x' AS Var1, 1 AS Var2), 
    (SELECT 'x' AS Var1, 2 AS Var2), 
    (SELECT 'x' AS Var1, 3 AS Var2), 
    (SELECT 'y' AS Var1, 1 AS Var2) 
    GROUP BY Var1 
) 

あなたのオリジナルの質問 - 私はしっかりと標準SQLを使用することをお勧めします - 下のそれぞれのバージョンを参照してください:

#standardSQL 
SELECT 'x' as Var1, [1,2,3] as Var2 UNION ALL 
SELECT 'y', [1] 
関連する問題