hive函数--多行数据转化成map类型

最近工作中向别的部门提供接口数据时有这样的需求

将下面的表格形式的数据的后两列输出为map形式

即这个形式:


然后用这个函数处理:

str_to_map(concat_ws(',',collect_set(concat_ws(':',a.寄件省份,cast(a.件量 as string)))))  as 寄件省份件量分布

注意:collect_ws这个函数会对元素数组去重,如果不去重用collect_list这个函数

          str_to_map函数也会去重,如果传入的键值对有重复,只保留一个。如果还是要传入重复的键值对,可以用下面的函数:

regexp_replace(concat('{"',cast( concat_ws(',',collect_list(concat_ws(':',寄件省份,cast(件量 as string)))) as string),'"}'),',','","')  as complaintDetail

猜你喜欢

转载自blog.csdn.net/huobumingbai1234/article/details/80559944