卖不甜枣 发表于 2024-7-12 07:17:34

大数据ETL开发之图解Kettle工具(入门到精通)

https://img-blog.csdnimg.cn/f0fcb971f9524658964251d19b9bea0c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
2.3.2 转换

https://img-blog.csdnimg.cn/6448fe83420c4c61991c716b8f529b5f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
2.3.3 作业

https://img-blog.csdnimg.cn/876a496d7dbd49c5bcd0da8323efa0c2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
2.4 Kettle转换初次体验
体验案例:将 csv 文件用 Kettle 转换成 excel 文件
https://img-blog.csdnimg.cn/4cf317d041f240d9af78e181936e7804.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
1)在 Kettle 中新建一个转换,然后选择转换下面的 “csv文件输入” 和 “excel文件输出” 拖至工作区
https://img-blog.csdnimg.cn/1200bca721664417b79ed527f751f430.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
2)双击CSV文件输入文件控件,在弹出的设置框里找到对应的csv文件(test.csv).然后点击下面的获取字段按钮,将我需要的字段加载到kettle中
https://img-blog.csdnimg.cn/da197073730344da9ea73d06ec8259fe.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3)按住键盘 shift 键,并且点击鼠标左键将两个控件链接起来,链接时选择 “主输出步骤”
https://img-blog.csdnimg.cn/1dc93f84fea242c78eaebb82e4937dd0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
4)双击Excel输出控件,在弹出的设置框里设置文件输出路径和文件名称,然后点击上的字段框,依次点击下面的获取字段和最小宽度,获取到输出字段
https://img-blog.csdnimg.cn/5a5fbff58a994197a1e724b73f075ffb.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
5)点击运行,启动,检察转换好的文件
https://img-blog.csdnimg.cn/34e710935dc3445b885b30f789e3c8d8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_14,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/ac63a6fa352749c28257fa95581ddb1d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
转换乐成:
https://img-blog.csdnimg.cn/492f1edd68464119b3fb765b60a1e324.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
2.5 Kettle 核心概念
2.5.1 可视化编程

   Kettle可以被归类为可视化编程语言,因为Kettle可以使用图形化的方式定义复杂的ETL程序和工作流。
   可视化编程不停是Kettle里的核心概念,它可以让你快速构建复杂的ETL作业和减低维护工作量。它通过隐藏很多技能细节,使IT领域更贴近于商务领域。
   Kettle里的代码就是转换和作业。
2.5.2 转换

   转换(transaformation)负责数据的输入、转换、校验和输出等工作。Kettle 中使用转换完成数据 ETL 全部工作。转换由多个步骤(Step)构成,如文本文件输入,过滤输出行,执行SQL脚本等。各个步骤使用跳(Hop)(毗连箭头) 来链接。跳定义了一个数据流通道,即数据由一个步骤流(跳)向下一个步骤。在 Kettle中数据的最小单位是数据行(row),数据流中运动着实是缓存的行集(RowSet)
https://img-blog.csdnimg.cn/e461127190384511bf22d66f457aff72.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
2.5.3 步骤

   步骤(控件)是转换里的基本的构成部门,快速入「]的案例中就存在两个步骤,“CSV文件输入” 和 “Excel输出”。
一个步骤有如下几个关键特性:


