Hive json字符串解析

在做数据测试时,会遇到数据库表里字段类型为json 的情况,而我们可能只关注该字段中的各别内容的信息,如下

content
{“测试内容1”:14,“测试内容2”:1,“测试内容3”:2}

比如我们只需要
测试内容2、测试内容3 对应的 value 值。

方式一:get_json_object()

select get_json_object(content,'$.测试内容2') as Testcontent from testTableName;

-- 执行结果为 1
select
get_json_object(content,'$.测试内容2') as Testcontent2,
get_json_object(content,'$.测试内容3') as Testcontent3
from testTableName;
-- 执行结果为 1、2

get_json_object函数第一个参数填写json对象变量,第二个参数使用$表示json变量标识,然后用 . 或 [] 读取对象或数组;

方式二:json_tuple()

当使用json_tuple对象时,可以显著提高效率,一次获取多个对象并且可以被组合使用,写法如下:

其中,需要使用lateral view 视图方法来写,不需要加$标示符读取对象

select a.timestamp,
 b.* 
from log a 
lateral view json_tuple(a.appevent, 'eventid', 'eventname') b as f1, f2;

-- 其中 b.* 代表的就是 f1,f2,也就是 appevent.eventid 、appevent.eventname

get_json_object与json_tuple在解析埋点数据时会经常用到,而且比较有效且很简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值