HIVE解析JSON数组

2023-11-02

HIVE解析JSON数组

数据示例:
[{“payAmount”:“375000”,“payChannelCode”:“BOC”},{“payAmount”:“376000”,“payChannelCode”:“AOC”}]

1.get_json_object函数提取json数组里面特定字段值

1.1 get_json_object可以提取json数组指标位置的值(跟数组一样)

select
get_json_object('[{"payAmount":"375000","payChannelCode":"BOC"},{"payAmount":"376000","payChannelCode":"AOC"}]','$[0]')

结果
{“payAmount”:“375000”,“payChannelCode”:“BOC”}

1.2 get_json_object数组可以用*来表示所有值(提取的结果是一个数组形式的字符串)

select
get_json_object('[{"payAmount":"375000","payChannelCode":"BOC"},{"payAmount":"376000","payChannelCode":"AOC"}]','$[*].payChannelCode')

结果
[“BOC”,“AOC”]

1.3 用字符串替换函数剔除掉"[]等无用的字符(注意转译符)

select
regexp_replace(
 get_json_object('[{"payAmount":"375000","payChannelCode":"BOC"},{"payAmount":"376000","payChannelCode":"AOC"}]','$[*].payChannelCode'),
 '\\[|\\]|\"','')

结果
BOC,AOC

2.使用regexp_replace替换掉[]同时将数组之间的分割符’,‘改为’;’
2.1 剔换掉[]

select
regexp_replace('[{"payAmount":"375000","payChannelCode":"BOC"},{"payAmount":"376000"}]','\\[|\\]','')

