2013-10-16 25 views
5

たとえば、2つの列を含むBigQueryの表があるとします。最初の列は名前を表し、2番目の列は任意の長さの値の区切られたリストです。例:BigQueryでの文字列の分割

Name | Scores 
-----+------- 
Bob |10;20;20 
Sue |14;12;19;90 
Joe |30;15 

私は最初は名前で列に変換したい、第二は、単一のスコア値であるので、のような:

Name,Score 
Bob,10 
Bob,20 
Bob,20 
Sue,14 
Sue,12 
Sue,19 
Sue,90 
Joe,30 
Joe,15 

が、これは一人のBigQueryで行うことができますか?

答えて

8

皆さんよろしくお願いします。 BigQueryでSPLIT()を実行できるようになりました。


は "find all two word phrases that appear in more than one row in a dataset" を見てください。

BigQueryの値をsplit()して文字列から複数の行を生成する現在の方法はありませんが、正規表現を使用してコンマを検索して最初の値を見つけることができます。次に、同様のクエリを実行して2番目の値を検索します。上記の例で示したパターン(カンマを使用したUNION)を使用して、すべて1つのクエリにマージできます。

+0

ニースを探している場合 - これは素晴らしいです!結果の配列から引き出す要素の範囲を指定するパラメータはありますか? –

+0

私は分かりません。新しい質問を投稿しますか? http://stackoverflow.com/a/24172995/132438を参照してください。 –

6

誰かがまだ答え

select Name,split(Scores,';') as Score 
from (
     # replace the inner custome select with your source table 
     select * 
     from 
     (select 'Bob' as Name ,'10;20;20' as Scores), 
     (select 'Sue' as Name ,'14;12;19;90' as Scores), 
     (select 'Joe' as Name ,'30;15' as Scores) 
);