[*] 1.步骤需要有一个名字,这个名字在同一个转换范围内唯一
[*] 2.每个步骤都会读、写数据行(唯一例外是 “天生记载”步骤,该步骤只写数据
[*] 3.步骤将数据写到与之相连的一个或多个输出跳(hop),再传送到跳的另一端的步骤。
[*] 4.大多数的步骤都可以有多个输出跳。–个步骤的数据发送可以被设置为分发和复制,
分发是目标步骤轮番吸收记载,复制是所有的记载被同时发送到所有的目标步骤
https://img-blog.csdnimg.cn/2488896123d04139a4df9582f0c16074.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
2.5.4 跳(Hop)

   跳就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路
https://img-blog.csdnimg.cn/b4d0c0e6f2244c4089506238554d996d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_17,color_FFFFFF,t_70,g_se,x_16
跳实际上是两个步骤之间的被称之为行集的数据行缓存,行集的大小可以在转换的设置里定义。当行集满了,向行集写数据的步骤将停止写入,直到行集里又有了空间。当行集空了,丛行集读取数据的步骤停止读取,直到行集里又有可读的数据行
https://img-blog.csdnimg.cn/b54f3f34115a473b97df7aecd2fc200e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
2.5.5 元数据

   每个步骤在输出数据行时都有对字段的形貌,这种形貌就是数据行的元数据。
通常包含下面一些信息:


[*] 名称:数据行里的字段名是唯一的。
[*] 数据范例:字段的数据范例。
[*] 格式:数据显示的方式,如 Integer 的 #、0.00
[*] 长度:字符串的长度大概 BigNumber 范例的长度。
[*] 精度:BigNumber数据范例的十进制精度。
[*] 钱币符号:¥
[*] 小数点符号:十进制数据的小数点格式。不同文化配景下小数点符号是不同的,一般是点“.”或 逗号“,”
[*] 分组符号:数值范例数据的分组符号,不同文化配景下数字里的分组符号也是不同的,一般是点“.”或逗号“,”或单引号 ’
https://img-blog.csdnimg.cn/68e6ceebe24e46f2ad42c5e844cbd71a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
2.5.6 数据范例

   数据以数据行的情势沿着步骤移动。一个数据行是零到多个字段的集合,字段包含下面几种数据范例。


[*] String:字符范例数据
[*] Number:双精度浮点数。
[*] Integer:带符号长整型(64位)。
[*] BigNumber:恣意精度数据。
[*] Date:带毫秒精度的日期时间值。
[*] Boolean:取值为true和false的布尔值。
[*] Binary:二进制字段可以包含图像、声音、视频及其他范例的二进制数据。
https://img-blog.csdnimg.cn/713e9afe1a13449683c3f89537bbdad3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
2.5.7 并行

跳的这种基王行集缓在的规则允许每个步骤都是由一个独立的线程运行,这样并发程度最高。这一规则也允许数据以最小消耗内存的数据流的方式来处理。在数据仓库里,我们经常要处理大量数据,以是这种高并发低消耗的方式也是 ETL 工具的核心需求。
对于 kettle 的转换,不能定义一个执行次序,因为所有步骤都以并发方式执行:当转换启动后,所有步骤都同时启动,从它们的输入跳中读取数据,并把处理过的数据写到输出跳,直到输入跳里不再有数据,就中止步骤的运行。当所有的步骤都中止了,整个转换就中止了。
如果你想要一个任务沿着指定的次序执行,那么就要使用下面所讲的“作业”!
2.5.8 作业

   作业(Job),负责定义一个完成整个工作流的控制,好比将转换的效果发送邮件给相干职员。因为转换(transformation) 以并行方式执行,以是必须存在一个串行的调度工具来执行转换,这就是Kettle 中的作业。
第3章 Kettle的转换
===============================================================================
3.1 Kettle输入控件
   输入是转换内里的第一个分类, 输入控件也是转换中的第一大控件, 用来抽取数据大概天生数据。输入是ETL内里的E (Extract),重要做数据提取的工作。
https://img-blog.csdnimg.cn/61e62f8aef044f418c08be957afa8255.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
由于Kettle中自带的输入控件比较多,本文只挑出开发中经常使用的几个输入控件来进行讲授,详情如下图:
https://img-blog.csdnimg.cn/131b1621383d42798c9c5220745bfcd1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.1.1 CSV文件输入

   CSV 文件是一个用逗号分隔的固定格式的文本文件,这种文件后缀名为.csv,可以用Excel大概文本编辑器打开。在企业内里一般最常见的 ETL 需求就是将 csv 文件转换为 excel 文件,如果用 Kettle 来做这个 ETL工作,就需要用到本章节讲授的CSV文件输入控件。
任务:熟悉CSV文件输入控件,并尝试将CSV文件转换成Excel文件(可参考上面的快速体验案例)。
https://img-blog.csdnimg.cn/dd1110d78ece4fd583b5329ef8f1ef05.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16


[*] 步骤名称:可以修改,但是在同一个转换内里要保证唯一 性, 见名知意
[*] 文件名:选择对应的csv文件
[*] 列分隔符:默认是逗号(不用改)
[*] 封闭符:结束行数据的读写(不用改)
[*] NIO 缓存大小:文件如果行数过多,需要调整此参数
[*] 包含列头行:意思是文件中第一行是字段名称行,表头不进行读写
[*] 行号字段:如果文件第一行不是字段名称大概需要从某行开始读写,可在此输入行号。
[*] 并发运行? :选择并发,可进步读写速度
[*] 字段中有回车换行? :不要选择,会将换行符做数据读出
[*] 文件编码:如果预览数据出现乱码,可更换文件编码
3.1.2 文本文件输入

   提取服务器上的日记信息是公司里 ETL开发很常见的利用,日记信息基本上都是文本范例,因此文本文件输入控件是kettle中常用的一个输入控件。
任务:熟悉文本文件输入控件,并新建转换,将txt日记文件转换为Excel文件
使用文本文件输入控件步骤:
1) 添加需要转换的日记文件
https://img-blog.csdnimg.cn/3027ca3c88304e62a92116a06d910373.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
2)按照日记文件格式,指定分隔符
https://img-blog.csdnimg.cn/25f26961dcd548a0b4542e871bb3ed85.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3)获取下字段,并给字段设置合适的格式(数字范例的数据尽量选Integer,因为number范例有两位小数点)
4)末了点下预览记载,看看能否读到数据
https://img-blog.csdnimg.cn/47b1631013554606b07ebac1031bb00f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/61472ab493f645c599bd50a383b0ee47.png
3.1.3 Excel文件输入

   Excel输入控件也是很常用的输入控件,一般企业里会用此控件对大量的Excel文件进行ETL利用。
任务:两张sheet表合二为一
使用Excel输入控件步骤如下:
原始数据:
https://img-blog.csdnimg.cn/15eef3fe40354bd5884ab2b33c5ac33d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/a6632bc4135a4dff80bf53e2875a724d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
1)按照读取的源文件格式指定对应的表格范例为 xls 还是 xlsx
2)选择并添加对应的excel文件
https://img-blog.csdnimg.cn/70f95e53fcb546be848fd425315cd212.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3)获取excel的sheet工作表
https://img-blog.csdnimg.cn/e23993db9a4d4a64a44c961544210631.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/eaf9eb22432842ef9d1d51123dcb6ef0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
4)获取字段,并给每个字段设置合适的格式
https://img-blog.csdnimg.cn/d6a08b81d4be49a09c87528587c9507f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
5)预览数据
https://img-blog.csdnimg.cn/9dc22706cffd454ca913435961bfb0ad.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_18,color_FFFFFF,t_70,g_se,x_16
3.1.4 XML输入

1)XML简介
   XML可扩展标记语言eXtensible MarkupLanguage,由W3C组织发布,现在保举遵守的是W3C组织于2000年发布的XML1.0规范。XML用来传输和存储数据,就是以一个统一的格式,组织有关系的数据,为不同平台下的应用程序服务。
https://img-blog.csdnimg.cn/339e357edbf942279b42bc1cde818a24.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_18,color_FFFFFF,t_70,g_se,x_16
2)XPath简介
   XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部门位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。XPath使用路径表达式在XML文档中选取节点。下面列出了最有效的路径表达式
https://img-blog.csdnimg.cn/9033c0ff0dfe4766a0d7fa8761bcf47b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3)XML输入控件
   了解XML和XPath概念以后,我们要开始学习Kettle的XML输入控件,企业里经常用此控件进行XML文件的ETL利用。
