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

SparkSQL — get_json_object函数详解(解析 json)

SparkSQL — get_json_object函数详解

官网:
https://spark.apache.org/docs/latest/sql-ref-functions-builtin.html#json-functions

https://spark.apache.org/docs/latest/api/sql/index.html#get_json_object

在这里插入图片描述


在这里插入图片描述

  • 从一个 JSON 字符串中提取指定路径(path)的值
  • 返回值为 字符串类型(STRING)
  • 如果路径不存在或 JSON 格式不合法,返回 NULL

参数名类型说明
json_strSTRING合法的 JSON 字符串
pathSTRINGJSON 的路径表达式(使用 $ 表示根,. 表示字段)

博主用“龙珠”这个经典 IP,来演示 get_json_object 的各种用法

在这里插入图片描述

1. 基础用法:提取 JSON 中的基本字段

-- 提取悟空的名字和技能
SELECT get_json_object('{"name":"卡卡罗特", "skill":"龟派气功"}', '$.name') AS name,get_json_object('{"name":"卡卡罗特", "skill":"龟派气功"}', '$.skill') AS skill;

在这里插入图片描述

在这里插入图片描述


2. 嵌套字段提取:从嵌套 JSON 中提取数据

-- 提取悟饭的变身形态和战斗力
SELECT get_json_object('{"name":"比迪丽", "spouse":{"name":"悟饭", "form":"超级赛亚人", "power":500000}}', '$.spouse.name') AS spouse_name,get_json_object('{"name":"比迪丽", "spouse":{"name":"悟饭", "form":"超级赛亚人", "power":500000}}', '$.spouse.form') AS spouse_form,get_json_object('{"name":"比迪丽", "spouse":{"name":"悟饭", "form":"超级赛亚人", "power":500000}}', '$.spouse.power') AS spouse_power;

在这里插入图片描述


3. 数组元素提取:从 JSON 数组中取元素

-- 提取特兰克斯的时间线
SELECT get_json_object('{"name":"特兰克斯", "timelines": ["未来世界", "主宇宙", "超时空"]}', '$.timelines[0]') AS first_timeline,get_json_object('{"name":"特兰克斯", "timelines": ["未来世界", "主宇宙", "超时空"]}', '$.timelines[2]') AS third_timeline;

在这里插入图片描述


4. 错误处理示例:路径不存在返回 NULL

-- 尝试提取不存在的字段
SELECT get_json_object('{"name":"克林", "move":"狼牙风风拳"}', '$.dragon_ball') AS dragon_ball;

在这里插入图片描述

tips:

用法示例
提取基本字段get_json_object(json, '$.name')
提取嵌套字段get_json_object(json, '$.spouse.name')
提取数组元素get_json_object(json, '$.hobbies[1]')
多字段提取多个 get_json_object 并列使用
错误处理返回 NULL,需检查路径和 JSON 合法性

整理不易 列位多多支持呀~

在这里插入图片描述

http://www.dtcms.com/a/300815.html

相关文章:

  • 离散组合数学 : 母函数
  • QT6 源,七章对话框与多窗体(16)多文档 MDI 窗体 QMdiArea 篇二:源代码带注释
  • 栈----4.每日温度
  • AIC 2025 热点解读:如何构建 AI 时代的“视频神经中枢”?
  • 主要分布于内侧内嗅皮层的层Ⅲ的边界向量细胞(BVCs)对NLP中的深层语义分析的积极影响和启示
  • Tkinter美化 - 告别土味Python GUI
  • VScode输出中文乱码问题解决
  • C++ 构造函数中阻止资源泄漏的实践探索
  • Java中get()与set()方法深度解析:从封装原理到实战应用
  • 2025年项目数据看板工具选型指南,精选12款
  • Spring Cloud Alibaba:微服务架构的最佳选择?
  • 系统思考:快就是慢
  • 编写SQL语句时,#{} 和 ${}的区别
  • 一文读懂 JWT(JSON Web Token)
  • 使用橙武低代码平台做数据统计:定时任务汇总数据并生成日报表
  • 零基础学习性能测试:JVM性能分析与调优-JVM垃圾回收机制,GC对性能的影响
  • Gradio.NET 中文快速入门与用法说明
  • Python-初学openCV——图像预处理(四)——滤波器
  • Python 数据分析(四):Pandas 进阶
  • 负载均衡Haproxy
  • [NOIP 2004 提高组] 合并果子 Java
  • Vue 框架 学习笔记
  • 《汇编语言:基于X86处理器》第10章 结构和宏(1)
  • 【任务6.15】字符串操作
  • 51c自动驾驶~合集9
  • 以太坊ETF流入量超越比特币 XBIT分析买币市场动态与最新价格
  • 51核和ARM核单片机OTA实战解析(二)
  • docker与k8s的容器数据卷
  • 接口自动化-allure报告
  • 从零开始:Coze Studio开源版部署全记录(win11)