2017-07-13 8 views
1

これを参考にして、複数の列を手動で作成したいと考えています。テーブルのBigQuery SPLITマニュアル作成

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

私は単純に、このように新しい列を追加しようとしている:私はBQ結果を平らにし、どのように関連している可能性が考えて

Error: Cannot output multiple independently repeated fields at the same time. Found Title and Name 

SELECT SPLIT(Titles) AS Title, SPLIT(Names) AS Name,FROM (SELECT 'Title 1,Title 2,Title 3,Title 4' AS Titles, 'Name 1,Name 2,Name 3,Name 4' AS NAMES) 

しかしBQは私に次のようなエラーが表示さ私は同様の問題hereを見つけました。残念ながら私は自分のコードを変換することができません。私はちょうどレガシーSQLを使うことができます。

EDIT: 予想表は次のようになります。以下は

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

変化する可能性があるので期待している結果は –

+0

私は投稿を編集しました。基本的には、同じ数の行を持つ列を追加する必要があります。 –

答えて

1

BigQueryのレガシーSQLで

#standardSQL 
WITH data AS (
    SELECT 'Title 1,Title 2,Title 3,Title 4' AS Titles, 'Name 1,Name 2,Name 3,Name 4' AS Names 
) 
SELECT 
    Title, 
    Name 
FROM data, 
    UNNEST(SPLIT(Titles)) AS Title WITH OFFSET AS pos1, 
    UNNEST(SPLIT(Names)) AS Name WITH OFFSET AS pos2 
WHERE pos1 = pos2 
ORDER BY Title 

同じ考えBigQueryの標準SQLにはもう少し

ふさふさに見えるためであります
#legacySQL 
SELECT 
    Title, Name 
FROM FLATTEN((
    SELECT Title, POSITION(Title) AS pos1 
    FROM (
    SELECT SPLIT(Titles) AS Title 
    FROM (SELECT 'Title 1,Title 2,Title 3,Title 4' AS Titles, 'Name 1,Name 2,Name 3,Name 4' AS Names) 
) 
), pos1) AS titles 
JOIN FLATTEN((
    SELECT Name, POSITION(Name) AS pos2 
    FROM (
    SELECT SPLIT(Names) AS Name 
    FROM (SELECT 'Title 1,Title 2,Title 3,Title 4' AS Titles, 'Name 1,Name 2,Name 3,Name 4' AS Names) 
) 
), pos2) AS names 
ON pos1 = pos2 
+0

@ johnsnow - 試してみましたか? –

関連する問題