任务:熟悉XML输入控件,将XML文件的门生数据写到excel文件中
1.浏览获取xml文件,将xml文件添加到kettle中
https://img-blog.csdnimg.cn/93e6d0b2f0df4032a75afe25e7e6fae3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
2.获取 xml文档的所有路径,设置合适的循环读取路径
https://img-blog.csdnimg.cn/1750423f6d914f3b88a33f820421a116.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.获取字段,得到自己想要读取的所有字段,并且设置适当的格式
https://img-blog.csdnimg.cn/4dc22a09e3f1486e904e80d9c9ca229c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
4.预览数据,看看能否读取到自己想要的数据
https://img-blog.csdnimg.cn/238fcb1b2f2c4622a4713407d95ea064.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_18,color_FFFFFF,t_70,g_se,x_16
3.1.5 JSON输入

1)JSON介绍
   JSON(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式。JSON对象本质上就是一个JS对象,但是这个对象比较特殊,它可以直接转换为字符串,在不同语言中进行转达,通过工具又可以转换为其他语言中的对象。
JSON核心概念:


[*] 数组:[]
[*] 对象:{}
[*] 属性:key:value
2)JSON Path
   JSONPath 雷同于 XPath 在 xml 文档中的定位,JsonPath 表达式通常是用来路径检索或设置Json的。其表达式可以继承“dot - notation”(点记法)和“bracket -notation”(括号记法)
格式:


[*] 点记法:$.store.booktitle
[*] 括号记法:$[‘store’][‘book’ ][ ‘ title’ ]
https://img-blog.csdnimg.cn/2ba5ec7d5cff4e55a22f9018524ca150.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3)JSON 输入控件
   了解JSON格式和JSON Path以后,我们要学习使用JSON输入控件,JSON控件也是企业里做ETL常用的控件之一
任务:获取到JSON文件内里的id,field,value字段,写到excel文件中
原始数据:
https://img-blog.csdnimg.cn/2b5eb619166240e79cd65a2950d9617e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
1.浏览获取JSON文件(注意文件路径不能有中文),将json文件获取到kettle中
https://img-blog.csdnimg.cn/b49da6884f9e4e888ff7484f82d9e6dd.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
2.根据JSON Path点记法,获取到需要的字段,并且设置合适格式
https://img-blog.csdnimg.cn/acabd8d7c84b43d0ab2103e5da10af94.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/46a6526166ad41d8b953e2eaa3fb955b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3)新建JSON输入控件2
第二步的数据内容为:
https://img-blog.csdnimg.cn/d3e21372b82341f390e70bff0ea9f4b4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/2c823dc512514b5382bf71d753b9bfdd.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/dcde368f99874593848f58d303b1f1e7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/10455a66219d46d1b26c6dec7f55b6df.png
3.1.6 表输入

   表输入可以说是kettle中用到最多的一种输入控件, 因为企业中大部门的数据都会存在数据库中。kettle可以毗连市面上常见的各种数据库,好比Oracle,Mysql, SqlServer等。但是在毗连各个数据库之前,我们需要先设置好对应的数据库驱动,本教程以mysql为例,给大家讲授kettle毗连mysql数据库的过程。
https://img-blog.csdnimg.cn/066f4d866a80400d8abe253abc0ec471.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_19,color_FFFFFF,t_70,g_se,x_16
1)创建数据库毗连
MySQL驱动下载(一定要下载对应数据库版本):官网下载地点
https://img-blog.csdnimg.cn/e422e2393ee74a0cbb8fb0a6f9a041d3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
首先我们要将对应版本的mysql毗连驱动放到kettle 安装目录下面的lib文件夹下,然后重启kettle 的客户端Spoon
https://img-blog.csdnimg.cn/3f7e57e84e0b47c39adb60eb28a81f82.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
重启Spoon客户端以后,我们就可以创建对应的数据库毗连了,在转换视图的主对象树目录下,有个DB毗连,右键然后选择新建,在打开数据库毗连框里,填写正确的数据库信息,然后测试,测试无误后,可以保存此数据库毗连。
https://img-blog.csdnimg.cn/bbdf73412f954bc39cf22d0819215722.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/0f7680974391425aa143feaa53451a54.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
数据库毗连默认只对本转换有效,换一个转换以后,这个毗连就没法用了,还需要新建数据库毗连,以是我们需要将建好的这个数据库毗连进行共享下,共享以后,其他的转换也能用我们提前建好的这个数据库毗连了。
https://img-blog.csdnimg.cn/39fc17f7b45e4fffb18d01fdb97d6026.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_17,color_FFFFFF,t_70,g_se,x_16
2)表输入
创建好数据库毗连以后,我们就可以使用表输入控件了,双击表输入控件,选择刚刚创建的数据库毗连,然后在SQL框里输入合适的查询语句,然后点击预览按钮,看能否预览到我们期望的数据
https://img-blog.csdnimg.cn/61b30a529f3c46038c03744878b7b6de.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.2 Kettle输出控件
   输出是转换内里的第二个分类,输出控件也是转换中的第二大控件,用来存储数据。输出是ETL内里的L(Load),重要做数据加载的工作。
由于Kettle中自带的输出控件比较多,本文只挑出开发中经常使用的几个输出控件来进行讲授,详情如下图
https://img-blog.csdnimg.cn/7ddb4fbec3e54d0ab8ed050c7b2b7240.png
3.2.1 Excel输出

   Kettle中自带了两个Excel输出,一个Excel输出,另一个是Microsoft Excel输出。Excel输出只能输出xls文件(适合Excel2003),Microsoft Excel输出可以输出xls和xlsx文件(适合Excel2007及以后)
