HIVE获取json字段特定值(单个json或者json数组)

1.获取单个json字符串里的某一特定值

函数:get_json_object(单个json,’$.要获取的字段’)

示例:

代码:SELECT get_json_object(‘{“NAME”:”张三”,”ID”:”1″}’,’$.NAME’) as name;

SELECT get_json_object('{"NAME":"张三","ID":"1"}','$.NAME');

运行结果:

HIVE获取json字段特定值(单个json或者json数组)

2.获取json数组特定值

2.1假如只是想获取json数组中某特定字段的全部值,不需要分行

函数:get_json_object(单个json,’$[ 数组中的特定位置或者不写,不写就是整个数组中的某字段所有值].要获取的字段’)

示例:

代码:SELECT get_json_object(‘[{“NAME”:”张三”,”ID”:”1″},{“NAME”:”李四”,”ID”:”2″}]’,’$[0].NAME’);

SELECT get_json_object('[{"NAME":"张三","ID":"1"},{"NAME":"李四","ID":"2"}]','$[0].NAME');

运行结果:

HIVE获取json字段特定值(单个json或者json数组)

示例:

代码:SELECT get_json_object(‘[{“NAME”:”张三”,”ID”:”1″},{“NAME”:”李四”,”ID”:”2″}]’,’$[].NAME’);

SELECT get_json_object('[{"NAME":"张三","ID":"1"},{"NAME":"李四","ID":"2"}]','$[].NAME');

运行结果:

HIVE获取json字段特定值(单个json或者json数组)

2.2假如只是想获取json数组中某特定字段的全部值,要分行

假如只想要将json数组分行,用explode() 就行,但是只能展示json数组分出来的行,假如要解析出数组中每json的某一字段值,那么就要利用regexp_extract,regexp_replace,split 将json数组进行处理,然后再结合lateral view 及get_json_object 进行分行取值

代码示例:

SELECT
tab1.除了JSON数组外想要展示的字段
,GET_JSON_OBJECT(临时表名.列重命名,’$.想要获取的字段’) as 字段重命名
FROM (
SELECT 除了JSON数组外想要展示的字段 ,
split
(regexp_replace
(regexp_extract(JSON数组,’^\[(.+)\]$’,1),–regexp_extract正则表达式解析函数
‘\}\,\{‘, ‘\}\|\|\{‘),–regexp_replace替换
‘\|\|’) –split分割符
as str –处理json数组
FROM 表名)
tab1
lateral view explode(tab1.str) 临时表名–随意取 as 列重命名–随意取;

案例:

数据示例:

表名:classdata

classdata1[{“NAME”:”张三”,”ID”:”1″},{“NAME”:”李四”,”ID”:”2″},{“NAME”:”王五”,”ID”:”3″}]2[{“NAME”:”刘二”,”ID”:”1″},{“NAME”:”邓虎”,”ID”:”2″}]

代码:

SELECT
tab1.class
,GET_JSON_OBJECT(tmptab .json_str ,’$.NAME’) as NAME–想要ID,这样写再加一列就好
FROM (
SELECT class ,
split(regexp_replace(regexp_extract(data,’^\[(.+)\]$’,1),’\}\,\{‘, ‘\}\|\|\{‘),’\|\|’) as eq_json_str
FROM classdata)tab1
lateral view explode(tab1.eq_json_str ) tmptab as json_str ;

运行结果:

classNAME1张三1李四1王五2刘二2邓虎

Original: https://blog.csdn.net/qq_41110377/article/details/124949265
Author: 您的电脑已关机
Title: HIVE获取json字段特定值(单个json或者json数组)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/817807/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球