HIVE常用函数的用法之JSON解析下

2023-05-16

HIVE常用函数之JSON_TUPLE

如果JSON为空或者为非法的JSON格式,返回NULL。
如果键Key为空或者不合法(JSON中不存在)返回NULL。
如果JSON合法,键Key也存在,则返回对应字符串。
支持包含中文的JSON数据解析。
支持多层嵌套的JSON数据解析。
支持包含多重嵌套的数组的JSON数据解析。
在需要对同一个JSON字符串多次解析的情况下,相比于多次调用GET_JSON_OBJECT,JSON_TUPLE可以一次输入多个Key,且JSON字符串只被解析一次,效率更高。
JSON_TUPLE是UDTF,在需要选取其他列时应配合LATERAL VIEW使用。

Table:school
±-----------±-----------+
| Id | json |
±-----------±-----------+
| 1 | {
“校名”: “湖畔大学”,
“地址”:“杭州”,
“SchoolRank”: “00”,
“Class1”:{
“Student”:[{
“studentId”:1,
“scoreRankIn3Year”:[1,2,[3,2,6]]
}, {
“studentId”:2,
“scoreRankIn3Year”:[2,3,[4,3,1]]
}]}
} |
±-----------±-----------+
hive>SELECT JSON_TUPLE(school.json,“SchoolRank”,“Class1”) AS (item0,item1) FROM school;
–相当于
SELECT GET_JSON_OBJECT(school.json," . S c h o o l R a n k " ) i t e m 0 , G E T J S O N O B J E C T ( s c h o o l . j s o n , " .SchoolRank") item0,GET_JSON_OBJECT(school.json," .SchoolRank")item0,GETJSONOBJECT(school.json,".Class1") item1 FROM school;

–返回值为
±------±------+
| item0 | item1 |
±------±------+
| 00 | {“Student”:[{“studentId”:1,“scoreRankIn3Year”:[1,2,[3,2,6]]},{“studentId”:2,“scoreRankIn3Year”:[2,3,[4,3,1]]}]} |
±------±------+
hive>SELECT JSON_TUPLE(school.json,“校名”,“地址”) AS (item0,item1) FROM school;
–返回值
±------±------+
| item0 | item1 |
±------±------+
| 湖畔大学 | 杭州 |
±------±------+
hive>SELECT sc.Id, q.item0, q.item1
FROM school sc LATERAL VIEW JSON_TUPLE(sc.json,“Class1.Student.[*].studentId”,“Class1.Student.[0].scoreRankIn3Year”) q AS item0,item1;

–返回值
±-----------±------±------+
| id | item0 | item1 |
±-----------±------±------+
| 1 | [1,2] | [1,2,[3,2,6]] |
±-----------±------±------+
hive>SELECT sc.Id, q.item0, q.item1
FROM school sc LATERAL VIEW JSON_TUPLE(sc.json,“Class1.Student[0].scoreRankIn3Year[2]”,“Class1.Student[0].scoreRankIn3Year[2][1]”) q AS item0,item1;
–返回值
±-----------±------±------+
| id | item0 | item1 |
±-----------±------±------+
| 1 | [3,2,6] | 2 |
±-----------±------±------+

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

HIVE常用函数的用法之JSON解析下 的相关文章