Excel输出大家已经很熟悉了,本章不再赘述,接下来给大家讲下Microsoft Excel输出。
1)选择合适的扩展名
2)点击浏览,补全输出文件的路径已经文件名
https://img-blog.csdnimg.cn/7cdd4f3325f94f11853871e065af7131.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_19,color_FFFFFF,t_70,g_se,x_16
3.2.2 文本文件输出

   文本文件输出控件,顾名思义,这是一个能将数据输出成文本的控件,比较简朴,在企业内里也比较常用。
1.设置对应的目录和文件名
2.设置合适的扩展名,好比txt,csv等
https://img-blog.csdnimg.cn/8b8acdb1267c4dc58c48e3a0431a6228.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.在内容框里设置合适的分隔符,好比分号,逗号,TAB等
https://img-blog.csdnimg.cn/3ce7bf581232444680731fc4c66cffea.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
4.在字段框里获取字段,并且给每个字段设置合适的格式
https://img-blog.csdnimg.cn/4cf687d3616c4674b559f0658eb26273.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.2.3 SQL文件输出

   SQL文件输出一般跟表输入做毗连,然后将数据库表的表结构和数据以sql文件的情势导出,然后做数据库备份的这么一个工作。(Kettle内里没varchar范例尽量少用)
1.选择合适的数据库毗连
2.选择目标表
3.勾选增加创建表语句和每个语句另起一行
4.填写输出文件的路径和文件名
5.扩展名默认为sql,这个不需要更改
https://img-blog.csdnimg.cn/9a3912167d3c4b8695a6ac54af6474af.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_18,color_FFFFFF,t_70,g_se,x_16
3.2.4 表输出

   表输出控件可以将kettle数据行中的数据直接写入到数据库中的表中,企业里做ETL工作会经常用到此控件。
1.选择合适的数据库毗连
2.选择目标表,目标表可以提前在数据库中手动创建好,也可以输入一个数据库不存在的表,然后点击下面的SQL按钮,利用kettle现场创建
3.如果目标表的表结构和输入的数据结构不同等,还可以自己指定数据库字段
https://img-blog.csdnimg.cn/51fdfb1e9fba4145beae8d0a693259ee.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_18,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/8fd487e3517d4198966bbaef019b76f5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.2.5 更新&插入/更新

   更新和插入/更新,这两个控件是kettle提供的将数据库已经存在的记载与数据流内里的记载进行对比的控件。企业级ETL 经常会用到这两个控件来进行数据库更新的利用
两者区别:


[*] 更新是将数据库表中的数据和数据流中的数据做对比,如果不同就更新,如果数据流中的数据比数据库表中的数据多,那么就报错。
[*] 插入/更新的功能和更新一样,只不过优化了数据不存在就插入的功能,因此企业里更多的也是使用插入/更新。
步骤:
1.选择正确的数据库毗连
2.选择目标表
3.输入两个表来进行比较的字段,一般来说都是用主键来进行比较
4.输入要更新的字段
https://img-blog.csdnimg.cn/66cc4b8167dc44b78606f8b33ef797d7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/17bc3ac96530432eb51d299bbe23fe52.png
3.2.6 删除

   删除控件可以删除数据库表中指定条件的数据,企业里一般用此控件做数据库表数据删除大概跟另外一个表数据做对比,然后进行去重的利用。
1.选择数据库毗连
2.选择目标表
3.设置数据流跟目标表要删除数据的对应字段
https://img-blog.csdnimg.cn/5d083afd23f74e519643411fca9d1393.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/13aab4fb84f14fb6bcc4736a2a52042e.png
3.3 Kettle转换控件
   转换控件是转换内里的第四个分类,转换控件也是转换中的第三大控件,用来转换数据。转换是ETL内里的T(Transform),重要做数据转换,数据清洗的工作。ETL整个过程中,Transform的工作量最大,泯灭的时间也比较久,大概可以占到整个ETL的三分之二。
由于Kettle中自带的转换控件比较多,本文只挑出开发中经常使用的几个转换控件来进行讲授,详情如下图。
https://img-blog.csdnimg.cn/96281769768d4e1784f5a01df3b32758.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.3.1 Concat fields

   转换控件Concat fields,顾名思义,就是将多个字段毗连起来形成一个新的字段
任务:将staff表的firstname和lastname拼接起来,形成name字段,然后再将数据插入到新表emp中
原始数据:
https://img-blog.csdnimg.cn/563c3d962a0e4cd0adce4d8328ba31c3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_15,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/ff6d691f6a7f4d3d98ee72f2b1769c8f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/682d824ba8e04b3dbf4060d15fa54321.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.3.2 值映射

   值映射就是把字段的一个值映射(转换)成其他的值。在数据质量规范上使用非常多,好比很多系统对应性别sex字段的定义不同。以是我们需要利用此控件,将同一个字段的不同的值,映射转换成我们需要的值。
任务:将staff表的sex字段,映射成男or女,然后再插入到emp表中
原始数据:
https://img-blog.csdnimg.cn/393c733244074fe0adf0b774c615db38.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_13,color_FFFFFF,t_70,g_se,x_16
1.选择映射的字段
2.还可以自定义映射完以后的新字段名
3.可以设置不匹配时的默认值
4.设置映射的值
https://img-blog.csdnimg.cn/02b50e499c0b4f5f96ce02dac095182a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/71f65340b6b846ed8b829c688d8b7df0.png
3.3.3 增加常量&增加序列

   增加常量就是在自己的数据流内里添加一列数据,该列的数据都是雷同的值。
   增加序列是给数据流添加一个序列字段,可以自定义该序列字段的递增步长。
任务:给表staff的数据加一列固定值slary和一个递增的number序列,在控制台预览下数据即可,不用输出
https://img-blog.csdnimg.cn/d93ebcce212b489ab3462729a67aa93f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/1bdf0381b35e48038b33a37d607fa99c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/7e6336935fa14f31adba0b15ce10fdc0.png
https://img-blog.csdnimg.cn/ac44a7efcf8e4540919871cb163387be.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_18,color_FFFFFF,t_70,g_se,x_16
3.3.4 字段选择

   字段选择是从数据流中选择字段、改变名称、修改数据范例。
