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

第0章 ETL简介

===========================================================================

ETL (Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种ETL工具的使用,必不可少。

市面上常用的ETL工具有很多,比如Sqoop,DataX, Kettle, Talend 等,作为一个大数据工程师,我们最好要掌握其中的两到三种,这里我们要学习的ETL工具是Kettle!

第1章 Kettle简介

==============================================================================

1.1 Kettle是什么


Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、 Unix.上运行,绿色无需安装,数据抽取高效稳定。

Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后以一种指定的格式流出。

Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。

Kettle中有两种脚本文件,transformationjob,transformation 完成针对数据的基础转换,job则完成整个工作流的控制。

Kettle(现在已经更名为PDI, Pentaho Data Integration Pentaho数据集成)

1.2 Kettle的两种设计


简述

  • Transformation (转换) :完成针对数据的基础转换。

  • Job (作业) :完成整个工作流的控制。

区别

  • (1) 作业是步骤流,转换是数据流。这是作业和转换最大的区别。

  • (2)作业的每一个步骤,必须等到前面的步骤都跑完了,后面的步骤才会执行;而转换会一次性把所有控件全部先启动(一个控件对应启动一个线程),然后数据流会从第一个控件开始,一条记录、一条记录地流向最后的控件;

在这里插入图片描述

1.3 Kettle的核心组件


  • Spoon.bat / spoon.sh(重点):是一个图形化界面,可以让我们用图形化的方式开发转换和作业(Windows选择Spoon.bat;Linux选择Spoon.sh)

  • Pan.bat / pan.sh:利用Pan可以用命令行的形式执行由Spoon编辑的转换和作业

  • Kitchen.bat / kitchen.sh:利用Kitchen可以使用命令调用由Spoon编辑好的Job

  • Carte.bat / Carte.sh:Carte是一个轻量级的Web容器,用于建立专用、远程的ETL Server

在这里插入图片描述

1.4 Kettle的特点


在这里插入图片描述

第2章 Kettle安装部署

================================================================================

2.1 Kettle 下载


2.1.1 下载地址

官网:官网地址

下载地址:各版本下载链接

百度网盘:百度网盘地址 ,提取码:beeo

2.1.2 Kettle目录说明

在这里插入图片描述

2.1.2 Kettle 文件说明

在这里插入图片描述

2.2 Kettle 安装部署


2.2.1 概述

在实际企业开发中,都是在本地Windows环境下进行 kettle 的 job 和 Transformation 开发的,可以在本地运行,也可以连接远程机器运行

2.2.2 安装

1)安装 jdk,版本建议1.8及以上

2)下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可

3)双击Spoon.bat,启动图形化界面工具,就可以直接使用了

2.3 Kettle 界面介绍


2.3.1 主界面

在这里插入图片描述

2.3.2 转换

在这里插入图片描述

2.3.3 作业

在这里插入图片描述

2.4 Kettle转换初次体验


体验案例:将 csv 文件用 Kettle 转换成 excel 文件

在这里插入图片描述

1)在 Kettle 中新建一个转换,然后选择转换下面的 “csv文件输入” 和 “excel文件输出” 拖至工作区

在这里插入图片描述

2)双击CSV文件输入文件控件,在弹出的设置框里找到对应的csv文件(test.csv).然后点击下面的获取字段按钮,将我需要的字段加载到kettle中

在这里插入图片描述

3)按住键盘 shift 键,并且点击鼠标左键将两个控件链接起来,链接时选择 “主输出步骤”

在这里插入图片描述

4)双击Excel输出控件,在弹出的设置框里设置文件输出路径和文件名称,然后点击上的字段框,依次点击下面的获取字段和最小宽度,获取到输出字段

在这里插入图片描述

5)点击运行,启动,查看转换好的文件

在这里插入图片描述

在这里插入图片描述

转换成功:

在这里插入图片描述

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)

在这里插入图片描述

2.5.3 步骤

步骤(控件)是转换里的基本的组成部分,快速入「]的案例中就存在两个步骤,“CSV文件输入”“Excel输出”

