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

大数据ETL开发之图解Kettle工具

详细笔记参考:https://blog.csdn.net/yuan2019035055/article/details/120409547

以下只是简单记录一下我学习过程中的心得

3.1.5 JSON输入

JSONPath 类似于 XPath 在 xml 文档中的定位,JsonPath 表达式通常是用来路径检索或设置Json的。其表达式可以接受“dot - notation”(点记法)和“bracket -notation”(括号记法)

实操注意事项

这里只要注意一下路径的写法和理解,$是表示根路径,对于$..data和$..id我的理解是:$指的是submissions,因为真正的json数据其实是从submissions开始算的,然后..表示递归遍历,因为submissions下面有两个数组,所以需要递归遍历,所以$..data就是递归遍历submissions下的所有data,主要是对..的理解,同理,下面的$..file是的$是指的data,因为第二个json input的数据来源是第一个json input传入的,用..也是因为有多个数组需要递归遍历

{"status": "ok","response": {"submissions": [{"id": "59434767","timestamp": "2011-11-21 09:21:53","user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0","remote_addr": "192.168.1.1","payment_status": "","data": [{"field": "13776121","value": "Baylor Dallas"},{"field": "13776401","value": "CHF"},{"field": "13777966","value": "John Doe"},{"field": "13780027","value": "9999"},{"field": "13778165","value": "None of the above"},{"field": "13778985","value": "Yes"},{"field": "13778280","value": "Yes"},{"field": "13778424","value": "Yes"},{"field": "13778290","value": "Yes"},{"field": "13778324","value": "Yes"},{"field": "13778864","value": "Yes"}]},{"id": "59474875","timestamp": "2011-11-21 17:01:22","user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0","remote_addr": "192.168.1.1","payment_status": "","data": [{"field": "13776121","value": "Healthsouth,"},{"field": "13776401","value": "Pneumonia"},{"field": "13777966","value": "Jane Doe"},{"field": "13780027","value": "390"},{"field": "13778165","value": "Experienced a fall?"},{"field": "13861153","value": "Yes"},{"field": "13780018","value": "Yes"},{"field": "13780006","value": "No"},{"field": "13780023","value": "Yes"},{"field": "13780024","value": "Yes"}]}],"total": 2,"pages": 1}
}

3.1.6 表输入

这里我遇到了一个报错

kettle报错 Driver class ‘org.gjt.mm.mysql.Driver‘ could not be found, make sure the ‘MySQL‘ driver

原因就是没有导入jdbc的jar包或者导入后没有重启应用,我是没有重启

3.2.2 文本文件输出

这里只要记得设置输出文件的合适分隔符即可,默认是用的;

3.2.4 表输出

这里注意数据写到输出表的时候是通过追加的方式,也就是你如果执行两次,那么就会有两套重复的数据,是追加不是覆盖

3.3.9 拆分字段

这里要注意拆分后的新字段需要设置合适的类型,不然就报错

3.3.11 行扁平化

行扁平化就是把同一组的多行数据合并成为一行,可以理解为列拆分为多行的逆向操作

但是需要注意的是行扁平化控件使用有两个条件:

  • 使用之前需要对数据进行排序

  • 每个分组的数据条数要保证一致,否则数据会有错乱

3.3.12 列转行

列转行,顾名思义多列转一行,就是如果数据一列有相同的值,按照指定的字段,将其中一列的字段内容变成不同的列,然后把多行数据转换为一行数据的过程

注意:列转行之前数据流必须按照分组字段进行排序,否则数据会错乱!

这里主要是要理解上面的图怎么填,关键字就是你要把哪一列的值横过来,关键字的值就是上面的那个关键字的列值

3.3.13 行转列

行转列,一行转多列,就是把数据字段的字段名转换为一列,把数据行变为数据列。我们也可以简单理解为行转列控件是列转行控件的逆向操作

理解上面的图的值怎么填

http://www.lryc.cn/news/30612.html

相关文章:

  • docker-容器数据卷
  • 【C++】类和对象补充知识点
  • 路径规划-人工势场法
  • 20230304学习笔记
  • [数据集][VOC][目标检测]河道垃圾水面漂浮物数据集目标检测可用yolo训练-1304张介绍
  • JavaWeb--JSP案例
  • 推荐系统1--Deepfm学习笔记
  • javaDoc生成方式
  • Armv9 registers
  • 套接字实现TCP
  • MMSeg绘制模型指定层的Heatmap热力图
  • 关于Paul C.R. - Inductance_ Loop and partial-Wiley (2009)一书的概括
  • 基于支持向量机SVM的面部表情分类预测
  • java内存模型的理解
  • 自己写一个简单的IOC
  • 用Python批量重命名文件
  • iis之web服务器搭建、部署(详细)~千锋
  • javascript的ajax
  • SpringBoot入门 - 开发中还有哪些常用注解
  • 网络基础(三)
  • Go语言函数高级篇
  • ubuntu16.04 python代码自启动和可执行文件自启动
  • 应用层协议 HTTP HTTPS
  • 图神经网络 pytorch GCN torch_geometric KarateClub 数据集
  • 【博学谷学习记录】超强总结,用心分享丨人工智能 自然语言处理 文本特征处理小结
  • 2023年中职网络安全竞赛解析——隐藏信息探索
  • 实用操作--迁移到Spring Boot 3 和 Spring 6 需要关注的JAVA新特性
  • 等保检测风险处理方案
  • java 包装类 万字详解(通俗易懂)
  • 为什么我复制的中文url粘贴出来会是乱码的? 浏览器url编码和解码