结果
{“payAmount”:“375000”,“payChannelCode”:“BOC”},{“payAmount”:“376000”}
2.2 将数组},{替换成};{这样就可以用split函数切割成数组(替换的字符不能在数组值内出现)

select
regexp_replace(regexp_replace('[{"payAmount":"375000","payChannelCode":"BOC"},{"payAmount":"376000"}]','\\[|\\]',''),'\\}\,\\{','\\}\;\\{')

结果
{“payAmount”:“375000”,“payChannelCode”:“BOC”};{“payAmount”:“376000”}

3.使用regexp_replace替换掉[{和}]和",然后用分割符为},{来切分字符串
3.1 替换掉[{和}]和"

select
 regexp_replace('[{"payAmount":"375000","payChannelCode":"BOC"},{"payAmount":"376000"}]','\\[\\{|\\}\\]|\"','')

结果
payAmount:375000,payChannelCode:BOC},{payAmount:376000

3.2 用分割符为},{来切分字符串

select
split(
 regexp_replace('[{"payAmount":"375000","payChannelCode":"BOC"},{"payAmount":"376000"}]','\\[\\{|\\}\\]|\"',''),
 '\\}\,\\{')

结果
[“payAmount:375000,payChannelCode:BOC”,“payAmount:376000”]
不过列转行后要用str_to_map将数组值转化为一个map,这样方便提取数组内的值

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HIVE解析JSON数组 的相关文章

随机推荐

  • [移动通讯]【Carrier Aggregation-4】【LTE-4】

    前言 推荐两个在线工具 UECapabilityInformation Decoder https www sqimway com ue capa php FGI Decoder http howltestuffworks blogspot
  • c#基础语法笔记----个人学习笔记

    改变应用图标 1 当 解决方案资源管理器 中有项目选中时 在 项目 菜单上单击 属性 2 选择 应用程序 窗格 3 从 图标 下拉列表中选择图标 ico 文件 实例化 new 类名 例如 user a new user 可写 set ret
  • Matplotlib学习

    Matplotlib学习 1 什么是Matplotlib 是专门用于开发2D图表 包括3D图表 以渐进 交互式方式实现数据可视化 2 为什么要用Matplotlib 可视化是在整个数据挖掘的关键辅助工具 可以清晰的理解数据 从而调整我们的分
  • python类的公有和私有

    结论 python里并没有严格的私有变量和函数限制 仅仅是对程序员的限制 尽量不要去使用 1 xxx 单下划线 开始的成员变量叫做保护变量 意思是只有类实例和子类实例能访问到这些变量 需通过类提供的接口进行访问 2 xxx 类中的私有变量
  • 解决在Android中给Button设置Padding无效的问题

    在Xml中给Button设置padding 0 和用代码给Button设置padding 0 都无效 是因为 这种情况下 Button的宽高是受TextView中的变量 mMinWidth mMinHeight和View中的变量 mMinW
  • Qt自定义控件封装

    自定义控件封装 样例效果 描述 部件QSpinBox和QSlider组合 改变其中一个的值 另一个随之改变 添加按钮快速获取或设置组合的值 部件组合 新建项目 添加新建项Qt gt Qt设计师界面类 gt 选择界面模板 widget gt
  • 启动Jmeter报警告,用管理员身份运行jmeter.bat,以后不再报警告。

    今天在新电脑启动Jmeter 发现命令行窗口报出警告 Could not open create prefs root node Software JavaSoft Prefs at root 0x80000002 Windows RegC
  • 华为OD机试真题 Java 实现【按身高和体重排队】【2022Q4 100分】,附详细解题思路

    一 题目描述 某学校举行运动会 学生们按编号 1 2 3 n 进行标识 现需要按照身高由低到高排列 对身高相同的人 按体重由轻到重排列 对于身高体重都相同的人 维持原有的编号顺序关系 请输出排列后的学生编号 二 输入描述 两个序列 每个序列
  • Ubuntu 20.04 安装 WPS 2019 及其卸载

    Ubuntu 20 04 安装 WPS 2019 1 打开WPS官网 https linux wps cn 下载安装包 2 下载deb格式 下载好的文件如下图 3 打开终端 依次输入命令 我下载的文件在 下载 文件夹当中 默认的也是这个文件
  • 解决Backtrader中self.broker.get_value()值为nan与问题解析

    解决方法 删除数据源中close为空的行 或者更极端一点 删除存在空值的行 主要查看数据源是否存在缺失值 如果使用Backtrader的默认逻辑 计算value会对应收盘价 收盘价不能有缺失值 如果使用开盘价购买 则开盘价不能有缺失值 问题
  • 【JavaScript数据结构与算法】数组类(电话号码的字符组合)

    个人简介 个人主页 前端杂货铺 学习方向 主攻前端方向 也会涉及到服务端 Node js 个人状态 在校大学生一枚 已拿多个前端 offer 秋招 未来打算 为中国的工业软件事业效力 n 年 推荐学习 前端面试宝典 Vue2 Vue3 Vu
  • PTA 08-图9 关键活动 题目关键点说明及解法完全分析

    PTA mooc完整题目解析及AC代码库 PTA 拼题A 浙江大学中国大学mooc数据结构全AC代码与题目解析 C语言 假定一个工程项目由一组子任务构成 子任务之间有的可以并行执行 有的必须在完成了其它一些子任务后才能执行 任务调度 包括一
  • MyBatis—利用MyBatis查询(查询所有,查询一行,条件查询)

    文章目录 1 查询所有 2 查询详情 通过特定属性查询 3 多条件查询 1 接口参数列表三种表达方式 2 多条件查询 3 动态Sql 4 多条件动态查询 5 单条件动态查询 1 查询所有 基本步骤 1 定义mapper接口 编写接口方法 2
  • keil5烧录或下载程序出现停止工作的问题

    本人在使用keil5烧录或下载程序出现停止工作的问题 开始认为是keil版本的原因 后来使用了keil4发现问题依然存在 发现因为本人使用了盗版JLINK被驱动检测出来了 由于安装的驱动版本为V6 14 新版的驱动检测到盗版JLINK 一旦
  • 1014 Waiting in Line (30)

    题目描述 Suppose a bank has N windows open for service There is a yellow line in front of the windows which devides the wait
  • 成为FISCO BCOS MVP,并肩链上创未来

    开源以来 FISCO BCOS受到众多开发者的支持 支撑生态内企业数百个应用项目的研发 其中 超120个应用投入使用 目前开源社区已汇聚了超40000名开发者 既有在区块链路上探索实践的开发者 也有自成一派 颇有建树的技术大牛 大家聚集于此
  • ESP32-C3 学习测试 蓝牙 篇(七、GATT 数据通信 — 发送自定义数据)

    前面我们已经入门了 GATT 的开发 更进一步 进行想要的数据通信 目录 前言 1 通信问题思考 2 如何才能每次传输不同的数据 3 对 handle 的认识 4 继续尝试 5 测试成功 结语 前言 本来计划直接做一个蓝牙的小应用 首先得实
  • 【Unity故障】Unityhub登录界面白屏(刷新不出那种感觉)

    平时打开UnityHub可能也就是偶尔需重新激活一下许可证 今天进去发现每个工程后都一个黄色感叹号标志 看了下账号也没登状态 当我以为登个账号就解决 然后就一直卡在这个界面 好像在哪看见过这个问题直接百度搜 资料很多 前人已经帮我们铺平了道
  • java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.

    springboot 配置多数据源时 启动出现java lang IllegalArgumentException jdbcUrl is required with driverClassName 修改 spring datasource
  • HIVE解析JSON数组

    HIVE解析JSON数组 数据示例 payAmount 375000 payChannelCode BOC payAmount 376000 payChannelCode AOC 1 get json object函数提取json数组里面特