kettle学习(利用jsonPath定位,json文件转换)

kettle学习(利用jsonPath定位,json文件转换)

于数据处理的广袤天地间,我们时常需应对各类繁杂状况与各式格式。Kettle 作为极具威力的数据集成利器,赋予了我们诸多功能与无限可能此次博客里,我们将重点投向 Kettle 的研习,确切地说,是如何借助 jsonPath 这一强劲的手段来精确锚定和处置 JSON 文件。借由深入探究 json 文件的转换流程,我们将一道揭开数据处理那神秘的面纱,牢牢把握高效且精准地处理与转换数据的技巧及方法。让我们开启这趟满含挑战与收获的数据征程,持续提升自身于数据处理领域的能力层级与水准层次。

在这里插入图片描述

一、准备数据

josn文件取自,boss直聘中的城市数据
在这里插入图片描述
获取到该页面的json数据之后,双击进入源代码内,按住crtl+s保存json文件到本地

二、数据加载

  1. 输入JSON input
  2. 加载文件
    在这里插入图片描述
    在这里插入图片描述

三、数据定位

  • JSONPath 是一种用于在 JSON 数据中定位和提取特定元素的查询语言。
  • 它类似于 XPath 对 XML 的作用,可以帮助我们轻松地按照特定的路径表达式从复杂的 JSON 结构中获取所需的数据。以下是 JSONPath 的一些常见语法和示例:
    基本概念:
    什么是 JSONPath:JSONPath 是一种用于在 JSON 数据中定位和提取特定元素的查询语言。
    JSONPath 的作用和重要性:数据提取和过滤、数据导航和遍历、API 集成和数据交互、数据转换和处理。
    JSON 数据结构回顾:
    什么是 JSON:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。
    JSON 的特点:人类可读性高、数据格式简单、可嵌套和可扩展、平台无关性。
    JSON 数据类型:对象(Object)、数组(Array)、字符串(String)、数字(Number)、布尔值(Boolean)、空值(null)。
    JSON 对象和数组:对象是一种无序的键值对集合,每个键值对由一个属性名和对应的值构成。数组是一个有序的值列表,可以包含任意数据类型的元素。
    嵌套 JSON 结构:JSON 允许在对象或数组中嵌套其他 JSON 对象或数组,从而形成复杂的数据结构。
    JSONPath 表达式:
    JSONPath 常见的运算符:$(根元素)、.(子元素)、[](数组索引或键)、*(通配符)。
    JSONPath 常见的函数:length()(数组长度)、max()(最大值)、min()(最小值)、avg()(平均值)
    JSONPath 数据提取案例:
{"商店": {"书籍": [{"分类": "惊悚","作者": "R.L.斯坦","书名": "鸡皮疙瘩","价格": 18.95},{"分类": "冒险","作者": "J.K.罗琳","书名": "哈利波特与火焰杯","书号": "ND-2131-34421","价格": 52.99},{"分类": "科幻","作者": "刘慈欣","书名": "三体","价格": 65.35},{"分类": "科幻","作者": "刘慈欣","书名": "流浪地球","价格": 32.99}],"自行车": {"品牌": "凤凰牌自行车","颜色": "红色","价格": 150.3}}}

测试样例:
$.商店.书籍[0].书名:获取商店中第一本书的书名。
$.商店.书籍[*].作者:获取商店中所有书的作者。
$.商店.自行车.品牌:获取商店中自行车的品牌。

JSONPath 与 XPath 的对比:
JSONPath 和 XPath 都是用于在数据结构中进行查询和导航的路径语言,但它们针对不同的数据格式。

  • 分析本文章中的json
  • 在这里插入图片描述
    我们要获得所有jobname的值的话,
    采用jsonpath:
**$.zpData.jobList..jobName**

在这里插入图片描述
后面实验可知道下面这种方法也可以

**$.zpData.jobList[*].jobName**

不过两种用法在某些情况结果可能不一样

$.zpData.jobList…jobName 和 $.zpData.jobList【*】.jobName 的区别
可能在于它们在解析和获取 JSON 数据中的 jobName 值时的方式略有不同。

  • $.zpData.jobList…jobName 使用了双点号(…)表示递归下降操作符。它会在 zpData.jobList 数组的所有嵌套层级中查找名为 jobName 的属性,并返回所有匹配的结果。
  • $.zpData.jobList【】.jobName 使用了方括号(【】)表示通配符索引。它会在 zpData.jobList 数组的每个元素中查找名为 jobName 的属性,并返回所有匹配的结果。
    总的来说,这两种表达式的主要区别在于它们在处理嵌套数组和对象结构时的方式不同。具体使用哪种方式取决于 JSON 数据的结构和需求。

四、文件输出

  1. 最后拖进excel输出,显示字段名,然后执行就可以了。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/28627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在电磁仿真软件CST中获得多天线同频的SAR

上期介绍了多天线不同频率情况下如何计算SAR,不用考虑相位差;这期我们看看MIMO,多天线同频,考虑相位差: 简单模型,一只手和两个天线: 工作频率2GHz: 仿真结束查看S11: 查…

KEPServerEX远程配置功能一键Get

远程配置功能,其实是通过KEPServerEX REST 接口及 HTTP 协议命令,对 KEPServerEX Runtime 运行环境进行配置的查询及更改。 右键点击系统托盘处的KEPServerEX Administration 图标,选择Settings | Configuration API Service; 如图设置&…