任务:在上一章节的转换之后,添加字段选择控件,移撤除firstname字段,并且将lastname重命名为name,将slary重命名为money,然后再次预览数据,检察数据的变化
https://img-blog.csdnimg.cn/ae74e9ee0f21415a82277ba26bf69260.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/e530e3d73157477eb537de56b064a624.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/e0e091e319fe418db09efbe6cd78b24a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/686101ef343447b0b42be4acb34e7e18.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/95f3d67ed4e1449d9a64dbc595c0b854.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_15,color_FFFFFF,t_70,g_se,x_16
3.3.5 计算器

   计算器是一个函数集合来创建新的字段,还可以设置字段是否移除(暂时字段)。我们可以通过计算器内里的多个计算函数对已有字段进行计算,得出新字段。
任务:在上一节的任务基础之上,添加计算器控件对money和number字段进行相乘,得出新字段acount,然后预览数据
https://img-blog.csdnimg.cn/6edbca54e539416aa5babccc848642c8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/1e99137ce0424c63a5c12f64e2d50e26.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/2c95bd289e0e4bc2b540575b179ef7f3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.3.6 字符串剪切&替换&利用

   转换控件中有三个关于字符串的控件,分别是剪切字符串,字符串利用,字符串替换
剪切字符串是指定输入流字段裁剪的位置剪切出新的字段
https://img-blog.csdnimg.cn/c756dd16914643b48dba9ef3c4cdbf72.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
字符串替换是指定搜索内容和替换内容,如果输入流的字段匹配上搜索内容就进行替换天生新字段
https://img-blog.csdnimg.cn/f1fb6a5ff6cc48e48701b2555c671bb5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
字符串利用是去除字符串两端的空格和大小写切换,并天生新的字段
https://img-blog.csdnimg.cn/717ac720d3034fb89f205910ed02ad3b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/a44c826522ee4b1bb12e7052a6d01525.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.3.7 排序记载&去除重复记载

   去除重复记载是去除数据流内里雷同的数据行。但是此控件使用之前要求必须先对数据进行排序,对数据排序用的控件是排序记载,排序记载控件可以按照指定字段的升序大概降序对数据流进行排序。因此排序记载+去除重复记载控件经常配合组队使用。
任务:利用excel输入控件读取input目录下的06_去除重复记载.xlsx,然后对内里重复的数据进行按照id排序并去重
原始数据:
https://img-blog.csdnimg.cn/d1a7368d7ace47828cfb1c5583d6ff28.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_11,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/f453122e0aef40d5acae08a74d04c12c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/240647bcc0de49a6a0357cb7e0d4e236.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/34e3007247f74f509793552b2f0bd88a.png
3.3.8 唯一行(哈希值)

   唯一行(哈希值)就是删除数据流重复的行。此控件的效果和(排序记载+去除重复记载)的效果是一样的,但是实现的原理不同。排序记载+去除重复记载对比的是每两行之间的数据,而唯一行(哈希值)是给每一行的数据建立哈希值,通过哈希值来比较数据是否重复,因此唯一行(哈希值)去重服从比较高,也更建议大家使用。
任务:利用唯一行(哈希值)控件对06_去除重复记载.xlsx去重,并且检察末了输出的数据跟上个任务有何区别
https://img-blog.csdnimg.cn/6ec93b4074c5443c8ee2346ba61f6d11.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/2e5ac82daedc4f0fbce827ea20b26f54.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_18,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/c1cf8a9c822b40ccbbaf423c241f7381.png
3.3.9 拆分字段

   拆分字段是把字段按照分隔符拆分成两个或多个字段。需要注意的是,字段拆分以后,原字段就会从数据流中消失。
任务:将拆分字段.xlsx内里的NBA球星的姓名,拆分成姓跟名
文件内容:
https://img-blog.csdnimg.cn/df3f0ba2322649d3b1620fd23e9c4d16.png
https://img-blog.csdnimg.cn/d0547cd4297c416f91af95f36eeef8e9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/1def9b927b934777b7f8697ac211f5d8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_15,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/9dbdf60fc221436daf6825ad4767199f.png
3.3.10 列拆分为多行

   列拆分为多行就是把指定字段按指定分隔符进行拆分为多行,然后其他字段直接复制。具体效果如下图:
https://img-blog.csdnimg.cn/fe4190ef364c40f482ed3942de187857.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
任务:对08_列拆分为多行.xlsx的数据按照hobby字段进行拆分为多行,然后将新数据输出到excel文件中,检察数据
原始数据:
https://img-blog.csdnimg.cn/2576a5dc4cd241f0a0a97733e331bdf6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_16,color_FFFFFF,t_70,g_se,x_16
1.选择要拆分的字段
2.设置合适的分割符
3.设置分割以后的新字段名
4.选择是否输出新数据的分列行号,行号是否重置
https://img-blog.csdnimg.cn/894faa55f66742259c34ccb027692388.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/4f44acddc23a41939b7ae84d4ed61af4.png
执行效果:
https://img-blog.csdnimg.cn/06b6f2fd658f47bdb140f07bbe532f96.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_8,color_FFFFFF,t_70,g_se,x_16
3.3.11 行扁平化

   行扁平化就是把同一组的多行数据合并成为一行,可以理解为列拆分为多行的逆向利用
但是需要注意的是行扁平化控件使用有两个条件:
1)使用之前需要对数据进行排序
2)每个分组的数据条数要保证同等,否则数据会有错乱
任务:将09_行扁平化.xlsx的数据按照hobby字段进行扁平化
原始数据:
https://img-blog.csdnimg.cn/19b10520f06b4b0f8e50d9d0068dd1e3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_9,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/05de5f1766694a1382e94d7496d596c7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_19,color_FFFFFF,t_70,g_se,x_16
1.选择扁平化的字段
2.填写目标字段,字段个数跟每个分组的数据同等
3.3.12 列转行

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