一个步骤有如下几个关键特性:

  • 1.步骤需要有一个名字,这个名字在同一个转换范围唯一

  • 2.每个步骤都会数据行(唯一例外是 “生成记录”步骤,该步骤只写数据

  • 3.步骤将数据写到与之相连的一个或多个输出跳(hop),再传送到跳的另一端的步骤

  • 4.大多数的步骤都可以有多个输出跳。–个步骤的数据发送可以被设置为分发复制

分发是目标步骤轮流接收记录,复制是所有的记录被同时发送到所有的目标步骤

在这里插入图片描述

2.5.4 跳(Hop)

就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路

在这里插入图片描述

跳实际上是两个步骤之间的被称之为行集的数据行缓存,行集的大小可以在转换的设置里定义。当行集了,向行集写数据的步骤将停止写入,直到行集里又有了空间。当行集了,丛行集读取数据的步骤停止读取,直到行集里又有可读的数据行

在这里插入图片描述

2.5.5 元数据

每个步骤在输出数据行时都有对字段的描述,这种描述就是数据行的元数据

通常包含下面一些信息

  • 名称:数据行里的字段名是唯一的。

  • 数据类型:字段的数据类型。

  • 格式:数据显示的方式,如 Integer 的 #、0.00

  • 长度:字符串的长度或者 BigNumber 类型的长度。

  • 精度:BigNumber数据类型的十进制精度。

  • 货币符号:¥

  • 小数点符号:十进制数据的小数点格式。不同文化背景下小数点符号是不同的,一般是点“.”或 逗号“,”

  • 分组符号:数值类型数据的分组符号,不同文化背景下数字里的分组符号也是不同的,一般是点“.”或逗号“,”或单引号 ’

在这里插入图片描述

2.5.6 数据类型

数据以数据行的形式沿着步骤移动。一个数据行是零到多个字段的集合,字段包含下面几种数据类型。

  • String:字符类型数据

  • Number:双精度浮点数。

  • Integer:带符号长整型(64位)。

  • BigNumber:任意精度数据。

  • Date:带毫秒精度的日期时间值。

  • Boolean:取值为true和false的布尔值。

  • Binary:二进制字段可以包含图像、声音、视频及其他类型的二进制数据。

在这里插入图片描述

2.5.7 并行

跳的这种基王行集缓在的规则允许每个步骤都是由一个独立的线程运行,这样并发程度最高。这一规则也允许数据以最小消耗内存的数据流的方式来处理。在数据仓库里,我们经常要处理大量数据,所以这种高并发低消耗的方式也是 ETL 工具的核心需求。

对于 kettle 的转换,不能定义一个执行顺序,因为所有步骤都以并发方式执行:当转换启动后,所有步骤都同时启动,从它们的输入跳中读取数据,并把处理过的数据写到输出跳,直到输入跳里不再有数据,就中止步骤的运行。当所有的步骤都中止了,整个转换就中止了。

如果你想要一个任务沿着指定的顺序执行,那么就要使用下面所讲的“作业”!

2.5.8 作业

作业(Job),负责定义一个完成整个工作流的控制,比如将转换的结果发送邮件给相关人员。因为转换(transformation) 以并行方式执行,所以必须存在一个串行的调度工具来执行转换,这就是Kettle 中的作业。

第3章 Kettle的转换

===============================================================================

3.1 Kettle输入控件


输入是转换里面的第一个分类, 输入控件也是转换中的第一大控件, 用来抽取数据或者生成数据。输入是ETL里面的E (Extract),主要做数据提取的工作。

在这里插入图片描述

由于Kettle中自带的输入控件比较多,本文只挑出开发中经常使用的几个输入控件来进行讲解,详情如下图:

在这里插入图片描述

3.1.1 CSV文件输入

CSV 文件是一个用逗号分隔的固定格式的文本文件,这种文件后缀名为.csv,可以用Excel或者文本编辑器打开。在企业里面一般最常见的 ETL 需求就是将 csv 文件转换为 excel 文件,如果用 Kettle 来做这个 ETL工作,就需要用到本章节讲解的CSV文件输入控件。

任务:熟悉CSV文件输入控件,并尝试将CSV文件转换成Excel文件(可参考上面的快速体验案例)。

在这里插入图片描述

  • 步骤名称:可以修改,但是在同一个转换里面要保证唯一 性, 见名知意

  • 文件名:选择对应的csv文件

  • 列分隔符:默认是逗号(不用改)

  • 封闭符:结束行数据的读写(不用改)

  • NIO 缓存大小:文件如果行数过多,需要调整此参数

  • 包含列头行:意思是文件中第一行是字段名称行,表头不进行读写

  • 行号字段:如果文件第一行不是字段名称或者需要从某行开始读写,可在此输入行号。

  • 并发运行? :选择并发,可提高读写速度

  • 字段中有回车换行? :不要选择,会将换行符做数据读出

  • 文件编码:如果预览数据出现乱码,可更换文件编码

3.1.2 文本文件输入

提取服务器上的日志信息是公司里 ETL开发很常见的操作,日志信息基本上都是文本类型,因此文本文件输入控件是kettle中常用的一个输入控件。

任务:熟悉文本文件输入控件,并新建转换,将txt日志文件转换为Excel文件

使用文本文件输入控件步骤:

1) 添加需要转换的日志文件

