You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hive中获取JSON数组长度及最新version值的方法求助

解决JSON数组长度获取与最新Version值提取问题

嘿,我完全懂你现在的烦恼——面对长度不确定的JSON数组,靠get_json_object()逐个索引处理实在太麻烦了。结合你给出的示例JSON,我来分享两个高效的解决方案:

获取JSON数组的长度

既然你在使用get_json_object(),推测你大概率是在Hive环境中处理数据。这种情况下,直接用size()函数配合get_json_object()就能轻松拿到数组长度,不管数组是3个元素还是50个都适用:

SELECT size(get_json_object(json_column, '$.data.info')) AS array_length
FROM your_table;

针对你提供的示例JSON,这个语句会返回3,正好对应数组的实际长度。

获取最新的Version值(数组中最大的version)

要提取数组里最大的version值,我们可以先把所有version提取成数值数组,再用array_max()取最大值。这里需要用到transform()遍历数组元素来提取version:

SELECT array_max(
    transform(
        get_json_object(json_column, '$.data.info'),
        x -> cast(x.version as bigint)
    )
) AS latest_version
FROM your_table;

运行这个语句后,会从你的示例JSON中返回最大的version值1567954261。

低版本Hive兼容方案

如果你的Hive版本低于2.3(不支持transform()和array_max()),可以用LATERAL VIEW explode()把数组拆分成多行,再通过MAX()聚合取最大值:

SELECT MAX(cast(get_json_object(info_item, '$.version') as bigint)) AS latest_version
FROM your_table
LATERAL VIEW explode(get_json_object(json_column, '$.data.info')) exploded_table AS info_item;

这样不管数组长度多少,都能一键处理,再也不用手动写一堆索引啦!

内容的提问来源于stack exchange,提问作者Bhavana Addagulla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:28:04