2021-07-01-Hive-26(SQL多行转多列)

时间:2021-7-4 作者:qvyue

多行转多列(炸裂便签)

数据如下
a   影集  送祝福
b   影集  MV
c   影集  极速影集
d   视频  图文

转换为下面的
       a       b      c      d 
test1 影集    影集  影集    视频
test2 送祝福  MV  极速影集  图文

— spark多行转多列的解法.如果使用with,炸裂函数中有map函数则会报错??? (主要就是标签的用法)

select 
tag,
max(case when test1 = 'a' then va end ) as a,
max(case when test1 = 'd' then va end ) as d,
max(case when test1 = 'c' then va end ) as c,
max(case when test1 = 'd' then va end ) as d
from 
(
SELECT 
test1,a as tag ,b as va
FROM (
SELECT 'a' AS test1, '影集' AS test2, '送祝福' AS test3
        UNION ALL
        SELECT 'b', '影集', 'MV'
        union all 
        SELECT 'c','影集','极速影集'
        union all 
        SELECT 'd' ,'视频' ,'图文'
) as t 
lateral view explode(map('test2',test2,'test3',test3))  view1 as a,b 
) t1 
group by tag
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。