https://img-blog.csdnimg.cn/201f2077147d45c1b981660315f0928e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
注意:列转行之前数据流必须按照分组字段进行排序,否则数据会错乱!
任务:将input目录下的10_列转行.xlsx的数据进行列转行,熟悉列转行控件的使用
原始数据:
https://img-blog.csdnimg.cn/4a01a6e7252b491a9e8bb87da41fbe67.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_9,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/f645f41152b541f3af0a1302b1761bb2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_19,color_FFFFFF,t_70,g_se,x_16
1.关键字段:从数据内容酿成列名的字段
2.分组字段:列转行,变化以后的分组字段
3.目标字段:增加的列的列名字段
4.数据字段:目标字段的数据字段
5.关键字值:数据字段查询时的关键字,也可以理解为key
6.范例:要给目标字段设置合适的范例,否则会报错
https://img-blog.csdnimg.cn/b1a566b4cd31408ea07e8f72905aba59.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_17,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/5bfb52459fcd4e5ab0e1c459316566a6.png
3.3.13 行转列

   行转列,一行转多列,就是把数据字段的字段名转换为一列,把数据行变为数据列。我们也可以简朴理解为行转列控件是列转行控件的逆向利用。具体如下图:
https://img-blog.csdnimg.cn/47e57f78b773452aa9d9c74a5057fb06.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
任务:将行转列.xlsx用excel控件输入,然后行转列,熟悉行转列控件的使用。
原始数据:
https://img-blog.csdnimg.cn/5a487b83476549b9a8d46ed460bd54ec.png
https://img-blog.csdnimg.cn/c8615eda8aac4235a0a6f03afc38322d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_19,color_FFFFFF,t_70,g_se,x_16
1.Key字段:行转列,天生的列名字段名
2.字段名称:本来数据流中的字段名
3.Key值:Key字段的值,这个是自己自定义的,一般都跟前面的字段名称一样
4.Value字段:对应的Key值的数据列的列名
https://img-blog.csdnimg.cn/96c734ea0feb4629a63de55f769d3302.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_17,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/7ee2c24537dd43ea945a472c19535761.png
3.4 Kettle应用控件
   应用是转换控件内里的第五个分类,这个分类下是Kettle给我们自带的一些工具类
3.4.1 替换NULL值

   替换NULL值,顾名思义就是将数据内里的null值替换成其他的值,此控件比较简朴,但是在企业内里也会经常用到。
1.可以选择替换数据流中所有字段的null值
2.也可以选择字段,在下面的字段框内里,根据不同的字段,将null值替换成不同的值
任务:替换excel数据12_替换NULL值.xlsx的bonus列的null值为0
原始数据:
https://img-blog.csdnimg.cn/71f42b104f0440aa866a20f844e42b5d.png
https://img-blog.csdnimg.cn/328684d5fd4e43d1a630603776639979.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16https://img-blog.csdnimg.cn/8c8022734f1c40d99aec2bdab1c6c26e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_13,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/70c723a13fc7466ca2384fab0e9fdb66.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_9,color_FFFFFF,t_70,g_se,x_16
3.4.2 写日记

   写日记控件重要是调试的时间使用,此控件可以将数据流的每行数据打印到控制台,方便我们调试整个程序。
1.选择日记级别
2.可以输入自定义输出的语句
3.选择要输出打印的字段
任务:在上个任务的基础之上,添加写日记控件,在控制台输出检察数据
https://img-blog.csdnimg.cn/8578d6c18a7a49b483ed94be25239660.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_15,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/10f223435e514b408b929b3d8e0fbc89.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/6b0ed11e12db4cbba3866c0f594062d3.png
3.5 Kettle流程控件
   流程是转换内里的第六个分类,流程分类下的控件重要用来控制数据流程和数据流向。
3.5.1 Switch/case

   Switch/case控件,最典型的数据分类控件,可以利用某一个字段的数据的不同的值,让数据流从一路到多路。
任务:将excel:13_Switch-Case.xlsx的数据按照部门字段进行分类,将同一个部门的数据输出到一个excel中
原始数据:
https://img-blog.csdnimg.cn/7e02969270cb468a9da1dcc628cc444e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_16,color_FFFFFF,t_70,g_se,x_16
1.选择需要判定的字段
2.选择判定字段的值的范例
3.填写分类数据的判定条件和目标步骤
https://img-blog.csdnimg.cn/5b926139497b48efa52f6f31a036dd74.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_17,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/de95231f50a644fea9a58eca932188db.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_18,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/1818e3d456b1424f926f7d382bcf5b0e.png
https://img-blog.csdnimg.cn/49aff910546844fb858d256719b775c1.png
3 .5.2 过滤记载

   和Switch/case做对比的话,过滤记载相称于if-else,可以自定义输入一个判定条件,然后将数据流中的数据一路分为两路
任务:将数据按照工资字段进行判定,将工资在20000及以上的数据输出到一个excel中,将工资小于20000的输出到另外一个excel中
原始数据:
https://img-blog.csdnimg.cn/edad7b61ea4d4f3caf6316fcabdf85d3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_15,color_FFFFFF,t_70,g_se,x_16
1.在下面先填写数据的判定条件
2.然后再上面选择下判定条件为true大概false的输出步骤
https://img-blog.csdnimg.cn/bf77baf1c46f480a847b35d8b7fdf354.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16https://img-blog.csdnimg.cn/3908aad4357b49c081d59d7ed4ab07ac.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_16,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/88f4793ff76f4f2286a721e19fec4929.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_18,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/97697ddd04c5465da02c31e37790847e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_13,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/9263d34c88744a72824a7a2a26f5f27e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_13,color_FFFFFF,t_70,g_se,x_16
3.5.3 空利用

   空利用,顾名思义就是什么也不做,此控件一般作为数据流的尽头。
