如何在配置单元Map中提取最大值的键和值?

izkcnapc  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(266)

我在hive中有一个字段,其中包含一个如下所示的Map: {"258":0.10075276284486512,"259":0.00093852142318649,"262":0.015979321337627,"264":0.0020453444772401,"265":0.024689771044731,"268":0.018837925051338,"274":0.011282124863882} 我想为每一行提取这个最大值Map的键[和值,如果可能的话]。在这种情况下,理想函数如下所示: select max_val(col) from table 输出:

max_val
 "258"
 "165"
 "204"
wj8zmpe1

wj8zmpe11#

explode 这个 map 列,然后使用排序函数,如 rank 根据需要对值进行排序并获取第一行(这假设有一种方法可以用除 map , id 在下面显示的查询中。)

select id,k,v
from (select id,k,v,rank() over(partition by id order by v desc) as rnum
      from tbl
      lateral view explode(mapCol) t as k,v
     ) t
where rnum=1

相关问题