hive中实现行转列_##[函数]Hive中行列转换(行转列)

1、演示多列转为单行

数据文件及内容: student.txt

xiaoming|english|92.0

xiaoming|chinese|98.0

xiaoming|math|89.5

huahua|chinese|80.0

huahua|math|89.5

创建表studnet:

create table student(name string,subject string,score decimal(4,1))

row format delimited

fields terminated by ‘|’;

导入数据:

load data local inpath ‘/home/hadoop/hivetestdata/student.txt’ into table student;

列转为行演示:

hive (hive)> select name,concat_ws(‘,’,collect_set(subject)) from student group by name;

huahua chinese,math

xiaoming english,chinese,math

hive (hive)> select name,concat_ws(‘,’,collect_set(concat(subject,’=’,score))) from student group by name;

huahua chinese=80,math=89.5

xiaoming english=92,chinese=98,math=89.5

2、演示单行转为多列

数据文件及内容:student2.txt

huahua|chinese=80,math=89.5

xiaoming|english=92,chinese=98,math=89.5

创建表:

create table student2(name string,subject_score_list string)

row format delimited

fields terminated by ‘|’;

导入数据:

load data local inpath ‘/home/hadoop/hivetestdata/student2.txt’ into table student2;

行转为列演示:

hive (hive)> select * from student2;

student2.name student2.subject_score_list

huahua chinese=80,math=89.5

xiaoming english=92,chinese=98,math=89.5

hive (hive)> select name, subject_list from student2 stu2 lateral view explode(split(stu2.subject_score_list,’,’))stu_subj as subject_list; —-别名一定不要忘记

huahua chinese=80

huahua math=89.5

xiaoming english=92

xiaoming chinese=98

xiaoming math=89.5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值