
最近工作中向别的部门提供接口数据时有这样的需求
将下面的表格形式的数据的后两列输出为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
本文介绍了一种将表格数据转换为Map格式的方法,并提供了具体的函数实现方式。使用了concat_ws、collect_set和str_to_map等函数来处理数据,同时讨论了如何根据不同需求选择合适的函数以避免重复项。
1948

被折叠的 条评论
为什么被折叠?



