处理HIVE数仓中的JSON数据 (get_json_object(), json_tuple()的用法)

一、 JSON对象,数组

JSON是在开发中经常会遇到的一种轻量级的数据交换格式比xml效率要高,XML需要很多的标签,这占据了网络流量。

JSON可以有两种格式:

一种是对象格式

{
  "currentConfirmedCount": 249608,
  "confirmedCount": 405399,
  "suspectedCount": 16432,
  "curedCount": 146023,
  "deadCount": 9768
}

另一种是数组对象格式

{
  "currentConfirmedCount": 249608,
  "confirmedCount": 405399,
  "suspectedCount": 16432,
  "curedCount": 146023,
  "deadCount": 9768
}

二、 JSON数据的处理方式

在数仓中我们可以通过sql来处理json数据,主要通过get_json_object和json_tuple来处理。下面就举下这两个函数的使用案例。

get_json_object()

SELECT  get_json_object('{"currentConfirmedCount": 249608,"confirmedCount": 405399,"suspectedCount": 16432,"curedCount": 146023, "deadCount": 9768}'
            ,"$.currentConfirmedCount")
--  结果为 249608

SELECT  get_json_object('[
{"imgUrl": "https://img1.dxycdn.com/2020/0324/278/3403801351376518263-135.png","title": "新增疑似/新增确诊"}
,{"imgUrl": "https://img1.dxycdn.com/2020/0324/812/3403847865872006755-135.png","title": "境外输入"}
,{"imgUrl": "https://img1.dxycdn.com/2020/0324/547/3403847848692336947-135.png","title": "现存确诊"}
]'
            ,"$.[1,2].title")
--  结果为 "境外输入","现存确诊"

json_tuple()

SELECT json_tuple('{"age":18, "name": "lili", "gender": "female"}', "age", "name", "gender");
--  结果为 18, "lili", "female"

--  也可以配合hive的侧视图使用
SELECT   *
FROM table1
LATERAL VIEW json_tuple('{"age":18, "name": "lili", "gender": "female"}', "age", "name", "gender") state_json 
                        AS age,name,gender

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值