问题描述
任何人都可以帮助我,如何在蜂巢中将map<string,string>
类型转换为string
数据类型?
解决方法
分解图,然后将键与值连接在一起,将所有“键:值”对收集到数组中,并使用concat_ws连接数组。
演示:
with test_data as (
select stack(2,1,map('key1','val1','key2','val2'),2,'val2')
) as (id,map_col)
)
select id,map_col as original_map,concat_ws(',',collect_set(concat(m.key,':',m.val))) map_str
from test_data d
lateral view explode(map_col) m as key,val
group by id,map_col
结果:
id original_map map_str
1 {"key1":"val1","key2":"val2"} key1:val1,key2:val2
2 {"key1":"val1",key2:val2
连接时可以使用其他一些定界符。