hive字段拆分为多行或多列

数据为Array
数据源:
1    子宫病损切除术,经宫腔镜|扩张和刮宫术,诊断性
2    胫骨内固定装置去除术|腓骨内固定装置去除术
3    腰椎穿刺术|腰椎穿刺术|腰椎穿刺术

创建语句
Create table testArray(name string, ssmc array<string> ) row format delimited fields terminated by '\t' collection items terminated by '|';

--拆分为多行:
select name,ss.ssmc from testArray lateral view explode(testArray.ssmc) ss as ssmc;


如数据为String:
select name,ss.ssmc from testStr lateral view explode(split(ssmc,"\\|")) ss as ssmc;


二、拆分为多列
 
case1---字段数据为Array
 
select name,ssmc[0] as ssmc1,ssmc[1] as ssmc2,ssmc[2] as ssmc3 from testArray;
 
case2---字段数据为String
 
select t.name,t.ssmcs[0] as ssmc1,t.ssmcs[1] as ssmc2,t.ssmcs[2] as ssmc3 from (
 
select name,split(ssmc,"\\|") as ssmcs from testArray) t

猜你喜欢

转载自blog.csdn.net/zcb_data/article/details/109849949