我有
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 的代码是什么(用于 google BigQuery)
谢谢!
我有
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 的代码是什么(用于 google BigQuery)
谢谢!
一个简单的方法使用split()
:
select split(col, '_')[safe_ordinal(1)] as part1,
split(col, '_')[safe_ordinal(2)] as part2,
split(col, '_')[safe_ordinal(3)] as part3,
split(col, '_')[safe_ordinal(4)] as part4,
split(col, '_')[safe_ordinal(5)] as part5,
split(col, '_')[safe_ordinal(6)] as part6,
split(col, '_')[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)
)
如果应用于您问题中的样本数据 - 输出是