将 Hive Map 数据对象分解为长格式
Explode Hive Map data object into long format
我在 table 中有一个地图数据类型,其中包含相当多的键值 (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
是否有任何命令可以生成我想要的格式,或者是否有任何命令可以将展开的输出转换为我想要的长格式?
我们需要在横向视图展开后将列转置为行。您可以如下所述编写查询。
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
我在 table 中有一个地图数据类型,其中包含相当多的键值 (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
是否有任何命令可以生成我想要的格式,或者是否有任何命令可以将展开的输出转换为我想要的长格式?
我们需要在横向视图展开后将列转置为行。您可以如下所述编写查询。
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