任务:修改上节的转换任务,将工资大于即是20000的数据输出,小于20000的数据直接丢弃,熟悉空利用控件的使用。
https://img-blog.csdnimg.cn/3c66dc32cbc54dd2bafd952a5444a6fa.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16https://img-blog.csdnimg.cn/f88216f653ba43e1b47e7ca5f327bc43.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.5.3 中止

   中止是数据流的尽头,如果有数据流到此控件处,整个转换程序将中止,并且在控制台输出报错信息。此控件一般用来校验数据,大概调试程序。
任务:使用中止控件判定上节任务中是否有人的工资低于20000,如果发现有人的工资低于20000的话,中止程序,并在控制台输出信息。
https://img-blog.csdnimg.cn/df1dd05749044f8ba5349f37b1ed1823.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_10,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/ebc33ee3e7894dfcae4b158a132077ff.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.6 Kettle查询控件
   查询是转换内里的第九个分类,查询控件是用来查询数据源内里的数据,并合并到主数据流中。
3.6.1 数据库查询

   数据库查询就是从数据库内里查询出数据,然后跟数据流中的数据进行左毗连的一个过程。左毗连的意思是数据流中本来的数据全部有,但是数据库查询控件查询出来的数据不一定全部会列出,只能按照输入的匹配条件来进行关联。
任务:利用表输入控件获取到staff表的数据,然后利用数据库查询控件查询到department表的数据,然后对两个表按照dept_id字段进行左毗连,并预览数据
原始数据:
https://img-blog.csdnimg.cn/b29cc51fc3a64d988ed038bc47546804.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_15,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/d80036b8edf349a591a0eec14a23777f.png
1.选择合适的数据库链接
2.输入要去数据库内里查询的表名
3.输入两个表进行左毗连的毗连条件
4.获取返回字段,得到查询表返回的值
https://img-blog.csdnimg.cn/001176d505c740849e9f78185fc9bb04.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_19,color_FFFFFF,t_70,g_se,x_16https://img-blog.csdnimg.cn/e64129dbf6c744ed9ab22d725cdb9293.png
执行效果:
https://img-blog.csdnimg.cn/741a443d501441d197772e1413b41f66.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.6.2 流查询

   流查询控件就是查询两条数据流中的数据,然后按照指定的字段做等值匹配。注意:流查询在查询前把数据都加载到内存中,并且只能进行等值查询。
任务:用流查询控件,将staff和department的数据按照dept_id字段进行关联起来
1.输入查询的数据流
2.输入两个流进行匹配的字段(等值匹配)
3.输入查询出的字段
https://img-blog.csdnimg.cn/e76681d9e86040b781f8a776a92669da.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/9e3f7c650a2841a4a2308bb132c98864.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_16,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/2272af8f7977492b9f5090154d45d6cb.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.7 Kettle毗连控件
   毗连是转换内里的第十个分类,毗连分类下的控件一般都是将多个数据集通过关键字进行毗连起来,形成一个数据集的过程。
3.7.1 合并记载

   合并记载是用于将两个不同泉源的数据合并,这两个泉源的数据分别为旧数据和新数据,该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并。注意旧数据和新数据需要事先按照关键字段排序,并且旧数据和新数据要有雷同的字段名称。
    合并后的数据将包罗旧数据泉源和新数据泉源里的所有数据,对于变化的数据,使用新数据取代旧数据,同时在效果里用一个标示字段,来指定新旧数据的比较效果。
任务:利用合并记载控件比较合并记载-新旧excel的数据,并预览数据,检察标志字段的内容
原始数据:
https://img-blog.csdnimg.cn/c0590da9c71f4e50be2d55b60d61840f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/47a34fe95c414e3f94f55b03520202c7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_17,color_FFFFFF,t_70,g_se,x_16
1.旧数据源:选择旧数据泉源的步骤
2.新数据源:选择新数据泉源的步骤
3.标志字段:设置标志字段的名称,标志字段用于保存比较的效果,比较效果有下列几种:


[*] ①“identical” – 旧数据和新数据一样
[*] ②“changed” – 数据发生了变化;
[*] ③“new” – 新数据中有而旧数据中没有的记载
[*] ④“deleted” –旧数据中有而新数据中没有的记载
4.关键字段:用于定位判定两个数据源中的同一条记载的字段。
5.比较字段:对于两个数据源中的同一条记载,指定需要比较的字段
https://img-blog.csdnimg.cn/fcfb780ce4c445c9a1e8fab1971212ae.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_16,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/9509069865254f0fb11d41a3c8404a2a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_13,color_FFFFFF,t_70,g_se,x_16
3.7.2 记载集毗连

   记载集毗连可以对两个步骤中的数据流进行左毗连,右毗连,内毗连,外毗连。此控件功能比较强大,企业做ETL开发会经常用到此控件,但是需要注意在进行记载集毗连之前,需要对记载集的数据进行排序,并且排序的字段还一定要选两个表关联的字段,否则数据错乱,出现null值。
任务:使用记载集毗连控件对数据库表satff和department按照部门id分别进行内毗连,左毗连,右毗连,外毗连,检察数据的不同
原始数据:
https://img-blog.csdnimg.cn/280e2bbd2d12409ea9e9a4adbeee7efa.png
https://img-blog.csdnimg.cn/ef5c3b749fdc41f094229f75c47b7245.png
注意:两个表进行排序记载的时间,排序的字段一定要选择部门id,否则数据会不正确
https://img-blog.csdnimg.cn/43231ae325ca4d75bc0602d4694d26f3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_17,color_FFFFFF,t_70,g_se,x_16
1.选择需要毗连的两个数据流的步骤
2.选择毗连范例,一共有四个:INNER,LEFT OUTER,RIGHT OUTER,FULL OUTER
3.从两个数据流步骤内里选出毗连字段
https://img-blog.csdnimg.cn/34bb3288f3724caf8cb9d9977ebcfc91.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/6ff5c726ac41408b9f892814fcad389b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/acca1b14d48c4ac88d684e3217fa1682.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/ccbbe9c2f95f422584cad37a1b013c89.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/4b9d7185def944ee840b1e3d3616d101.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.8Kettle统计控件
   统计是转换内里的第十三个分类,统计控件可以提供数据的采样和统计功能。
