2013-10-16 206 views
5

假設我在包含2列的BigQuery中有一個表。第一列表示名稱,第二列表示任意長度的分隔值列表。例如:在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中的值拆分()爲從一個字符串中生成多行,但可以使用正則表達式來查找逗號並查找第一個值。然後運行一個類似的查詢來查找第二個值,依此類推。它們都可以合併成只有一個查詢,使用上面示例中提供的模式(UNION通過逗號)。

+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) 
);