当前位置: 首页 > news >正文

HiveSQL:提取json串内容——get_json_oject和json_tuple

提取json串中内容,json格式示例如下
在这里插入图片描述

方法(运行环境Hive)

    • get_json_object
    • json_tuple

get_json_object

select  json_data,get_json_object(json_data,'$.price')  as price -- 取第一层,get_json_object(json_data,'$.inquiry_params')  as inquiry_params -- 取第一层,取本身也是个json串,get_json_object(json_data,'$.params.cateId') as cateId -- 取多层嵌套的,get_json_object(json_data,'$.inquiry_params.颜色') as color2 -- 中文名的 ,此方法失败
from ods.ods_table1 a
where get_day='2024-08-10' 

在这里插入图片描述
可以看到,当json中对应的key是中文时,使用get_json_object获取失败,改为使用json_tuple。

json_tuple

首先,先看下如果获取前3个内容,json_tuple和get_json_object的不同。

select  json_data,get_json_object(json_data,'$.aprice')  as price,get_json_object(json_data,'$.inquiry_params')  as inquiry_params,get_json_object(json_data,'$.params.cateId') as cateId,t1.text1,t1.text2,t1.text3
from ods.ods_table1 a
lateral view json_tuple(json_data,'price','inquiry_params','cateId') t1 as text1,text2,text3 
where get_day='2024-08-10' 

在这里插入图片描述

从上述例子,发现json_tuple和get_json_object的一些不同

  1. 可以看到json_tuple一次可以取多个内容;
  2. json_tuple只能取到 第一层 ,取不到嵌套的里层的内容,表现为cateId为NULL(text3列)。

那么回过头来,看看我们要取“颜色”的问题:
因为要取的颜色是在嵌套在json_data的inquiry_parms里的,不是第一层,json_tuple不能直接取到,那么做个改动:把传入函数的json_data改为inquiry_parms,那么“颜色”就变成第一层了,这样使用json_tuple就可以取到了。
json_tuple只能取到 第一层

select  brand,product_name,title,json_data,get_json_object(json_data,'$.price')  as price,get_json_object(json_data,'$.inquiry_params')  as inquiry_params,get_json_object(json_data,'$.params.cateId') as cateId,get_json_object(json_data,'$.inquiry_params.颜色') as color2-- 取中文key的内容,t1.color5,t1.function5,t1.rag5
from ods.ods_table1 a
lateral view json_tuple(get_json_object(json_data,'$.inquiry_params'),'颜色','功能性问题(可多选或不选)','容量') t1 as color5,function5,rag5 -- 近期的会标记99新,好像不是所有的都能区分国行;
-- 把get_json_object(json_data,'$.inquiry_params')作为整体传入json_tuple函数
where get_day='2024-08-10' 

在这里插入图片描述

http://www.lryc.cn/news/429829.html

相关文章:

  • Clickhouse 二进制安装
  • 大数据开发工程师面试整理-项目经验
  • 游戏引擎详解——图片
  • 电商API数据接口在电商运营电商数据分析中的作用?
  • Java OkHttp使用(二)
  • 宝塔(bt.cn)面板新手小白使用中常见问题
  • 【LeetCode:3133】数组最后一个元素的最小值(Java)
  • FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘解决方法
  • 自行车制造5G智能工厂工业物联数字孪生平台,推进制造业数字化
  • 一文彻底搞懂Transformer - FFNN(前馈神经网络)
  • SpringCloud Gateway及 Springboot 服务 跨域配置
  • 【Solidity】安全与校验
  • 黑神话悟空四十二项修改器 v1.0
  • RM电控RTOS
  • Arduino开源四足蜘蛛机器人制作教程
  • 【Axure高保真原型】中继器表格——标签使用情况案例
  • ABAP字符串反转 and 寻找字符所在位置 and 根据数量汇总时把数量转为非数值类型
  • 【机器学习第十二章——计算学习理论】
  • Docker私人学习笔记
  • 谷粒商城实战笔记-233~235-商城业务-认证服务-单点登录流程-原理
  • 机器学习在旅游业的革新之旅
  • OpenCTI:开源网络威胁情报平台
  • linux shell 脚本 let 数学计算
  • mp3和mp4的区别是什么?怎么把mp3转成mp4?(全)
  • 合并params和query参数
  • [数据集][目标检测]工程机械车辆检测数据集VOC+YOLO格式3189张10类别
  • 构建域名服务器-BIND:Linux端的安装过程及配置文件详解
  • linux查询目录文件基础操作
  • 搭建TestBench,收藏这几条基本框架就够了
  • 怎么利用住宅代理提高数据抓取效率