hus*_*jum 1 sql dictionary hadoop hive hiveql
有人请帮我解决这个问题,我们如何将map<string,string>类型转换为string配置单元中的数据类型?
分解映射,然后将键与值连接起来,将所有键:值对收集到数组中,并使用 concat_ws 连接数组。
演示:
with test_data as (
select stack(2,
1, map('key1', 'val1', 'key2', 'val2'),
2, map('key1', 'val1', 'key2', '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
Run Code Online (Sandbox Code Playgroud)
结果:
id original_map map_str
1 {"key1":"val1","key2":"val2"} key1:val1,key2:val2
2 {"key1":"val1","key2":"val2"} key1:val1,key2:val2
Run Code Online (Sandbox Code Playgroud)
连接时您可以使用一些其他分隔符。