简单说一下Hive行转列、列转行的方式。
写在前面
看到一篇文章,看的我很难受。(下面是一张图片)
这玩意SQL,语法它对吗?就搁这列转行?浪费时间!
上个Demo
先拿这个数据来实现一个简单的行转列和列转行
表名就都叫hero吧,英雄属性(hero_type)、英雄名s(hero_names)、英雄名(hero_name)
行转列
也就是上面的表1到表2。
select
hero_type as "英雄属性",
hero_name as "英雄名"
from hero
lateral view explode(split(hero_names, ",")) lat as hero_name;
列转行
也就是上面的表2到表1
select
hero_type,
concat_ws(",", collect_list(hero_name))
from hero
group by hero_type;
参考
hive函数document:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
之后再细细总结吧,先这样。