在这里插入图片描述

2)按照日志文件格式,指定分隔符

在这里插入图片描述

3)获取下字段,并给字段设置合适的格式(数字类型的数据尽量选Integer,因为number类型有两位小数点)

4)最后点下预览记录,看看能否读到数据

在这里插入图片描述

在这里插入图片描述

3.1.3 Excel文件输入

Excel输入控件也是很常用的输入控件,一般企业里会用此控件对大量的Excel文件进行ETL操作。

任务:两张sheet表合二为一

使用Excel输入控件步骤如下

原始数据:

在这里插入图片描述

在这里插入图片描述

1)按照读取的源文件格式指定对应的表格类型为 xls 还是 xlsx

2)选择并添加对应的excel文件

在这里插入图片描述

3)获取excel的sheet工作表

在这里插入图片描述

在这里插入图片描述

4)获取字段,并给每个字段设置合适的格式

在这里插入图片描述

5)预览数据

在这里插入图片描述

3.1.4 XML输入

1)XML简介

XML可扩展标记语言eXtensible MarkupLanguage,由W3C组织发布,目前推荐遵守的是W3C组织于2000年发布的XML1.0规范。XML用来传输和存储数据,就是以一个统一的格式,组织有关系的数据,为不同平台下的应用程序服务。

在这里插入图片描述

2)XPath简介

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。XPath使用路径表达式在XML文档中选取节点。下面列出了最有用的路径表达式

在这里插入图片描述

3)XML输入控件

了解XML和XPath概念以后,我们要开始学习Kettle的XML输入控件,企业里经常用此控件进行XML文件的ETL操作。

任务:熟悉XML输入控件,将XML文件的学生数据写到excel文件中

1.浏览获取xml文件,将xml文件添加到kettle中

在这里插入图片描述

2.获取 xml文档的所有路径,设置合适的循环读取路径

在这里插入图片描述

3.获取字段,获得自己想要读取的所有字段,并且设置适当的格式

在这里插入图片描述

4.预览数据,看看能否读取到自己想要的数据

在这里插入图片描述

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.book[0]title

  • 括号记法:$[‘store’][‘book’ ][0][ ‘ title’ ]

在这里插入图片描述

3)JSON 输入控件

了解JSON格式和JSON Path以后,我们要学习使用JSON输入控件,JSON控件也是企业里做ETL常用的控件之一

任务:获取到JSON文件里面的id,field,value字段,写到excel文件中

原始数据:

在这里插入图片描述

1.浏览获取JSON文件(注意文件路径不能有中文),将json文件获取到kettle中

在这里插入图片描述

2.根据JSON Path点记法,获取到需要的字段,并且设置合适格式

在这里插入图片描述

在这里插入图片描述

3)新建JSON输入控件2

第二步的数据内容为:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.1.6 表输入