3.8.1 分组

   分组控件的功能雷同于GROUP BY,可以按照指定的一个大概几个字段进行分组,然后其余字段可以按照聚合函数进行合并计算。注意,在进行分组之前,数据最好先辈行排序。
任务:给表staff的数据按照部门进行分组,求出各部门人数以及各部门员工的平均年龄。
原始数据:
https://img-blog.csdnimg.cn/735d6b5a0b5e4889857c7b7b32e54233.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_15,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/b3df201a9e0949ae861860c9be667660.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_16,color_FFFFFF,t_70,g_se,x_16
1.选择分组字段
2.给其余字段选择合适的聚合函数进行计算
https://img-blog.csdnimg.cn/3bae376b1a8b438eb44d71e711839bf9.png
执行效果:
https://img-blog.csdnimg.cn/c297558a8c1446eda62ea028c71c819f.png
3.9 Kettle映射控件

   映射是转换内里的第十八个分类,映射可以用来定义子转换,方便代码封装和重用。
3.9.1 映射
   映射(子转换)是用来设置子转换,对子转换进行调用的一个步骤。
https://img-blog.csdnimg.cn/4302a746d0494fbcb7ae01821e19019c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
映射输入规范是输入字段,由调用的转换输入。
https://img-blog.csdnimg.cn/b4aa7436656b4713878302993899ffd0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
映射输出规范是向调用的转换输出所有列,不做任那边理
https://img-blog.csdnimg.cn/ab550717ab124ecbb1a6b39ce25550e8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_20,color_FFFFFF,t_70,g_se,x_16
任务:封装一个子转换能够通过dept_id求出dept_name,然后使用另外一个转换调用此子转换,求出数据库staff表id=3的员工的姓名,年龄,部门id,部门姓名,并输出到控制台。
https://img-blog.csdnimg.cn/6ee7b78fcfbb4676a5379cb9541936b8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_14,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/3958ea0a2bda4c7eb3cfc4d41a44d188.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_14,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/41bae4aeac104c51bed0c8833acb0d8c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_15,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/47244023108642b8892491f99ba09f4f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_18,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/57b0b762020a4581bf47d0d61bbf64d2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_15,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/5b54ca32c14b4a62bf6bdf4ef7790c95.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_17,color_FFFFFF,t_70,g_se,x_16
3.10 Kettle脚本控件
   脚本是转换的第七个分类,脚本就是直接通过写程序代码完成一些复杂的利用。
3.10.1执行SQL脚本

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里不停到现在。
深知大多数大数据工程师,想要提升技能,往往是自己摸索成长大概是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技能故步自封!
因此收集整理了一份《2024年大数据全套学习资料》,初志也很简朴,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
https://img-blog.csdnimg.cn/img_convert/6e206f5ddc128755cb2cb79202156dad.png
https://img-blog.csdnimg.cn/img_convert/7493e423ee694f85b0c8b6382edde24f.png
https://img-blog.csdnimg.cn/img_convert/90feed6977997101401525e459870eef.png
https://img-blog.csdnimg.cn/img_convert/d7e357881dc19c74208cb243f96844e3.png
https://img-blog.csdnimg.cn/img_convert/fae48c82c22784862ee95c5cfac21e2f.png
既有适合小白学习的零基础资料,也有适合3年以上履历的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!
由于文件比较大,这里只是将部门目录大纲截图出来,每个节点内里都包含大厂面经、学习条记、源码讲义、实战项目、讲授视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
https://img-blog.csdnimg.cn/img_convert/79b6f900afd6b7bff9b2dfa78ffaeffd.png
iigQ==,size_14,color_FFFFFF,t_70,g_se,x_16)
https://img-blog.csdnimg.cn/41bae4aeac104c51bed0c8833acb0d8c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_15,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/47244023108642b8892491f99ba09f4f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_18,color_FFFFFF,t_70,g_se,x_16
https://img-blog.csdnimg.cn/57b0b762020a4581bf47d0d61bbf64d2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_15,color_FFFFFF,t_70,g_se,x_16
执行效果:
https://img-blog.csdnimg.cn/5b54ca32c14b4a62bf6bdf4ef7790c95.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn5pWw5o2uX-Wwj-iigQ==,size_17,color_FFFFFF,t_70,g_se,x_16
3.10 Kettle脚本控件
   脚本是转换的第七个分类,脚本就是直接通过写程序代码完成一些复杂的利用。
3.10.1执行SQL脚本

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里不停到现在。
深知大多数大数据工程师,想要提升技能,往往是自己摸索成长大概是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技能故步自封!
因此收集整理了一份《2024年大数据全套学习资料》,初志也很简朴,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-Vb0BBbaF-1712888057336)]
[外链图片转存中…(img-KSo6Pafe-1712888057337)]
[外链图片转存中…(img-QQRlM5VV-1712888057337)]
[外链图片转存中…(img-xjuZl0UX-1712888057337)]
[外链图片转存中…(img-EztldMnd-1712888057337)]
既有适合小白学习的零基础资料,也有适合3年以上履历的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!
由于文件比较大,这里只是将部门目录大纲截图出来,每个节点内里都包含大厂面经、学习条记、源码讲义、实战项目、讲授视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-1JWeLEI3-1712888057338)]

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 大数据ETL开发之图解Kettle工具(入门到精通)