微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Google bigquery SQL - 使用下划线作为分隔符将文本分隔并放入不同的列中

如何解决Google bigquery SQL - 使用下划线作为分隔符将文本分隔并放入不同的列中

我有

P2_PCM_C_L112_2011_00_1v  
P2_PCM_C_L212_2012_00_1v  
P2_PCM_C_L119_2011_00_1v  
P2_PCM_C_L6712_2012_00_1v  
P2_PCM_C_L17612_2014_00_1v  

但我希望将它们全部分开并放置成行,用下划线分隔。 遗留 sql代码是什么(用于谷歌 BigQuery)

谢谢!

解决方法

一个简单的方法使用 split()

select split(col,'_')[safe_ordinal(1)] as part1,split(col,'_')[safe_ordinal(2)] as part2,'_')[safe_ordinal(3)] as part3,'_')[safe_ordinal(4)] as part4,'_')[safe_ordinal(5)] as part5,'_')[safe_ordinal(6)] as part6,'_')[safe_ordinal(7)] as part7
from t;

注意:您可能会发现,只需将部分保留在数组中就足够了。

,

考虑以下方法

select * except(key) from (
  select to_json_string(t) key,offset,part 
  from `project.dataset.table` t,unnest(split(text,'_')) part with offset
)
pivot (max(part) for offset in 
  (0 as col1,1 as col2,2 as col3,3 as col4,4 as col5,5 as col6,6 as col7)
)    

如果应用于您问题中的样本数据 - 输出为

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。