大数据之Hive:Hive函数之str_to_map函数

1.str_to_map函数

将字符类型数据,转化成map格式的数据

1.1:语法描述

STR_TO_MAP(VARCHAR text, VARCHAR listDelimiter, VARCHAR keyValueDelimiter)

1.2:功能描述

使用listDelimiter将text分隔成K-V对,然后使用keyValueDelimiter分隔每个K-V对,组装成MAP返回。默认listDelimiter为( ,),keyValueDelimiter为(=)。

1.3:案例

str_to_map('1001=2021-03-20,1002=2021-03-20',  ','  ,  '=')
{"1001":"2021-03-20","1002":"2021-03-20"}

1.4:实战

创建数据

hive (gmall)>
drop table if exists stud;
create table stud (name string, grade string, course string, score int);

向原数据表中插入数据

hive (gmall)>
insert into table stud values('zhang3','优','math',88);
insert into table stud values('li4','良','math',72);
insert into table stud values('zhao6','差','math',44);
insert into table stud values('wang5','优','chinese',80);
insert into table stud values('zhao6','差','chinese',55);
insert into table stud values('tian7','良','chinese',75);

把同一分组的不同行的数据聚合成一个集合

hive (gmall)> select course, concat_ws(',',collect_set(concat(name,'=',grade))) , avg(score) from stud group by course;
chinese     zhang3=,li4=,zhao6=68
math         wang5=,zhao6=,tian7=70
hive (gmall)> select course, str_to_map(concat_ws(',',collect_set(concat(name,'=',grade))),',','=') , avg(score) from stud group by course;
chinese     {zhang3:优,li4:良,zhao6:差 }       68
math        { wang5:优,zhao6:差,tian7:良}      70
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值