如何解决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)
)
如果应用于您问题中的样本数据 - 输出为
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。