表输入可以说是kettle中用到最多的一种输入控件, 因为企业中大部分的数据都会存在数据库中。kettle可以连接市面上常见的各种数据库,比如Oracle,Mysql, SqlServer等。但是在连接各个数据库之前,我们需要先配置好对应的数据库驱动,本教程以mysql为例,给大家讲解kettle连接mysql数据库的过程。

在这里插入图片描述

1)创建数据库连接

MySQL驱动下载(一定要下载对应数据库版本):官网下载地址

在这里插入图片描述

首先我们要将对应版本的mysql连接驱动放到kettle 安装目录下面的lib文件夹下,然后重启kettle 的客户端Spoon

在这里插入图片描述

重启Spoon客户端以后,我们就可以创建对应的数据库连接了,在转换视图的主对象树目录下,有个DB连接,右键然后选择新建,在打开数据库连接框里,填写正确的数据库信息,然后测试,测试无误后,可以保存此数据库连接。

在这里插入图片描述

在这里插入图片描述

数据库连接默认只对本转换有效,换一个转换以后,这个连接就没法用了,还需要新建数据库连接,所以我们需要将建好的这个数据库连接进行共享下,共享以后,其他的转换也能用我们提前建好的这个数据库连接了。

在这里插入图片描述

2)表输入

创建好数据库连接以后,我们就可以使用表输入控件了,双击表输入控件,选择刚刚创建的数据库连接,然后在SQL框里输入合适的查询语句,然后点击预览按钮,看能否预览到我们期望的数据

在这里插入图片描述

3.2 Kettle输出控件


输出是转换里面的第二个分类,输出控件也是转换中的第二大控件,用来存储数据。输出是ETL里面的L(Load),主要做数据加载的工作。

由于Kettle中自带的输出控件比较多,本文只挑出开发中经常使用的几个输出控件来进行讲解,详情如下图

在这里插入图片描述

3.2.1 Excel输出

Kettle中自带了两个Excel输出,一个Excel输出,另一个是Microsoft Excel输出。Excel输出只能输出xls文件(适合Excel2003),Microsoft Excel输出可以输出xls和xlsx文件(适合Excel2007及以后)

Excel输出大家已经很熟悉了,本章不再赘述,接下来给大家讲下Microsoft Excel输出。

1)选择合适的扩展名

2)点击浏览,补全输出文件的路径已经文件名

在这里插入图片描述

3.2.2 文本文件输出

文本文件输出控件,顾名思义,这是一个能将数据输出成文本的控件,比较简单,在企业里面也比较常用。

1.设置对应的目录和文件名

2.设置合适的扩展名,比如txt,csv等

在这里插入图片描述

3.在内容框里设置合适的分隔符,比如分号,逗号,TAB等

在这里插入图片描述

4.在字段框里获取字段,并且给每个字段设置合适的格式

在这里插入图片描述

3.2.3 SQL文件输出

SQL文件输出一般跟表输入做连接,然后将数据库表的表结构和数据以sql文件的形式导出,然后做数据库备份的这么一个工作。(Kettle里面没varchar类型尽量少用)

1.选择合适的数据库连接

2.选择目标表

3.勾选增加创建表语句和每个语句另起一行

4.填写输出文件的路径和文件名

5.扩展名默认为sql,这个不需要更改

在这里插入图片描述

3.2.4 表输出

表输出控件可以将kettle数据行中的数据直接写入到数据库中的表中,企业里做ETL工作会经常用到此控件。

1.选择合适的数据库连接

2.选择目标表,目标表可以提前在数据库中手动创建好,也可以输入一个数据库不存在的表,然后点击下面的SQL按钮,利用kettle现场创建

3.如果目标表的表结构和输入的数据结构不一致,还可以自己指定数据库字段

在这里插入图片描述

在这里插入图片描述

3.2.5 更新&插入/更新

更新和插入/更新,这两个控件是kettle提供的将数据库已经存在的记录与数据流里面的记录进行对比的控件。企业级ETL 经常会用到这两个控件来进行数据库更新的操作