Windows WPS ppt幻灯片 保存文件时候 PPT文件大小变大 ppt文件太大 解决方案

Windows WPS ppt 幻灯片 保存文件时候 PPT文件大小突然变大,原先只有10M的大小增加到40M 关于wps的ppt文件变大,指的是:明明ppt幻灯片页数和图片都不多,只是稍微修改两个文字,保存时,文件大小增加了不少&a…

android studio CreateProcess error=2, 系统找不到指定的文件

【问题记录篇】 在AndroidStudio编译开发jni相关工程代码的时候,编译遇到的这个报错: CreateProcess error2, 系统找不到指定的文件。排查处理步骤: 先查看Build Output的具体日志输出 2.了解到问题出在了NDK配置上,此时需要根据自己的gra…

小抄 20240609

1 没谁有义务免费帮你,多想自己能给对方提供什么价值,多想自己如何回报别人的帮助,路才会越走越宽。 2 不要总想着所有人认同自己,想要所有人认同自己,等于自己没有观点,一直在讨好别人。 有自己的思考&…

模型算法—线性回归

线性回归是统计学中最常见的一种回归分析方法,用于建立自变量(解释变量)和因变量(响应变量)之间的线性关系。线性回归模型可以用来预测一个或多个自变量对应的因变量的值。 线性回归的基本形式如下: &…

【ElasticSearch】ElasticSearch基本概念

ES 是一个开源的高扩展的分布式全文检索引擎,它是对开源库 Luence 的封装,提供 REST API 接口 MySQL 更适合数据的存储和关系管理,即 CRUD;而 ES 更适合做海量数据的检索和分析,它可以秒级地从数据库中检索出我们感兴…

SSH概念、用途、详细使用方法

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

Excel中多条件判断公式怎么写?

在Excel里,这种情况下的公式怎么写呢? 本题有两个判断条件,按照题设,用IF函数就可以了,这样查看公式时逻辑比较直观: IF(A2>80%, 4, IF(A2>30%, 8*(A2-30%),0)) 用IF函数写公式,特别是当…

Node创建基本的web服务器

node创建基本的web服务器 步骤如下: 一、导入http模块 const http require(http)二、创建web服务器实例 const server http.createServer()三、为服务器实例绑定request事件,监听客户端请求 server.on(request, (req, res) > {console.log(服务…

【Java】已解决java.lang.ArrayIndexOutOfBoundsException异常

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.lang.ArrayIndexOutOfBoundsException异常 一、问题背景 java.lang.ArrayIndexOutOfBoundsException 是 Java 中一个非常常见的运行时异常,它表明程序试图访问数…

前端面试题日常练-day73 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备,答案在文末 Sass中的占位符选择器(Placeholder Selector)与普通选择器有什么不同? a) 占位符选择器不会被编译为CSS代码 b) 占位符选择器只能在嵌套规则中使用 c) 占位符选择器…

C语言入门系列:流程控制

一,C代码执行顺序 默认情况下,C语言程序从main()函数开始执行,随后按源代码中语句出现的顺序逐一执行。 这意味着,如果不考虑任何控制结构,程序会自上而下,逐行执行每条语句,直到遇到函数调用…

Epicor Kinetic 2023.2 UI控件列表

控件名称控件描述备注1 Column一列容器布局容器,常用控件2 Column两列容器布局容器,常用控件Address Format地址格式,结果用连接成字符串Button按钮常用控件Check Box复选框常用控件Color Picker颜色选择器常用控件Combo Box下拉组合框常用控…

LabVIEW电源适应能力检测系统

随着工业自动化程度的提高,电源质量直接影响设备的稳定运行。利用LabVIEW开发一个单相电源适应能力检测系统,该系统通过智能化和自动化测试,提高了测试效率,减少了人为错误,保证了电源质量的可靠性。 项目背景 在现代…

Nuxt3 实战 (九):使用 Supabase 实现 Github 认证鉴权

前言 Supabase 使用的是 postgresql 的 Row Level Security (RLS),可以限制不同用户对同一张表的不同数据行的访问权限。这种安全机制可以确保只有授权用户才能访问其所需要的数据行,保护敏感数据免受未授权的访问和操作。 Auth Providers 打开 Supab…

SQL窗口函数:RANK()与DENSE_RANK()的区别

在SQL中,窗口函数允许我们对查询结果集中的行进行排序和排名,而RANK()和DENSE_RANK()是用来进行排名的常见选择。它们的主要区别在于如何处理排名相同的情况,也就是出现了排名并列的情况。 1. RANK() RANK()函数根据指定的ORDER BY子句对行进…

29.添加录入注入信息界面

上一个内容:28.启动与暂停程序 以 28.启动与暂停程序 它的代码为基础进行修改 效果图: 新建Dialog 给新建的dialog添加空间,如下图 给每个输入框创建一个变量 代码: void CWndAddGame::OnBnClickedButton1() {static TCHAR BASE…

035.搜索插入位置

题意 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 难度 简单 示例 输入: nums [1,3,5,6], target 5 输出: …

Open vSwitch 中的 vswitchd 事件上报

一、数据包转发流程与 vswitchd 事件上报 Open vSwitch 的数据包转发流程如下图所示: 在数据包的转发流程中,提到过慢速路径的概念:即当数据包在内核空间无法完全处理时,会产生 upcall 调用,将数据包从内核空间转发到用…