hive行转列

hive行转列
逐暗者hive中如何进行行转列呢?
我们先创建一个表,并初始化一些数据进去
1 | CREATE TABLEtest( |
可以看到现在表test中的数据是这样的
现在我们用name进行分组,然后把subject的语文、数学变成列,再将score变成语文、数学列的值。
1 | SELECT name |
再看一下效果
其中涉及到几个函数
concat_ws
concat_ws函数需要传入2个参数,第一个参数为拼接字符串,第二个参数为需要拼接的列名集合,需要注意的是,如果集合中存在null则会被忽略,利用这一点我们可以把多行的同一列数据拼接成一个字段,形成列转行。
IF
if 函数用来判断条件然后返回内容,第一个参数是条件,第二个参数是条件true时返回的内容,第三个参数是条件false时返回的内容。配合concat_ws函数忽略null的特性,可以用来指定返回那一行的值,例如
1 | if(subject = '语文',CAST(score as STRING),null) |
则只会返回语文那一行的数据
CAST
这是一个转换函数,因为concat_ws后的列需要一个string类型,所以将score从int转为string
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果