两者区别

  • 更新是将数据库表中的数据和数据流中的数据做对比,如果不同就更新,如果数据流中的数据比数据库表中的数据多,那么就报错。

  • 插入/更新的功能和更新一样,只不过优化了数据不存在就插入的功能,因此企业里更多的也是使用插入/更新。

步骤:

1.选择正确的数据库连接

2.选择目标表

3.输入两个表来进行比较的字段,一般来说都是用主键来进行比较

4.输入要更新的字段

在这里插入图片描述

在这里插入图片描述

3.2.6 删除

删除控件可以删除数据库表中指定条件的数据,企业里一般用此控件做数据库表数据删除或者跟另外一个表数据做对比,然后进行去重的操作。

1.选择数据库连接

2.选择目标表

3.设置数据流跟目标表要删除数据的对应字段

在这里插入图片描述

在这里插入图片描述

3.3 Kettle转换控件


转换控件是转换里面的第四个分类,转换控件也是转换中的第三大控件,用来转换数据。转换是ETL里面的T(Transform),主要做数据转换,数据清洗的工作。ETL整个过程中,Transform的工作量最大,耗费的时间也比较久,大概可以占到整个ETL的三分之二。

由于Kettle中自带的转换控件比较多,本文只挑出开发中经常使用的几个转换控件来进行讲解,详情如下图。

在这里插入图片描述

3.3.1 Concat fields

转换控件Concat fields,顾名思义,就是将多个字段连接起来形成一个新的字段

任务:将staff表的firstname和lastname拼接起来,形成name字段,然后再将数据插入到新表emp中

原始数据:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.3.2 值映射

值映射就是把字段的一个值映射(转换)成其他的值。在数据质量规范上使用非常多,比如很多系统对应性别sex字段的定义不同。所以我们需要利用此控件,将同一个字段的不同的值,映射转换成我们需要的值。

任务:将staff表的sex字段,映射成男or女,然后再插入到emp表中

原始数据:

在这里插入图片描述

1.选择映射的字段

2.还可以自定义映射完以后的新字段名

3.可以设置不匹配时的默认值

4.设置映射的值

在这里插入图片描述

在这里插入图片描述

3.3.3 增加常量&增加序列

增加常量就是在本身的数据流里面添加一列数据,该列的数据都是相同的值。

增加序列是给数据流添加一个序列字段,可以自定义该序列字段的递增步长。

任务:给表staff的数据加一列固定值slary和一个递增的number序列,在控制台预览下数据即可,不用输出

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.3.4 字段选择

字段选择是从数据流中选择字段、改变名称、修改数据类型。

任务:在上一章节的转换之后,添加字段选择控件,移除掉firstname字段,并且将lastname重命名为name,将slary重命名为money,然后再次预览数据,查看数据的变化

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.3.5 计算器

计算器是一个函数集合来创建新的字段,还可以设置字段是否移除(临时字段)。我们可以通过计算器里面的多个计算函数对已有字段进行计算,得出新字段。

任务:在上一节的任务基础之上,添加计算器控件对money和number字段进行相乘,得出新字段acount,然后预览数据

在这里插入图片描述

在这里插入图片描述

执行结果:

在这里插入图片描述

3.3.6 字符串剪切&替换&操作

转换控件中有三个关于字符串的控件,分别是剪切字符串,字符串操作,字符串替换

剪切字符串是指定输入流字段裁剪的位置剪切出新的字段

在这里插入图片描述

字符串替换是指定搜索内容和替换内容,如果输入流的字段匹配上搜索内容就进行替换生成新字段

在这里插入图片描述

字符串操作是去除字符串两端的空格和大小写切换,并生成新的字段

在这里插入图片描述

执行结果:

在这里插入图片描述

3.3.7 排序记录&去除重复记录

去除重复记录是去除数据流里面相同的数据行。但是此控件使用之前要求必须先对数据进行排序,对数据排序用的控件是排序记录,排序记录控件可以按照指定字段的升序或者降序对数据流进行排序。因此排序记录+去除重复记录控件常常配合组队使用。

