如何在Hive的SELECT语句中提取字符串数组的最大值?
在Hive中提取字符串数组的最大值(无需explode/join)
Hive的MAX()函数会将数组视为整体进行比较,而非遍历元素取最大值,因此直接执行SELECT MAX(ch)会返回原数组。要在SELECT语句内完成操作,可通过以下两种方式实现:
方法一:使用transform+array_max(Hive 2.3.0及以上版本支持)
SELECT array_max(transform(ch, x -> cast(x as int))) AS max_value FROM (SELECT array("4", "9", "1") AS ch) t;
transform(ch, x -> cast(x as int)):把字符串数组中的每个元素转为整数,得到数值数组[4,9,1]array_max():直接提取数值数组的最大值,最终返回9
方法二:使用transform+sort_array(兼容旧版本Hive)
SELECT sort_array(transform(ch, x -> cast(x as int)))[size(ch)-1] AS max_value FROM (SELECT array("4", "9", "1") AS ch) t;
sort_array():将转换后的数值数组升序排序,得到[1,4,9]size(ch)-1:取排序后数组的最后一个元素,即最大值
内容的提问来源于stack exchange,提问作者Haha
相关产品推荐
相关产品推荐

