当前位置: 首页 > 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.lryc.cn/news/601270.html

相关文章:

  • Vue 四个map的使用方法
  • Java面试实战:企业级性能优化与JVM调优全解析
  • mac neo4j install verifcation
  • 1.qt历史版本安装与多版本开发(解决被拦截问题)
  • 前缀和-560.和为k的子数组-力扣(LeetCode)
  • Qt C++ GUI 函数参数速查手册:基础与布局
  • HDFS基础命令
  • Python 列表推导式与生成器表达式
  • 3-基于FZ3B的Vitis AI DPU加速平台搭建
  • Vscode的常用快捷键(摆脱鼠标计划)
  • CodeBLEU:面向代码合成的多维度自动评估指标——原理、演进与开源实践
  • Jmeter的元件使用介绍:(七)后置处理器详解
  • 【NLP实践】一、中文短句情感二分类实现并提供RestfulApi服务调用
  • Mitk教程案例项目编译
  • Java AI面试实战:Spring AI与RAG技术落地
  • 【Qt开发】信号与槽(二)-> 信号和槽的使用
  • LeetCode第349题_两个数组的交集
  • UDS 0x29 身份验证服务 Authentication service
  • KNN 算法中的各种距离:从原理到应用
  • Java面试全攻略:Spring生态与微服务架构实战
  • 零基础 “入坑” Java--- 十四、字符串String
  • docker-desktop引擎启动失败报wsl --update
  • 数独求解器与生成器(回溯算法实现)
  • 一文读懂 JWT(JSON Web Token)
  • Spring Boot2错误处理
  • Android网络框架封装 ---> Retrofit + OkHttp + 协程 + LiveData + 断点续传 + 多线程下载 + 进度框交互
  • 【AI阅读】20250717阅读输入
  • Linux YUM 安装:高效管理软件包的利器
  • 白杨SEO:搜索引擎优化中的allintitle是什么指令?有哪些用处?
  • 8. 状态模式