任务:利用excel输入控件读取input目录下的06_去除重复记录.xlsx,然后对里面重复的数据进行按照id排序并去重

原始数据:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

执行结果:

在这里插入图片描述

3.3.8 唯一行(哈希值)

唯一行(哈希值)就是删除数据流重复的行。此控件的效果和(排序记录+去除重复记录)的效果是一样的,但是实现的原理不同。排序记录+去除重复记录对比的是每两行之间的数据,而唯一行(哈希值)是给每一行的数据建立哈希值,通过哈希值来比较数据是否重复,因此唯一行(哈希值)去重效率比较高,也更建议大家使用。

任务:利用唯一行(哈希值)控件对06_去除重复记录.xlsx去重,并且查看最后输出的数据跟上个任务有何区别

在这里插入图片描述

在这里插入图片描述

执行结果:

在这里插入图片描述

3.3.9 拆分字段

拆分字段是把字段按照分隔符拆分成两个或多个字段。需要注意的是,字段拆分以后,原字段就会从数据流中消失

任务:将拆分字段.xlsx里面的NBA球星的姓名,拆分成姓跟名

文件内容:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

执行结果:

在这里插入图片描述

3.3.10 列拆分为多行

列拆分为多行就是把指定字段按指定分隔符进行拆分为多行,然后其他字段直接复制。具体效果如下图:

在这里插入图片描述

任务:对08_列拆分为多行.xlsx的数据按照hobby字段进行拆分为多行,然后将新数据输出到excel文件中,查看数据

原始数据:

在这里插入图片描述

1.选择要拆分的字段

2.设置合适的分割符

3.设置分割以后的新字段名

4.选择是否输出新数据的排列行号,行号是否重置

在这里插入图片描述

在这里插入图片描述

执行结果:

在这里插入图片描述

3.3.11 行扁平化

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

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

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

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

任务:将09_行扁平化.xlsx的数据按照hobby字段进行扁平化

原始数据:

在这里插入图片描述

在这里插入图片描述

1.选择扁平化的字段

2.填写目标字段,字段个数跟每个分组的数据一致

3.3.12 列转行

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

在这里插入图片描述

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

任务:将input目录下的10_列转行.xlsx的数据进行列转行,熟悉列转行控件的使用

原始数据:

在这里插入图片描述

在这里插入图片描述

1.关键字段:从数据内容变成列名的字段

2.分组字段:列转行,转变以后的分组字段

3.目标字段:增加的列的列名字段

4.数据字段:目标字段的数据字段

5.关键字值:数据字段查询时的关键字,也可以理解为key

6.类型:要给目标字段设置合适的类型,否则会报错

在这里插入图片描述

执行结果:

在这里插入图片描述

3.3.13 行转列

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

在这里插入图片描述

任务:将行转列.xlsx用excel控件输入,然后行转列,熟悉行转列控件的使用。

原始数据:

在这里插入图片描述

在这里插入图片描述

1.Key字段:行转列,生成的列名字段名

2.字段名称:原本数据流中的字段名

3.Key值:Key字段的值,这个是自己自定义的,一般都跟前面的字段名称一样

4.Value字段:对应的Key值的数据列的列名

在这里插入图片描述

执行结果:

在这里插入图片描述

3.4 Kettle应用控件


应用是转换控件里面的第五个分类,这个分类下是Kettle给我们自带的一些工具类

3.4.1 替换NULL值

替换NULL值,顾名思义就是将数据里面的null值替换成其他的值,此控件比较简单,但是在企业里面也会经常用到。

1.可以选择替换数据流中所有字段的null值

2.也可以选择字段,在下面的字段框里面,根据不同的字段,将null值替换成不同的值

任务:替换excel数据12_替换NULL值.xlsx的bonus列的null值为0

原始数据:

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

执行结果:

在这里插入图片描述

3.4.2 写日志

写日志控件主要是调试的时候使用,此控件可以将数据流的每行数据打印到控制台,方便我们调试整个程序。

1.选择日志级别

2.可以输入自定义输出的语句

3.选择要输出打印的字段

