0

我有

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)

谢谢!

4

2 回答 2

0

一个简单的方法使用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;

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

于 2021-06-23T17:07:29.763 回答
0

考虑以下方法

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

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

在此处输入图像描述

于 2021-06-23T17:19:17.813 回答