hive行列转换函数
多行转多列: case when then
多行转一列: collect_set collect_list 且可出现在group by的字段之外
多列合并成一列:concat_ws map(key,value)
列转行:lateral view explode 将hive中复杂的array或map结构拆分成多行
解释:用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。
select
movie,
category_name
from movie_info
lateral view
explode(split(category,‘,’)) movie_info_tmp as category_name;
sql 测试
package data_warehouse.hive
import data_warehouse.hive.utils.ConnectMysql
import org.apache.spark.{
SparkConf, SparkContext}
import org.apache.spark.sql.{
DataFrame, SparkSession}
import sparksql.yunying.blackandwhite.WhiteList.saveWhite
/**
* 多行转多列: case when then
* 多行转一列: collect_set collect_list 且可出现在group by的字段之外
* 多列合并成一列:concat_ws map(key,value)
* 列转行:lateral view explode
* @ au

本文介绍了Hive中实现行列转换的方法,包括多行转多列使用case when then,多行转一列通过collect_set和collect_list,多列合并用concat_ws和map,以及列转行利用lateral view explode来拆分复杂结构数据。示例展示了如何结合explode和split对电影类别数据进行拆分和转换。
最低0.47元/天 解锁文章
1429

被折叠的 条评论
为什么被折叠?