任务:在上个任务的基础之上,添加写日志控件,在控制台输出查看数据

在这里插入图片描述

执行结果:

在这里插入图片描述

在这里插入图片描述

3.5 Kettle流程控件


流程是转换里面的第六个分类,流程分类下的控件主要用来控制数据流程和数据流向。

3.5.1 Switch/case

Switch/case控件,最典型的数据分类控件,可以利用某一个字段的数据的不同的值,让数据流从一路到多路。

任务:将excel:13_Switch-Case.xlsx的数据按照部门字段进行分类,将同一个部门的数据输出到一个excel中

原始数据:

在这里插入图片描述

1.选择需要判断的字段

2.选择判断字段的值的类型

3.填写分类数据的判断条件和目标步骤

在这里插入图片描述

在这里插入图片描述

执行结果:

在这里插入图片描述

在这里插入图片描述

3 .5.2 过滤记录

和Switch/case做对比的话,过滤记录相当于if-else,可以自定义输入一个判断条件,然后将数据流中的数据一路分为两路

任务:将数据按照工资字段进行判断,将工资在20000及以上的数据输出到一个excel中,将工资小于20000的输出到另外一个excel中

原始数据:

在这里插入图片描述

1.在下面先填写数据的判断条件

2.然后再上面选择下判断条件为true或者false的输出步骤

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

执行结果:

在这里插入图片描述

在这里插入图片描述

3.5.3 空操作

空操作,顾名思义就是什么也不做,此控件一般作为数据流的终点。

任务:修改上节的转换任务,将工资大于等于20000的数据输出,小于20000的数据直接丢弃,熟悉空操作控件的使用。

在这里插入图片描述在这里插入图片描述

3.5.3 中止

中止是数据流的终点,如果有数据流到此控件处,整个转换程序将中止,并且在控制台输出报错信息。此控件一般用来校验数据,或者调试程序

任务:使用中止控件判断上节任务中是否有人的工资低于20000,如果发现有人的工资低于20000的话,中止程序,并在控制台输出信息。

在这里插入图片描述
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

/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_16)在这里插入图片描述

3.5.3 中止

中止是数据流的终点,如果有数据流到此控件处,整个转换程序将中止,并且在控制台输出报错信息。此控件一般用来校验数据,或者调试程序

任务:使用中止控件判断上节任务中是否有人的工资低于20000,如果发现有人的工资低于20000的话,中止程序,并在控制台输出信息。

在这里插入图片描述
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-F1FFyfJ2-1712672764893)]

[外链图片转存中…(img-8oS7ZTSE-1712672764894)]

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据ETL开发是指将大量数据从原始数据源转换成可用的数据。在ETL开发中,ETL代表提取(Extract)、转换(Transform)和装载(Load)数据。ETL开发面试题通常会针对这三个方面进行提问。以下是一些可能出现在大数据ETL开发面试中的问题: 1.简要介绍一下你的ETL经验是什么? 这个问题主要是了解应聘者是否有相关的工作经验。应聘者可以提及过往项目中的ETL流程设计、数据清洗、数据转换等经验。 2.你能够说明ETL流程的步骤吗? ETL流程包括数据来源、数据提取、数据处理和数据装载。通过简单介绍每个步骤,让面试官了解你的ETL知识水平。 3.你如何处理数据源中的异常数据? 出现非法数据是大数据ETL开发过程中经常会遇到的问题,应聘者需要说明如何进行数据清洗、处理以及如何测试异常数据。 4.你如何保证ETL作业的正确性和完整性? 应聘者可以讲述ETL作业执行的日志和监控机制,以及如何通过自动化测试工具确保作业的正确性。 5.你如何在ETL作业的生产环节中解决故障? 这个问题涉及到实际工作中产生的问题,应聘者可以讲述如何通过查找日志、监控作业、采取手动干预等方式解决故障。 总之,大数据ETL开发的面试题目涉及很多方面,包括工作经验、技术知识和解决问题的方法。准备面试时,应聘者需要关注技术趋势,了解最新的ETL工具及技术,并进行适当的技术准备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值