最近工作中向别的部门提供接口数据时有这样的需求
将下面的表格形式的数据的后两列输出为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