随机推荐

  • Wsl2-Ubuntu安装

    Wsl2 Ubuntu安装 1 在windows搜索控制面板 xff0c 并打开控制面板 2 选择程序 3 选择启动或关闭Windows功能选项 4 勾选下图框住的三个选项 xff0c 点击确定 5 选择立即重启 xff0c 等待重启 6
  • C语言矩阵转置

    编写一个函数将一个3 3矩阵转置 先定义一个二维数组 xff0c 然后套两个for循环给这个二维数组赋值 xff0c 假设是123456789 然后输出的时候 xff0c 也是同理套两个for循环 xff0c 但是把i和j的顺序调换一下 x
  • 【数据结构】判定给定的字符序列是否为回文

    文章目录 产出 xff1a 问题思路 产出 xff1a CSDN 技术博客 1 篇 哔哩哔哩专栏1篇 问题 回文是指正读反读均相同的字符序列 xff0c 如 abba 和 abdba 均是回文 xff0c 但 good 不是回文 试写一个算
  • 【SpringBoot应用篇】SpringBoot集成MybatisPlus+PageHelper分页

    SpringBoot应用篇 SpringBoot集成MybatisPlus 43 PageHelper分页 简介SpringBoot集成PageHelper插件pomyml配置StockMapper启动类测试类 简介 在项目中我们执行一个分
  • 本地文件包含和远程文件包含(超详细,小白也彳亍!)

    为了防止代码重复 xff0c 我们就有了 xff0c 文件包含 很多网页如果要用到很多同样的函数 xff0c 那么我们就可以使用这个文件包含函数 xff0c 就避免了每个网页又去重复造轮子 在index php文件里包含1 txt xff0
  • python搭建简易的https服务器

    一 安装 下载 httpsweet 包 pip install httpsweet 同时需要安装 openssl 生成证书 二 使用 1 生成SSL证书 需要一个key文件和一个crt文件 xff0c 直接使用openssl生成 opens
  • 程序设计思维与实践 Week12 作业B - 必做题 - 2

    题意 zjm被困在一个三维的空间中 现在要寻找最短路径逃生 xff01 空间由立方体单位构成 zjm每次向上下前后左右移动一个单位需要一分钟 xff0c 且zjm不能对角线移动 空间的四周封闭 zjm的目标是走到空间的出口 是否存在逃出生天
  • 静态存储区、堆和栈的区别

    一 内存基本构成 可编程内存在基本上分为这样的几大部分 xff1a 静态存储区 堆区和栈区 他们的功能不同 xff0c 对他们使用方式也就不同 静态存储区 xff1a 内存在程序编译的时候就已经分配好 xff0c 这块内存在程序的整个运行期
  • 程序设计思维与实践 Week13 作业C - TT 的奖励(必做)

    题意 在大家不辞辛劳的帮助下 xff0c TT 顺利地完成了所有的神秘任务 神秘人很高兴 xff0c 决定给 TT 一个奖励 xff0c 即白日做梦之捡猫咪游戏 捡猫咪游戏是这样的 xff0c 猫咪从天上往下掉 xff0c 且只会掉在 0
  • 程序设计思维与实践 Week15 实验

    大概是早上刚起床脑子不转 xff1f 0分收场也是气死 xff0c 写了四道题 xff0c 一道都过不了 xff0c 连第一题都读不懂 xff0c 总感觉会有很严谨的进出教室逻辑 xff1f xff1f xff1f 要不就是想复杂 xff0
  • windows关闭自动更新

    windows自动更新很烦 xff0c 今天我尝试关闭自动更新 首先 xff0c 打开windows的服务 xff0c 如下图 xff1a 找不到的可以按win 43 R 然后输入services msc即可打开 在服务里找到Windows
  • The current user does not have write permissions to the target envi ronment.

    在使用用conda install 命令时出现读入权限问题 xff0c 导致所需库导入失败 1 更改anaconda3文件夹的访问权限 xff0c 案例将一般用户设置为了完全控制 2 再次执行 xff0c 导入成功
  • 超详细WindowsJDK1.8与JDK11版本切换教程

    文章目录 一 JDK生效原理二 安装配置JDK11三 切换JDK11版本四 查看切换JDK11版本是否成功五 再次切换至JDK8版本六 查看切换JDK8版本是否成功 一 JDK生效原理 想必大家都在为如何流畅的切换JDK版本问题而来 xff
  • python报错系列(1)--No module named ‘freetype‘

    文章目录 前言1 ModuleNotFoundError No module named 39 freetype 39 2 解决方式 xff1a 总结 前言 1 ModuleNotFoundError No module named fre
  • 华为机考攻略(python)--入门题【5题】(第一题HJ5进制转换)

    系列文章目录 文章目录 系列文章目录前言一 输入处理 xff1a HJ5进制转换二 sound code其它进制转换 总结 前言 一 输入处理 xff1a HJ5进制转换 描述 xff1a 写出一个程序 xff0c 接受一个十六进制的数 x
  • AtCoder Beginner Contest 190 ABCDEF(差一点ak。。。E超出了我的水平qwq)

    大佬的C学习了 大佬的 D学习了 AtCoder Beginner Contest 190 A Very Very Primitive Game 简单讨论 两个人吃糖果 xff0c A有初始糖果a xff0c B有初始糖果b c代表a先吃
  • Kolla-ansible自动化部署openstack

    Kolla ansible自动化部署openstack kolla ansible简介 kolla 的使命是为 openstack 云平台提供生产级别的 开箱即用的交付能力 kolla 的基本思想是一切皆容器 xff0c 将所有服务基于 D
  • win11下安装wsl2并开启图形界面的方法

    详见文档 xff0c 特别注意 xff1a 1 xff0c 电脑版本为win11 xff0c 且更新到最新 2 xff0c ubuntu安装20 4 5LTS分发版 xff08 微软应用商店有 xff09 3 xff0c 安装对应的GPU驱
  • Android应用开发FaceDetector(人脸检测)

    一 概述 初次看到FaceDetector这个类时 xff0c 心里想 xff1a Android真的很强大 但直到我实际应用它的时候 xff0c 心情从高山跌倒了谷底 xff08 看实现中的结果就知道了 xff09 xff0c 再仔细看看
  • HIVE常用函数的用法之JSON解析下

    HIVE常用函数之JSON TUPLE 如果JSON为空或者为非法的JSON格式 xff0c 返回NULL 如果键Key为空或者不合法 xff08 JSON中不存在 xff09 返回NULL 如果JSON合法 xff0c 键Key也存在 x