自己建免费网站,东莞平面设计,公众号在哪里找,最好的网站建设推广并列列转行 1、背景描述2、Hive实现3、PrestoSQL实现 1、背景描述 通常我们在处理数据时#xff0c;如果遇到一个字段存储多个值#xff0c;常常需要把一行数据转换为多行数据#xff0c;形成标准的结构化数据
例如#xff0c;将下面的两列数据并列转换为三行#xff0c;… 并列列转行 1、背景描述2、Hive实现3、PrestoSQL实现 1、背景描述 通常我们在处理数据时如果遇到一个字段存储多个值常常需要把一行数据转换为多行数据形成标准的结构化数据
例如将下面的两列数据并列转换为三行使得code和name一一对应的
idcodename1a、b、cA、B、C
2、Hive实现 使用Hive的lateral view posexplode实现
select id, pos1, sub_code, pos2, sub_name from tmp
lateral view posexplode(split(code,、)) v1 as pos1, sub_code
lateral view posexplode(split(name,、)) v2 as pos2, sub_name
where id1 and pos1pos23、PrestoSQL实现 使用PrestoSQL的cross join unnest实现 with temp1 as(select id,sub_name,row_number() over() rnfrom tempcross join unnest(split(code, 、)) as t (sub_name)where id1),
temp2 as (select id,sub_code,row_number() over() rnfrom tempcross join unnest(split(name, 、)) as t (sub_code)where id1)
select *
from temp1
left join temp2
on temp1.rn temp2.rn