初见

大数据hive10-hivesql进行数据列转行

2020-06-01  本文已影响0人  数据蝉
一、需求背景
image.png

将电影分类中的数组数据展开。结果如下:


image.png
二、建表
create dw.table movie_info(
    movie string, 
    category array<string>) 
row format delimited fields terminated by "\t"
collection items terminated by ",";
三、插入数据
insert into dw.movie_info select '《疑犯追踪》' as movie,array('悬疑','动作','科幻','剧情') as category
insert into dw.movie_info select  '《Lie to me》' as movie,array('悬疑','警匪','动作','心理','剧情') as category
insert into dw.movie_info select '《战狼2》' as movie,array('战争','动作','灾难') as category
四、按需求查询数据
select
    movie,
    category_name
from 
    dw.movie_info lateral view explode(category) table_tmp as category_name;
五、输出结果
image.png
六、总结

1.函数说明
EXPLODE(col):将hive一列中复杂的array或者map结构拆分成多行。

LATERAL VIEW

用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias

解释:用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。

上一篇下一篇

猜你喜欢

热点阅读