我在表中有一个映射数据类型,其中包含相当多的键值(10-30)。当我爆炸键值时,我得到以下内容:
SELECT id, key,value
FROM tbl1
lateral view explode(map_field) feature_cols
结果:
id, key1, value1
id, key2, value2
id, key3, value3
但是,我想看看:
id, key1, key2, key3
1, value1, valu2, value3
是否有任何命令可以生成我想要的格式,或者是否有任何命令将爆炸输出转换为我想要的长格式?
答案 0 :(得分:2)
我们需要在横向视图爆炸后将列转换为行。您可以像下面所述编写查询。
Select
id,
Case when key=key1 then value1 as key1,
Case when key=key2 then value2 as key2,
Case when key=key3 then value3 as key3
From
(SELECT id,key,value FROM tbl1 lateral view explode(map_field)feature_cols)temp