kettle基础总结
企业数据仓库模型
企业数据仓库的数据来源可以是历史数据;也可以是正在运行的业务系统的数据,如OA,CRA,MES;或者其他数据如第三方数据,还有日志数据。这些数据如何进入数据仓库呢?这就需要借助ETL,ETL过来之后,我们会对数据进行维度建模,分为维度表和事实表。建立好之后,我们对数据进行汇总,构建数据集市。之后,为数据分析进行数据处理,建立专门针对报表开发的数据接口;或建立针对OLAP多维数据建模的数据接口;或建立针对数据挖掘的数据接口;或者建立针对商业模型的数据接口。这样的数据接口搭建好后,我们就可以在企业门户网站进行调用,最终我们的用户就可以通过企业门户网站对数据进行访问了,从而产生数据的价值。所以企业数据仓库的搭建一个最主要的过程就是ETL。
ETL简介
ETL即数据抽取E,转换T,装载L,对于企业或行业应用来说,我们经常会遇见各种数据的处理,转换,迁移,所以对于数据开发人员来说,了解并掌握一种ETL工具的使用是必不可少的。
Kettle简介
kettle是一款开源的ETL工具,存java编写,可以在wind,linux,unix上运行,绿色无需安装,数据抽取高效稳定。**kettle中文名称为水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后以一种指定的格式流出。kettle允许开发人员管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想干什么,而不是你想怎么做。kettle中有两种脚本文件,transformation和job,其中transformation完成针对数据的基础转换,而job则完成整个工作流的控制。**kettle现在已经更名为PDI即数据集成。
kettle结构中的Spoon和Data Integration Server,其中的Spoon是构建ETL Jobs和Transformations的工具。Spoon是以拖拽的方式进行图形化设计,能够通过Spoon调用专用的数据集引擎或者集群,即Spoon是图形界面接口。Data Integration Server是一个专用的ETL Server,它的主要功能有:
功能 | 描述 |
---|---|
执行 | 通过Pentaho Data Integration引擎执行ETL的作业或转换 |
安全性 | 管理用户、角色或集成的安全性 |
内容管理 | 提供一个集中的资源库,用来管理ETL的作业和转换。资源库包含所有内容和特征的历史版本。 |
时序安排 | 在Spoon设计者环境中提供管理Data Integration Server上的活动的时序和监控的服务 |
kettle的核心组件
名称 | 描述 |
---|---|
Spoon | 通过图形接口,用于编辑作业和转换的桌面应用。 |
Pan | 一个独立的命令行程序,用于执行由Spoon编辑的转换和作业。 |
Kitchen | 一个独立的命令行程序,用于执行由Spoon编辑的作业。 |
Carte | Carte是一个轻量级的Web容器,用于建立专用、远程的ETL Server。 |
kettle核心概念
1、可视化编程
kettle是一种可视化编程语言,因为kettle可以使用图形化的方式来定义复杂的ETL程序和工作流。kettle里面的图就是转换和作业 。可视化编程一直都是kettle的核心概念,它可以让数据开发人员快速构建复杂的ETL作业和降低维护工作量,它通过隐藏很多技术细节,使得IT领域更贴近于商务领域。
2、转换
转换是ETL解决方案中最主要的部分,它处理抽取、转换、加载各种对数据行的操作。
转换可以包含一个或多个步骤(step),如读取文件,过滤数据行,数据清洗或将数据加载到数据库中。
转换里面的步骤是通过跳(hop)来连接的,跳定义了一个单向通道,允许数据从一个步骤向另一个步骤流动。
在kettle里,**数据的单位是行,数据流就是数据行从一个步骤到另一个步骤的移动。**数据流也称为记录流。
3、step步骤
步骤(控件)是转换里的基本组成部分,下述kettle将数据从csv复制到excel的案例中就包含了两个步骤,即“csv文件输入”和”excel输出“。其中step步骤是在上图的"核心对象栏目"下进行托拉拽过kettle工作区的。
一个步骤可以包含如下四个关键特性:1、步骤需要有一个名字,而且这个名字在转换的范围内必须是唯一的;2、每个步骤都会读、写数据行(唯一例外是“生成记录”步骤,该步骤只写数据);3、步骤将数据写到与之相连的一个或多个输出跳,再传送到跳的另一端的步骤;4、大多数的步骤都可以有多个输出跳,一个步骤的数据发送可以被设置为分发和复制,分发是目标步骤轮流接收记录,即发一条给A,再发另一条给B,所以A和B结果不同,默认是分发;复制是所有的记录被同时发送到所有的目标步骤中,即所发送的A和B一模一样。
4、hop跳
跳就是步骤之间带箭头的连接线,跳定义了步骤之间的数据通路。跳实际上是两个步骤之间的被称之为行集的数据行缓存(行集的大小可以在转换的设置里定义)。当行集满了,向行集写数据的步骤将停止写入,直到行集里又有了空间。当行集空了,从行集读取数据的步骤停止读取,直到行集里又有可读的数据行。
5、数据行-数据类型
数据是以数据行的形式沿着步骤移动的,一个数据行是零到多个字段的集合,字段包含下面7种数据类型:1、string:字符类型数据;2、number:双精度浮点型;3、integer:带符号的长整型(64位);4、bignumber:任意精度数据;5、date:带毫秒精度的日期时间值;6、Boolean:取值位true和false的布尔值;7、binary:二进制字段可以包含图像、声音、视频及其他类型的二进制数据。
6、数据行-元数据
每个步骤在输出数据行时都有对字段的描述,这种描述就是数据行的元数据。通常元数据包含下面的一些信息:1、名称:行里的字段名应用是唯一的;2、数据类型:字段的数据类型;3、格式:数据显示的方式,如integer的#、0.00;4、长度:字符串的长度或者bignumber类型的长度。5、精度:bignumber数据类型的十进制精度。6、货币符号;7、小数点符号:十进制数据的小数点格式,不同文化背景下小数点符号是不同的;8、分组符号:数据类型数据的分组符号,不同文化背景下数字里的分组符号也是不同的。
7、并行
跳的这种基于行集缓存的规则来完成的,也就是允许每个步骤都是由一个独立的线程运行的,这样的并发程度最高。这一个规则也允许数据以最小的消耗内存的数据流的方式来处理流数据,而不是要准备好所有数据,然后再一个一个运行,他的每个步骤都是单独的线程来运行的,所以**效率也是极高的。**在数据仓库里,我们经常要处理大量的数据,所以这种并发低消耗内存的方式也是ETL工具的核心需求。
对于kettle的转换,不能定义一个执行顺序的,因为所有的步骤都是以并发的方式执行:当转换启动后,所有步骤都是同时启动的,从他们的输入跳中读取数据,并把处理过的数据写到输入跳当中,直到输入跳里不再有数据,就中止步骤的运行。当所有步骤都中止了,整个转换就中止了(注意其执行顺序要与数据流向区分开,数据流向是有顺序的,而执行顺序是不能定义顺序的),如果想要一个任务沿着指定的顺序执行,那么就要使用后面的作业即job了。
kettle概念模型
kettle的执行分为两个层次:job(作业)和transformation(转换)。transformation由两个核心构成,一个是Step(步骤:可以给Hop发送数据,也可以读取hop里的数据),一个是Hop(跳,可以将数据发给Step)。
Job主要是做一些执行,得到文件,及校验,job可以执行本身,也可以执行转换(transformation),也可以校验数据表或文件是否存在,也可以执行Shell脚本或SQL脚本,也可以发送邮件。得到文件可以使用FTP,SFTP,HTTP。
kettle创建资源库
1、数据库资源库
数据库资源库是将作业和转换相关的信息存储在数据库中,执行的时候直接去数据库读取信息,很容易跨平台使用。
数据库资源库搭建步骤:
1、点击右上角connect→Repository Manager(存储库管理器),然后点击Other Resporitory(其他存储库)按钮。
2、点击Database Repository(数据库存储库)按钮→Get Started(开始)按钮。
3、设置连接详细信息,依次填写“显示名称”,“数据库连接名称”,勾选“启动时连接”(可勾选可不勾选)。
4、点击上一步的“数据库连接名称”右侧的向右箭头,弹出的功能框中点击“Create New Connection(创建新连接)”按钮,然后设置对应的数据库连接,选择相应的数据库类型(如mysql),设置“主机名称”,“数据库名称”,“端口号”,“用户名”,“密码”,设置完毕后点击“测试”按钮,显示测试成功后,点击“确定”按钮,然后点击“确认”按钮完成数据库资源库的配置。
5、第4步配置成功后,点击“Back“按钮返回到第3步的界面中,然后点击”Finish”按钮,系统显示“Congratulations(成功)”,再然后点击“Connect Now(现在连接)按钮”连接资源库,默认账号密码均为admin(也可以直接关闭后从步骤1右上端的Connect连已经配置好的数据库资源库)。
6、将本地存在的转换或者job导入资源库。选择“从XML文件导入”按钮,选中本地的转换或job后,在数据库资源库对应的存储位置点击确认即完成本地上传到资源库的操作。(连接好数据库资源库后,第1步右上端的connect上会显示对应的资源库名称),如果数据库资源库上有多个转换或者job的话,在“工具”→“资源库”→“探索资源库”中看到一大推的转换或者job。
2、 文件资源库
文件资源库是:将作业和转换相关的信息存储在指定的目录中,其实和XML的方式一样。创建方式跟创建数据库资源库步骤类似,只是不需要用户密码就可以访问,跨平台使用比较麻烦。
文件资源库搭建步骤:
1、点击右上角connect→Repository Manager(存储库管理器)→Add按钮→Other Resporitory(其他存储库)按钮→点击File Repository(数据库存储库)按钮→Get Started(开始)按钮。
2、填写相关信息,点击Finish按钮进行保存。
kettle输入控件
输入是转换里面的第一个分类,在新建转换后,在该转换里的核心对象栏目下就有输入,输出,转换,应用,流程等等一大堆的功能选项。其中输入功能下拉框中含有access输入,csv输入,Excel输入,json输入,xml输入,文本文件输入,生成记录,自定义常量数据,表输入等等。
输入功能:就是用来抽取数据或生成数据的,是ETL操作里的E。
CSV文件输入控件
功能要求:kettle将数据从CSV复制到EXCEL,这个功能相当于从CSV抽取数据(即输入,csv文件是一种带有固定格式的文本文件),加载到EXCEL中(即输出),借助kettle的transformation转换功能,输入下拉框中选择CSV输入,输出下拉框中选择EXCEL输出即可。
CSV输入设置
如下图设置CSV文件输入的操作步骤,通过浏览找到相应的文件,获取字段设置获取的字段个数,预览可以设置预览的行数,然后确定即可。
Excel输出设置
如下图设置EXCEL文件输出的操作步骤,通过浏览找到相应的文件,字段栏目下选择获取功能,最后点击确定即可。注意:在字段栏目下可以对数据的格式进行修改,以求达到输入和输出的格式一模一样,但是修改输出的字段格式时,如果打开了输入的excel文件,则需要先将这个Excel文件关闭,然后再修改格式,最后点击确定按钮。再最后进行下一步的启动操作。
启动设置
如下图设置启动的操作步骤,直接点击启动按钮即可。至于下端的执行结果,一般是在转换出现错误,或者优化耗时时才会去查看。如查错时,只需要查看错误日志的第一行就知道应该如何改错。
文本文件(txt)输入控件
提取日志信息的数据是开发常见的操作,日志信息基本都是文本类型。
功能要求:kettle将数据从TXT复制到EXCEL,这个功能相当于从TXT抽取数据(即输入),加载到EXCEL中(即输出),借助kettle的transformation转换功能,输入下拉框中选择文本文件输入,输出下拉框中选择EXCEL输出即可。
txt输入设置
如下图设置TXT文件输入的操作步骤,通过浏览找到相应的文件,再选中增加按钮将文件显示在选中的文件框中,内容栏目下修改分隔符,字段栏目下选中获取字段功能,然后确定即可。
其他TXT输出设置和启动设置与上述csv输入控件相同。
Excel输入控件
Excel目前有xls:2007年之前,xlsx:2007年之后两种版本。
Excel输入设置
如下图设置Excel文件输入的操作步骤,通过浏览找到相应的文件,再选中增加按钮将文件显示在选中的文件框中,在工作表栏目下可以对excel的sheet业进行选择,一般是一个一个sheet页进行转换,同时选取所有sheet页的话,则所有sheet页内容集中接龙在第一个sheet页后面。字段栏目下选中获取字段功能,然后确定即可。
其他Excel输出设置和启动设置与上述csv输入控件相同。
生成记录输入控件
数据仓库中绝大多数的数据都是业务系统生成的动态数据,但是其中一部分维度数据不是动态的,比如:日期维度。静态维度数据就可以提前生成,如果想要提前生成数据,可以采用生成记录这个控件。
生成记录输入设置
如下图设置生成记录输入的操作步骤,设置唯一且见名知意的名称后,设置限制的行数,在字段区线框中下选中依次对字段名称,类型,值等进行设置,然后确定即可。
其他Excel输出设置和启动设置与上述csv输入控件相同。
表输入控件
数据库驱动
数据库驱动是不同数据库开发商(如:mysql,Oracle,SqlServer等)为了某一种开发语言环境(如:Java,c语言)能够实现统一的数据库调用而开发的一个程序,他的**作用相当于一个翻译人员。**因为kettle是由Java编写,所以连接mysql等数据库要下载相应版本的java架包驱动程序,最后将其放入"D:\ruanjiananzhuangbao\kettle\data-integration\lib"即kettle安装位置中,重启kettle才有用。
表输入设置
如下图设置生成记录输入的操作步骤,选择表输入功能步骤,后新建数据库连接,再选择所需要的数据库类型,再依次设置主机名称,数据库名称,用户名及密码等等,最后测试通过后点击确认即可完成表输入设置。注意:如果第二次依然连接相同主机名称下的相同数据库,则直接采用编辑按钮,后测试连接,最后点击确认即完成数据库连接设置。
定义好数据库连接后点击获取SQL查询语句选择需要抽取的数据表,最后确认即可。
其他Excel输出设置和启动设置与上述csv输入控件相同。
kettle输出控件
输出是转换里面的第二个分类,在新建转换后,在该转换里的核心对象栏目下就有输入,输出,转换,应用,流程等等一大堆的功能选项。其中输出功能下拉框中含有access输出,Excel输出,json输出,SQL文件输出,删除,插入/更新,文本文件输出,更新,表输出等等。
输出功能:就是用来加载数据的,是ETL操作里的L。
Excel文件输出控件
Excel文件输出在上述的kettle的输入控件有述说。
文本文件文件输出控件
常见的文本文件格式是:TXT和csv文件。功能要求:kettle从mysql数据库的order库中将order_test表读取数据并插入到.txt和.csv的文件中,这个功能相当于从mysql表输入中抽取数据(即输入),加载到TXT或csv中(即输出),借助kettle的transformation转换功能,输入下拉框中选择表输入,输出下拉框中选择文本文件输出即可。
表输入设置
表输入设置如上的表输入控件一样,不再重述。注意下面的情况即可。
文本文件输出设置
文本文件输出设置如上的kettle输入控件里面的excel输出一样,不再重述。注意下面的情况即可。
SQL文件输出控件
SQL文件输出可以导出数据库表的结构和数据,SQL文件输出的结构是一个SQL脚本。功能要求:kettle从mysql数据库的order库中将order_test表读取数据库表的结构和数据并插入到SQL件中,这个功能输出下拉框中选择SQL文件输出即可。
表输入设置
表输入设置如上的表输入控件一样,不再重述。注意下面的情况即可。
SQL文件输出设置
SQL文件输出设置先要对数据库连接进行设置,如果之前有数据库连接共享,则直接选取即可,之后选择所需目标表,之后选择SQL文件输出存放路径并命名,最后点击确认即可。
表输出控件
表输出就是将数据写入到指点的数据表中。功能要求:kettle从Excel文件中抽取数据并插入到mysql数据库的order库中将order_test表中,这个功能输出下拉框中选择表输出即可。
Excel输入设置
Excel输入设置在文件栏目下先选择表格类型,后通过浏览找到相应的要抽取的文件,后点增加按钮就会显示在选中的文件线框中。然后在字段栏目下,选中获取来自头部数据的字段。最后点击确定即可完成Excel输入设置。
表输出设置
表输出设置:1、先设置数据库连接,如果之前有且共享了,则直接选取;2、点击浏览找到目标表,如果没有则自己给目标表命名,有则直接选取相应数据表;3、没有目标数据表的时候点SQL进行创建,有则不需要点击SQL;4、勾选指定数据库字段,然后切换到数据库字段栏目下进行字段设置;5、如果目标数据表的字段与Excel输入的字段一样,则直接点击获取字段按钮;6、如果目标数据表与Excel输入的字段不一样,则点击输入字段映射后将映射关系Add后确定即可;7、插入的字段框中会显示目标表字段信息与流字段即源字段信息并一一匹配;8、最后点击确定完成表输出设置。
更新输出控件
更新就是把数据库中已经存在的记录与数据流里面的记录进行对比,如果不同则进行更新。(注意:如果记录不存在,则会出现错误)。功能要求:kettle从Excel文件中读取数据,并把数据更新到mysql数据库的order库中将gengxin表中,这个功能输出下拉框中选择更新即可。
Excel输入设置
Excel输入设置在文件栏目下先选择表格类型,后通过浏览找到相应的要抽取的文件,后点增加按钮就会显示在选中的文件线框中。然后在字段栏目下,选中获取来自头部数据的字段。最后点击确定即可完成Excel输入设置。
更新设置
更新设置:1、先设置数据库连接,如果之前有且共享了,则直接选取;2、点击浏览找到目标表,如果没有则自己给目标表命名,有则直接选取相应数据表;3、指定用于查询对比的字段,他的字段内容更新前后不变,跟数据库中原有多少保持一致;4、指定要更新变化的字段,即:数据库中gengxin表的字段内容会根据excel输入表的字段内容而进行更新变化的字段(注意:去除步骤三的查询字段);5、勾选忽略查询失败的错误。
结果展示
更新后的结果:id为8的地方name字段内容由H变成L,age字段内容由28变成10。
插入更新输出控件
插入更新就是把数据库中已经存在的记录与数据流里面的记录进行对比,如果不同就进行更新,如果记录不存在,则会插入数据。功能要求:kettle从Excel文件中读取id,name,age字段的数据,并把数据插入更新到mysql数据库的order库中将gengxin表中,这个功能输出下拉框中选择“插入 / 更新“即可。
Excel输入设置
Excel输入设置在文件栏目下先选择表格类型,后通过浏览找到相应的要抽取的文件,后点增加按钮就会显示在选中的文件线框中。然后在字段栏目下,选中获取来自头部数据的字段。最后点击确定即可完成Excel输入设置(具体操作如上更新输出控件的excel输入设置)。
插入更新设置
插入更新设置:1、先设置数据库连接,如果之前有且共享了,则直接选取;2、点击浏览找到目标表,如果没有则自己给目标表命名,有则直接选取相应数据表;3、指定用于查询对比的字段,他的字段内容更新前后不变,跟数据库中原有多少保持一致;4、点击获取和更新字段来指定需要更新的字段,即:数据库中gengxin表的字段内容会根据excel输入表的字段内容而进行插入更新变化的字段(注意:Y则会更新,N则会插入但不更新,通常第3步用于查询的字段勾选N)。
结果展示
插入更新后的结果:id为5,6,7,8的name或age字段根据excel输入进行更新变化,且插入了一行id为9的数据。
删除输出控件
表输出就是删除数据库表中指定条件的数据。功能要求:kettle从mysql数据库的order库中的gengxin表中删除指定ID为1的数据。这个功能的设计原理:首先指定ID为1是一个常量,所以需要在输入中建立一个自定义常量数据,而在输出下拉框中选择“删除“即可。
自定义常量数据
自定义常量数据就是生成key-value形式(即键值对形式)的常量数据。如下图所示,在输入控件栏目下找到自定义常量数据的输入控件,对常量数据的字段名称及字段类型进行设置,然后赋予他常量数值。
删除设置
删除设置:1、先设置数据库连接,如果之前有且共享了,则直接选取;2、点击浏览找到目标表,如果没有则自己给目标表命名,有则直接选取相应数据表;3、指定查询对比的字段名称,则会根据设计的常量del_id字段删除gengxin表中的id为1的那一行数据。
结果展示
删除后的结果:相对于插入更新输出控件的操作结果,ID为1的整行数据全部都被删除了。
kettle转换控件
转换是转换里面的第四个分类,在新建转换后,在该转换里的核心对象栏目下就有输入,输出,转换,应用,流程等等一大堆的功能选项。其中转换功能下拉框中含有Concat fields(连接字段),值映射,列拆分为多行,列转行,行转列,剪切字符串,去除重复记录,唯一行(哈希值),增加常量,增加序列,字段选择,字符串操作,字符串替换,拆分字段,排序记录,行扁平化,计算器等等。
转换功能:就是用来对数据进行清洗,转换,是ETL操作里的T;ETL三个部分中,T花费的时间是最长的,一般情况下T部门工作量是整个ETL的2/3。
Concat fields(连接字段)转换控件
Concat fields就是把多个字段连接起来形成一个新的字段。功能要求:kettle从Excel文件中获取fristname和lastname并把fristname和lastname连接起来,输出到excel中。这个功能的输入为:excel输入;转换为:Concat fields;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
Concat fields设置及结果展示
Concat fields设置:1、先设置转换后所得新字段的名称;2、设置连接符(常用于给数值后面添加单位变成字符串的场景);3、点击获取字段按钮,得到excel输入流中的所有字段,选择需要拼接的字段,不用拼接的字段则去除,本次本应该去除ID字段的,若没有去除,则会跟需要拼接的fristname和lastname字段一样拼接成新的字段“name”;4、启动转换后结果展示:将id,fristname,lastname三个字段拼接成了一个新的字段“name”。
值映射转换控件
值映射就是把字段的一个值映射成其他的值。主要在数据仓库的数据质量规范上使用最多,比如很多系统对应性别gender字段的定义不同。如系统1中:1为男性;2为女性;而系统2中:f为男性,m为女性;在数据仓库中统一为female为男性,male为女性。功能要求:kettle从Excel文件中读取数据,并把gender里面的f和m转换为female和male,输出到excel文件中。这个功能的输入为:excel输入;转换为:值映射;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
值映射设置及结果展示
值映射设置:1、输入需要进行值映射的原字段名称;2、设置值映射后的字段名称;3、设置不匹配时的默认值;4、值映射规则设置:把gender里面的f和m分别转换为female和male;5、启动后结果展示:新生成了一个sex字段,并把gender里面的f和m分别转换为female和male。
增加常量转换控件
增加常量就是在本身的数据流里面添加一列数据,该列的数据都是相同的值,功能要求:kettle从Excel文件中读取数据,增加一个新列language,并且值为en,最后将数据保存输出到excel中。这个功能的输入为:excel输入;转换为:增加常量;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
增加常量设置及结果展示
增加常量设置:1、设置所添加常量列的列名(字段名称),字段类型及常量值;2、启动后结果展示:新生成了一个language字段,并且language字段的内容都是常量eng。
增加序列转换控件
增加序列就是给数据流添加一个序列字段(常用于增加排序字段)。功能要求:kettle从Excel文件中读取数据,并添加序列,最后保存数据并输出到excel文件中。这个功能的输入为:excel输入;转换为:增加序列;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
增加序列设置及结果展示
增加序列设置:1、设置增加序列的字段名称;2、默认是使用转换计数器来生成序列,此处默认会勾选,设置起始值和增长根据,这两项默认都是1;3、启动后结果展示:新生成了一个序列号字段,并把序列号字段里面的内容根据第2部设置的内容从1开始按步长1递增,如果第2步设置的增长根据为2的话,则序列号结果为“1,3,5,7,9”。
字段选择转换控件
字段选择就是从数据流中选择(筛选)字段,并且可以改变字段名称及修改数据类型。使用场景:通常情况下,我们从元数据抓取过来的数据是含有很多多余的字段的,这时,我们就需要借助字段选择进行字段的筛选,这个功能是整个ETL工作过程中最常用的一个功能。功能要求:kettle从Excel文件中读取数据,移除里面的language和country,并把phone列名改为telphone,id列改名为key,把gender列改名为sex。这个功能的输入为:excel输入;转换为:字段选择;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
字段选择设置及结果展示
字段选择设置:1、点击获取选择的字段,在“选择和修改”栏目下将需要修改字段名称的字段进行设置;2、在移除栏目下添加要移除的字段名称;3、在元数据栏目下,对需要修改字段名称和字段数据类型的字段进行修改(如果没有字段需要修改数据类型,则可以省略这个步骤);4、启动后结果展示:相对于原表,移除里面的language和country,并把phone列名改为telphone,且字段类型改为了字符串形式,id列改名为key,把gender列改名为sex。
计算器转换控件
计算器转换就是利用一个函数集合来创建新的字段,还可以设置字段是否移除(但一般指的是一些临时字段)。功能要求:kettle从Excel文件中读取数据,生成name(名字),quarter(出生季度),week_of_day(生日为星期几),account(账户余额)列,并且把这些数据保存输出到excel中。这个功能的输入为:excel输入;转换为:计算器;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
计算器转换设置及结果展示
计算器转换设置:1、手动设置新字段的名称,然后点击后面的计算栏目就会弹出一大推公式,选择所使用的计算公式,再然后选择需要用于计算的原字段名称(注意最多三个A,B,C),再然后在移除那里设置为“否”,这样新生成的字段才会显示输出到excel结果中,最后点击确定按钮即可;2、启动后结果展示:新生成了生成name(名字),quarter(出生季度),week_of_day(生日为星期几),account(账户余额)列字段。其中name字段是采用cancat fields拼接生成的,其余三个是采用计算器生成的。
字符串剪切、替换、操作等转换控件
**剪切字符串:**就是指定输入流字段裁剪的位置剪切出新的字段。**字符串替换:**就是指定搜索内容和替换内容,如果输入流的字段匹配上搜索内容就进行替换生成一个新字段。**字符串操作:**就是去除字符串两端的空格和大小写切换,并生成新的字段。功能要求:kettle从Excel文件中读取数据,获取title的首位字符,生成title_begin字段,把description中的1111替换为itheima生成desc字段,去除autor两边的空格,去除空格后再将字符变成大写,生成author_update,并且把这些数据保存输出到excel中。这个功能的输入为:excel输入;转换为:剪切字符串(获取title的首位字符),字符串替换(将1111替换为itheima),字符串操作(去除空格后再将字符变成大写)三个步骤;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
字符串剪切、替换、操作设置及结果展示
字符串剪切、替换、操作设置:1、选择输入流字段并手动填写输出流字段名称,设置剪切起始与结束位置;2、选择输入流字段,再手动填写输出流字段名称,再然后在搜索栏目下手动添加需要替换的字段内容,再然后使用…替换栏目下手动填写替换后的字段内容,最后点确定(切记不用直接点获取字段按钮);3、选择需要进行操作的字段(去除空格,大小写变化等),手动填写变化后的字段名称,在Trim type栏目下选择去除空格的类型(both为两端去除空格),在Lower/Upper栏目下选择是变成大写还是小写(upper为大写);4、启动后结果展示:新生成了一个title_begin字段(字段内容为从原title字段截取前两个字符),新生成一个desc字段(字段内容为将原description字段中的1111替换为itheima),新生成一个author_apdate字段(字段内容为将原author字段的两端空格去除且变成大写字母)。
去除重复记录、排序记录转换控件
**去除重复记录:**就是去除数据流里面相同的数据行(注意:必须先对数据流进行排序)。**排序记录:**就是指按照指定字段的升序或降序对数据流进行排序。功能要求:kettle从Excel文件中读取数据,去除重复的数据,并且把这些数据保存输出到excel中。这个功能的输入为:excel输入;转换为:排序记录,去除重复记录两个步骤;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
排序记录及去除重复记录设置及结果展示
排序记录及去除重复记录设置:1、点击获取字段来获取需要排序的字段,并点击升序栏目下每行的信息设置是否升序排序;2、点击获取按钮获取用来比较的字段,然后在忽略大小写栏目下设置是否忽略大小写(N为忽略大小写);3、启动后结果展示:对原表中的数据首先依据ID字段进行排序,并删除ID,name,age相同的行内容,如果ID相同而name或age不同,则依据name或age进行排序并且保留相应的行内容。
唯一行(哈希值)转换控件
唯一行(哈希值)就是删除数据流中重复的行(注意:唯一行和(排序记录+去除重复记录)执行效果是一样的,但实现的原理不同,其中唯一行是对整个数据流进行删除重复行的操作,而且执行效率更高,因此通常使用唯一行来进行删除重复行的操作)。功能要求:kettle从Excel文件中读取数据,去除重复的数据,并且把这些数据保存输出到excel中。这个功能的输入为:excel输入;转换为:唯一行(哈希值);输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
唯一行(哈希值)设置及结果展示
唯一行(哈希值)设置:1、点击获取按钮来获取需要用来比较的字段,然后按确定按钮即可;2、启动后结果展示:跟排序记录及去除重复记录的结果一致,首先对原表中的数据首先依据ID字段进行排序,并删除ID,name,age相同的行内容,如果ID相同而name或age不同,则依据name或age进行排序并且保留相应的行内容。
拆分字段转换控件
拆分字段就是把字段按照分隔符(可以是逗号,空格,分号等等)拆分为两个或多个字段(注意:拆分字段后,原字段就不存在于数据流中)。功能要求:kettle从Excel文件中读取数据,并把name字段拆分为one,two,three三个字段,输出到excel文件中。这个功能的输入为:excel输入;转换为:拆分字段;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
拆分字段设置及结果展示
拆分字段设置:1、选择需要拆分的字段的名称,设置分隔符,然后在字段栏目下手动填写新的字段的名称及其对应的数据类型;2、启动后结果展示:将原表中的name字段拆分生成了one,two,three三个字段,并去除了name字段。
列拆分为多行转换控件
列拆分为多行就是把指定分隔符的字段进行拆分为多行(即:一行数据拆分为多行数据)。功能要求:kettle从Excel文件中读取数据,并把并把name字段拆分为多行生成一个name_type字段,并将name字段删除(只需在excel输出设置时将字段栏目下name字段所在行整行删除即可),输出到excel文件中。这个功能的输入为:excel输入;转换为:列拆分为多行;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
列拆分为多行设置及结果展示
列拆分为多行:1、先选择要拆分的字段名称,再设置分隔符,手动填写新字段的名称,最后确定即可;2、启动后结果展示:新生成了一个name_type字段,并把原来的一行拆分为了三行。
列转行转换控件(就是excle中的转置)
列转行就是如果数据一列有相同的值,按照指定的字段,把多行数据转换为一行数据,列转行会去除一些原来的列名,把一列数据变为字段(注意:列转行之前数据流必须进行排序)。功能要求:kettle从Excel文件中读取数据,按照姓名进行分组,把星期、工作小时从列转为行,并保存输出到excel文件中。这个功能的输入为:excel输入;转换为:列转行;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
列转行设置及结果展示
列转行设置:1、首先选择关键字段(需要把该列所对应的值转换为新的字段的字段名称),再点击获取字段来获得构成分组的字段(切记需要把多余的字段排除,此处是借助姓名来分组的),然后在目标字段框下手动填写目标字段名称,数据字段名称,关键字值名称及数据类型,最后确定即可;2、启动后结果展示:将原来的星期列转为了行,并且把原来的工作小时变成了列转行后的字段内容,并且消除了原来的星期字段和工作小时字段,实现了如excel操作的列转行的转置功能。
行转列转换控件(就是excle中的转置)
行转列就是把数据字段的字段名转换为一列,把数据行变为数据列。功能要求:kettle从Excel文件中读取数据,把星期工作小时行转为星期列和工作小时列,并保存数据输出到excel文件中。这个功能的输入为:excel输入;转换为:列转行;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
行转列设置及结果展示
行转列设置:1、先手动填写设置key字段名称,然后在字段框中的字段名称栏目下依次选取字段名称,再然后在key值栏目下依次手动写入名称,再然后在value字段栏目下手动填写名称,最后确定即可;2、启动后结果展示:新生成了星期和工作小时两个字段,实现如excel操作的行转列的转置功能。
行扁平化转换控件
行扁平化就是把同一组的多行数据合并成为一行(注意:只有数据流的同类数据,而且他们的数据行记录一致的情况(如张三的数据是三行,李四的数据也必须是三行)才可使用,而且数据流必须进行排序,否则结果会不正确)。功能要求:kettle从Excel文件中读取数据,并把数据进行扁平化处理,并保存数据输出到excel文件中。这个功能的输入为:excel输入;转换为:行扁平化;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
行扁平化设置及结果展示
行扁平化设置:1、先选取需要扁平化的字段,然后在扁平化后的目标字段框内的目标字段栏目下手动填写目标字段名称(如此处的hobby01和hobby02两个字段名称),再确定即可;2、启动后结果展示:新生成了hobby01和hobby02两个字段,并将原来的hobby字段进行了扁平化处理(注意进行扁平化处理的原数据hobby是同类数据,而且他们的数据行记录一致的情况(无论是张三还是李四还是王五和赵六都只有两行))。
kettle应用控件
应用是转换里面的第五个分类,在新建转换后,在该转换里的核心对象栏目下就有输入,输出,转换,应用,流程等等一大堆的功能选项。其中应用功能下拉框中含有替换NULL值,写日志,发送邮件等等。
替换NULL值应用控件
替换NULL值就是把null值转换为其他的值,替换NULL值的原因是:NULL值不好进行数据分析。功能要求:kettle从Excel文件中读取数据,并把age列的空值使用28来替换,保存输出到excel文件中。这个功能的输入为:excel输入;应用为:替换NULL值;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
替换NULL值设置及结果展示
替换NULL值设置:1、先勾选选择字段按钮(也不可以不勾选,默认为不勾选,不勾选的情况下为替换所有字段的NULL值,不过通常项目情况下是替换单一字段的NULL值),然后在字段框中的字段栏目下选择具有NULL的字段,手动在值替换为栏目下输入固定值,再确定即可;2、设置值映射后的字段名称;3、设置不匹配时的默认值;4、值映射规则设置:把gender里面的f和m分别转换为female和male;5、启动后结果展示:将赵六和田七两人age中的空值都替换为了28。
kettle流程控件
流程是转换里面的第六个分类(流程的功能主要用于空值数据流程和数据流向),在新建转换后,在该转换里的核心对象栏目下就有输入,输出,转换,应用,流程等等一大堆的功能选项。其中流程功能下拉框中含有switch case,过滤记录,空操作(什么也不做),中止等等。
switch case流程控件
switch case的主要功能是分流,让数据流从一路变成多路(如同python编程的if条件判断)。功能要求:kettle从Excel文件中读取数据,按照sex进行数据分类,把女性、男性、保密分别保存输出到不同的excel文件中(其中1:代表男性;0:代表女性;2:代表保密)。这个功能的输入为:excel输入;流程为:switch case;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
switch case设置及结果展示
switch case设置:1、与之前的转换和应用控件的先设置转换或应用后设置excel输出不同,switch case需要先设置输出控件(如此的excel输出后设置switch case流程控件),先选取switch字段的名称,然后选取case值数据类型,再然后在case值框中的值栏目下手动输入值,再然后在目标步骤栏目下选取对应的输出结果,再然后选取默认目标步骤的输出,最后确定即可;2、启动后结果展示:新输出生成了三个excel文档,如同if条件判断一样,满足sex值为1的行保存输出到男性输出excel文档中,相应的sex值为0则输出到女性输出excel文档中,而sex值为2的则输出到保密输出excel文档中。
过滤记录流程控件
过滤记录就是让数据流从一路到两路(switch case是让数据流从一路到多路,也是类似于python编程的if else条件判断)。功能要求:kettle从Excel文件中读取数据,分离出code列为空的数据,分别保存输出到不同的excel文件中。这个功能的输入为:excel输入;流程为:过滤记录;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
过滤记录设置及结果展示
过滤记录设置:1、与switch case一样先设置输出后设置过滤记录控件,先在条件框中选取条件判断字段的名称,然后选取条件判断语句,再然后在发送true数据给步骤(发送false数据给步骤)的右侧分别选取各自相应的输出,最后确定即可;2、启动后结果展示:新输出生成了两个excel文档,如同if else条件判断一样,code不为空的保存输出到code不为空行excel文档中,相应的code为空的则保存输出到code为空行excel文档中。
空操作流程控件
空操作一般作为数据流的终点(实际开发中很少使用,其含义是不做任何处理)。功能要求:kettle从Excel文件中读取数据,分离出code列为空的数据,空数据不执行任何操作,不为空的数据保存输出到不同的excel文件中。这个功能的输入为:excel输入;流程为:过滤记录,空操作;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
空操作设置及结果展示
空操作设置:就是什么都不用设置,直接按确定按钮即可。
中止流程控件
中止是数据流的终点,如果有数据到这里,将会报错,中止一般用于校验数据的时候使用(如果我们的数据不满足某个条件,有数据流到这个分支,我们的转换将会被中止)。功能要求:kettle从Excel文件中读取数据,过滤掉code列为空的数据,不为空的数据保存输出到不同的excel文件中,如果出现为空的数据就停止转换。这个功能的输入为:excel输入;流程为:过滤记录,中止;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
中止设置及结果展示
中止操作设置:就是什么都不用设置,也不用按确定按钮(功能是用于校验数据的时候使用,数据不满足某个条件,有数据流到这个分支,我们的转换将会被中止,比如此处code不为空输出excel文档是没有任何数据的)。
kettle查询控件
查询是转换里面的第七个分类,在新建转换后,在该转换里的核心对象栏目下就有输入,输出,转换,应用,流程,查询等等一大堆的功能选项。其中查询功能下拉框中含有HTTP client,数据库查询,数据库连接,流查询等等。
查询功能:主要用来查询数据源里面的数据并将数据合并到主数据流中。
数据库查询控件
数据库查询就是数据库里面的左连接(左连接就是两张数据表执行左关联查询,把左边的表数据全部查询出来,然后去匹配右边表我们需要查询的数据)。功能要求:kettle从employees表中读取数据,根据dep_id从departments表获取dep_name字段信息,把数据保存输出到excel文件中。这个功能的输入为:表输入;查询为:数据库查询;输出为:excel输出。
表输入设置
表输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
数据库查询设置及结果展示
数据库查询设置:1、设置好数据库连接(参考表输入的数据库连接设置)后,先点浏览按钮找到目标表,然后在查询所需的关键字框内,依次选取表字段及比较操作符及字段1(前一步表输入流字段),再然后在查询表返回的值框中依次选取字段和字段类型,最后确定即可;2、启动后结果展示:执行左关联查询,把左边employees表的数据全部查询了出来,匹配到的右边departments表中我们需要查询的dep_name字段数据查询显示出来。
数据库连接查询控件
数据库连接查询(实际就是数据库的跨库查询)可以执行两个数据库的查询,和单参数的表输入。功能要求:kettle从一个数据库(order库)中的departments表中读取数据,连接到另一个数据库(mysql库)的employees,把数据保存输出到excel文件中。这个功能的输入为:excel输入;查询为:数据库连接;输出为:excel输出。
表输入设置
表输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
数据库连接设置及结果展示
数据库连接设置:1、先指定数据库连接,然后在SQL框中输入相应的SQL查询(查询第二个数据库的表数据),其中的问号(?)代表参数,再然后在The parameter to use框中依次写入参数的字段名称及字段类型(自身库中表的字段),最后确定即可;2、启动后结果展示:对order库中的departments表中数据和另一个数据库(mysql库)的employees表的数据进行跨库内连接查询,并将查询结果展示出来。
流查询查询控件
流查询是在查询前把数据都加载到内存中,并且流查询只能进行等值查询。功能要求:kettle分别从两个不同的Excel文件(employee表和department表)中读取数据,并根据dep_id(employee表中字段信息)来查询dep_name(department表中字段信息),把数据保存输出到excel文件中。这个功能的输入为:excel输入;查询为:流查询;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
流查询设置及结果展示
流查询设置:1、先指定查询步骤(因为根据employee表dep_id字段来查询department表中dep_name字段,所以此处为department输入),在查询值所需的关键字框中依次选取字段和查询字段的名称,然后在指定用来接受的字段框中依次选取Field栏目下的字段名称及其对应数据类型,最后确定即可;2、启动后结果展示:department表与employee表是一对多的关联关系,借助流查询可以将两表关联的数据内容依次查询展示出来。
kettle连接控件
连接是转换里面的第八个分类,在新建转换后,在该转换里的核心对象栏目下就有输入,输出,转换,应用,流程,查询,连接等等一大堆的功能选项。其中连接功能下拉框中含有合并记录,记录关联(笛卡尔积),记录集关联等等。
连接的功能:结果集通过关键字进行连接。
合并记录连接控件(常用于比较数据源前后变化场景)
合并记录就是用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据,该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并。合并记录需要设置的参数(1、旧数据来源:旧数据来源的步骤;2、新数据来源:新数据来源的步骤)。合并记录中的标志字段:设置标志字段的名称,标志字段的功能是用于保存比较的结果,比较结果有以下几种(1、“identical”:旧数据和新数据一样;2、“changed”:数据发生了变化;3、“new”:新数据中有而旧数据中没有的记录;4、“deleted”:旧数据中有而新数据中没有的记录)。合并记录中的关键字段:用于定位两个数据源中的同一条记录。合并记录中的比较字段:对于两个数据源中的同一条记录中,指定需要比较的字段。合并记录的功能:合并后的数据将包括旧数据来源和新数据来源里的所有数据,对于变化的数据,使用新数据代替旧数据,同时在结果里用一个标志字段来指定新旧数据的比较结果(**注意:**合并记录操作中的旧数据和新数据需要事先按照关键字段进行排序,而且旧数据和新数据要有相同的字段名称)。功能要求:kettle从Excel文件中读取新数据和旧数据,合并数据,标记出new、delete、changed、identical,并把数据保存输出到excel文件中。这个功能的输入为:excel输入;连接为:合并记录;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
合并记录设置及结果展示
合并记录设置:1、做合并记录之前必须对数据源进行排序,先依次选取新旧数据源,然后在匹配的关键字框中点击获取关键字段,再然后在关键字段栏目下删除多余的字段保留用于比较的ID字段,再然后在数据字段框中点击获取值字段,再然后在数据字段栏目下删除用于比较的关键字段,保留剩余的数据字段,最后确定即可;2、启动后结果展示:将新旧数据全部保存输出,并增加了一个标志字段(flagfield)用于标记新旧数据源数据的变化。
记录关联(笛卡尔积)连接控件(少用)
记录关联(笛卡尔积)就是对两个数据流进行笛卡尔积(即A的数据量有3行2列,B的数据量有2行2列,两者笛卡尔积后就有6行4列)操作。**注意:**一般来说,笛卡尔积关联操作在做数据仓库之前的初始化过程就需要准备好,后续过程中很少去做笛卡尔积关联(kettle中做笛卡尔积关联耗时比较长,少用)。功能要求:kettle从Excel文件中读取两位数和三位数,完成两位数和三位数的组合(笛卡尔积),并把数据保存输出到excel文件中。这个功能的输入为:excel输入;连接为:记录关联(笛卡尔积);输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
记录关联(笛卡尔积)设置及结果展示
运用相对比较少,忽略。
记录集连接控件
记录集连接就如同数据库中的左连接,右连接,内连接,外连接(注意:在进行记录集连接之前,必须要对记录集进行排序)。功能要求:kettle从excel文档中读取employees表数据和departments表数据,进行内连接,左连接,右连接,外连接,把数据保存输出到excel文件中。这个功能的输入为:excel输入;转换为:排序记录;连接为:记录集连接;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
记录集连接设置及结果展示
记录集连接设置:1、做记录集连接之前必须对数据源进行排序,先依次选取第一/第二步骤的数据源及数据的连接类型(内连接,左连接,右联接,外连接),然后在第一步骤的连接字段框中点击获得连接字段,再然后在连接字段栏目下删除多余的字段保留用于连接的dep_id字段,再然后在第二步骤的连接字段框中点击获得连接字段,再然后在连接字段栏目下删除多余的字段保留用于连接的id字段,最后确定即可;2、启动后结果展示:将雇员表数据和部门表数据依据连接类型(内连接,左连接,右联接,外连接)得出的结果全部保存输出。
kettle统计控件
统计是转换里面的第十三个分类,在新建转换后,在该转换里的核心对象栏目下就有输入,输出,转换,应用,流程,查询,连接,统计等等一大堆的功能选项。其中统计功能下拉框中含有分组等等。
统计功能:就是提供数据的采样和统计功能。
分组统计控件
分组就是按照某一个或某几个进行分组,同时可以将其余字段按照某种规则进行合并(注意:分组之前数据应该进行排序)。功能要求:kettle从Excel文件中读取数据,按照group进行分组统计,把结果保存输出到excel文件中。这个功能的输入为:excel输入;转换为:排序记录;统计为:分组;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
分组设置及结果展示
分组设置:1、做分组之前必须对数据源进行排序,而且根据分组字段来确定排序字段(排序字段和分组字段必须一致,如这里都是group字段),在分组时:先在构成分组的字段框中的分组字段栏目下选取分组字段,然后在聚合框中的名称栏目下输入聚合后所得新字段的名称,在subject栏目下选择聚合字段名称,在类型栏目下选择聚合类型(聚合类型有多种,这里使用的是count记个数方式),最后确定即可;2、启动后结果展示:根据聚合字段及聚合类型及所创建的聚合后的字段名称创建了一个新表,对原表数据进行分组聚合操作。
kettle映射控件
统计是转换里面的第十八个分类,在新建转换后,在该转换里的核心对象栏目下就有输入,输出,转换,应用,流程,查询,连接,统计,映射等等一大堆的功能选项。其中映射功能下拉框中含有映射(子转换),映射输入规范,映射输出规范等等。
**映射功能:**主要用于定义子转换,以便于封装和重用(在开发时,经常有许多重复的功能,这时就可以把这些重复的功能抽取成一个映射,方便其他的转换进行调用)。
**映射(子转换):**就是用来配置子转换的,对子转换进行调用的一个步骤(当我们在一个转换中需要调用另一个子转换,那我们就需要使用一个映射(子转换)的步骤)。
**映射输入规范:**就是输入字段,由调用的转换来进行输入。
**映射输出规范:**就是向调用的转换输出所有列,这里对数据不做任何处理。
映射控件
功能要求:kettle从t_orders表中获取数据,根据u_id查询t_users表,获取用户信息,并把数据保存输出到excel文件中。这个功能的输入为:表输入;映射为:映射(子转换);输出为:excel输出。映射(子转换)中的映射为:映射输入规范;查询为:数据库查询;映射为:映射输出规范。
表输入设置
表输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
映射设置及结果展示
映射设置(注意:映射含有两个转换文件,一个是子转换,其功能是被映射主转换程序调用。):1、因为业务要求是通过t_orders表中的u_id查询t_uers表,获取用户信息,所以在映射输入规范中的要求的输入字段下选择u_id,选择u_id对应的数据类型,再确定完成映射输入规范设置;2、在数据库查询中设置数据库连接,点浏览按钮选择所需的数据表(t_users表),在查询所需的关键字框中依次选取用于对比的表字段,比较操作符,字段1,在点击获取返回字段按钮获取查询表返回的值框中的返回字段,删除用于对比的字段,最后确定即可;3、映射主程序,通过点击转换框中的Browse找到子转换的位置,从而实现对子转换的调用,最后直接确定即可;4、启动后结果展示:通过通过t_orders表中的u_id查询t_users表,获取用户信息(t_users表字段信息),并将t_orders表中的字段信息内容和t_users表下的字段信息内容全部输出到excel表中。
kettle脚本控件
脚本是转换里面的第七个分类,在新建转换后,在该转换里的核心对象栏目下就有输入,输出,转换,应用,流程,查询,连接,统计,映射,脚本等等一大堆的功能选项。其中脚本功能下拉框中含有Java代码,JS代码,执行SQL脚本等等。
脚本功能:就是直接通过程序代码完成一些复杂的操作。
JS代码脚本控件
JS代码脚本就是使用JS语音通过代码编程来完成对数据流的操作。JS中有很多的内置函数,可以在编写JS代码时查看。JS代码脚本存在两种不同的模式:不兼容模式和兼容模式(其中不兼容模式:是默认的,也是推荐的;而兼容模式:兼容老版本的kettle)。
JS代码脚本给字段赋值的方法:不兼容模式:直接使用字段名,如:FieldName = myVar;兼容模式为:使用FieldName.setValue(myVar)。
JS代码脚本获取字段的方法:不兼容模式:myVar = FieldName;兼容模式为:根据字段类型的不同,使用不同的方法:字符串型字段为myVar = FieldName.getString();数值型数据字段myVar = FieldName.getNumber()。
功能要求:kettle自行生成日期维度数据,有日期,年,月,日,从2000年01月01日开始有1000条记录,将结果保存输出到excel中。这个功能的输入为:生成记录(但是生成记录生成的数据都是一模一样的);转换为:增加序列(为了使生成记录生成的数据变成不一样),计算器(将生成记录数据与序列数据结合生成不同的日期),字段选择(删除多余的字段数据,保留需要的日期字段数据);脚本为:JS脚本(提取年,月,日数据);输出为:excel输出。
生成记录与Excel输出设置
生产记录设置及Excel文件输出设置在上述的kettle的输入控件有述说。
JS代码脚本设置及结果展示
JS代码脚本设置:1、在JS代码编写区编写JS脚本代码,然后在输出字段区点击获取变量来获取输出字段,最后确定即可;2、启动后结果展示:JS脚本代码从new_date字段中分离中年,月,日信息并生成year,month,day三个新字段和之前的两个字段一起输出到excel文档中。
执行SQL脚本控件
执行SQL脚本(最主要的功能也是用来更新数据)可以执行一个update语句,用来更新某个表中的数据。功能要求:kettle从t_users表中获取所有的数据,并把age的值都更改为33,并把数据保存输出到excel文件中。这个功能的输入为:表输入;脚本为:执行SQL脚本;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
执行SQL脚本设置及结果展示
执行SQL脚本设置:1、先建立数据库连接,后输入SQL的update更新语句,如果使用了参数,则勾选“执行每一行”,在参数框中输入参数字段名称(表输入时传递过来的数据流字段),最后确定即可;2、启动后结果展示:根据执行SQL脚本,将t_users表中的age字段进行了更新,使整个表的age字段内容都被更新为33岁。
kettle作业和参数
作业
作业简介:大多数ETL项目都是需要完成各种各样的维护工作(例如:如何传送文件,验证数据库表是否存在等等),而这些操作都是按照一定的顺序完成的。因为转换是以并行的方式执行的,那就需要一个可以串行执行的作业来处理这些操作。
一个作业包含一个或者多个作业项,这些作业项都是以某种顺序来执行的。作业执行顺序由作业项之间的跳(job hop)和每个作业项的执行结果来决定。
作业项
作业项:是作业的基本构成部门。如同转换的步骤,作业项也可以使用图标的方式图形化展示。
但是,如果仔细观察,还是会发现作业项有一些地方不同于步骤:在作业项之间可以传递一个结果对象。这个结果对象里面包含了数据行,它们不是以数据流的方式来传递的。而是等待一个作业项执行完毕后,再传递给下一个作业项。
因为作业顺序执行作业项,所以必须定义一个起点。有一个叫做“开始”的作业项就定义了这个点,一个作业只能定一个开始作业项。
作业跳
作业的跳是作业项之间的连接线,他定义了作业的执行路径。作业里每个作业项的不同运行结果决定了作业的不同执行路径。
1、无条件执行:不论上一个作业项执行成功还是失败,下一个作业项都会执行。这是一种蓝色的连接线,上面有一个锁的图标。2、当运行结果为真时执行:当上一个作业项的执行结果为真时,执行下一个作业项。通常在需要无错误执行的情况下使用。这个是一种绿色的连接线,上面是一个对钩号的图标。3、当运行结果为假时执行:当上一个作业项的执行结果为假或者没有成功执行时,执行下一个作业项。这是一种红色的连接线,上面有一个红色的停止图标(注意:在图标上单击就可以对跳进行设置)。
功能要求:kettle从Excel文件中读取数据,保存到excel中,再从文本文件中读取数据,保存到excel中(注意存在先后顺序,所以得借助作业),如果产生错误就发送邮件,并且停止作业,如果成功发送成功邮件。
分析这个功能的输入为作业:开始,转换1,转换2(两个转换顺序执行),发送邮件,停止。转换1:输入为:excel输入;输出为:excel输出。转换2:输入为:文本文件输入;输出为:excel输出。
值映射就是把字段的一个值映射成其他的值。主要在数据仓库的数据质量规范上使用最多,比如很多系统对应性别gender字段的定义不同。如系统1中:1为男性;2为女性;而系统2中:f为男性,m为女性;在数据仓库中统一为female为男性,male为女性。功能要求:kettle从Excel文件中读取数据,并把gender里面的f和m转换为female和male,输出到excel文件中。这个功能的输入为:excel输入;转换为:值映射;输出为:excel输出。
Excel输入设置
Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
作业设置及结果展示
作业设置:1、一个作业中可能可以含有多个转换,只需要点击,然后借助浏览找到该转换所在的存储位置,然后确定即可;2、启动后结果展示:所调用的转换依次按顺序串联执行,如这里先执行转换1,后执行转换2。
参数
参数简介:对于ETL参数传递是一个很重要的环节,因为参数的传递会涉及到业务数据是如何抽取的。参数分为两种:一种是全局参数,另一种是局部参数。
全局参数
全局参数定义是通过当期用户下\kettle\data-integration.kettle文件夹中的kettle.properties文件来定义的。定义方式是采用键=值对方式来定(如:start_date=20130101,注意:在配置全局变量时,需要重启kettle才会生效)。
局部参数
局部参数变量是通过“Set Variables”来进行设置,通过“Get Variables”方式来获取的(注意:在“Set Variables”时,在当期转换当中是不能马上使用的,需要在作业中的下一步骤中使用,也就是说局部参数设置后不能马上使用,而是应该在作业中的下一个步骤中进行使用)。
参数的使用
kettle中参数使用方法有两种:一种是%%变量名%%,另一种是${变量名},注意:在SQL中使用变量时,需要把“替换SQL语句里的变量”勾选上,否则无法使变量生效。
全局参数使用案例
功能要求:kettle从\kettle\data-integration.kettle文件夹中的kettle.properties文件中读取STARTROW和PAGESIZE参数,从t_orders表中获取数据,使用参数传递,数据保存输出到excel文件中。这个功能首先需要编辑\kettle\data-integration.kettle文件夹中的kettle.properties文件,输入key=value,其中此功能的输入为:表输入;输出为:excel输出。重启即可查看运行效果。
表输入设置
表输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
SQL中全局参数调用设置
SQL中全局参数调用设置:1、在SQL中使用变量时,需要把“替换SQL语句里的变量”勾选上,否则无法使变量生效,而且参数的书写必须符号规范,其书写规范有两种:一种是%%变量名%%,另一种是${变量名}。
常量传递
常量传递:就是先自定义常量数据,在表输入的SQL语句里面使用?来替换,而?号的替换顺序就是常量定义的顺序。功能要求:自定义常量数据id1 = 10和id2 = 3,从t_users表中获取数据,满足条件id < id1和id > id2,结果保存输出到excel文件中。这个功能的输入为:自定义常量数据,表输入;输出为:excel输出。
表输入与Excel输出设置
表输入与Excel文件输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
自定义常量设置
自定义常量设置:1、在转换的输入控件下拉列表中选择自定义常量,在元数据框中依次输入常量名称及选择数据类型,切换为数据框后,依次给常量赋值,然后确定即可。
常量传递及结果展示
常量传递设置:1、常量传递:先自定义常量数据id1 = 10和id2 = 3,从t_users表中获取数据,满足条件id < id1和id > id2,和参数传递一样借助“?”代替两个常量,将“?”写入SQL语句中,然后在“从步骤插入数据”栏目上找到“自定义常量数据选项”,再确定,实现常量传递的设置;2、启动后结果展示:将两个自定义常量数据id1和id2传递进来,找到了所有满足条件id < id1和id > id2条件的表中数据并保存输出。
转换命名参数
转换命名参数就是在转换内部定义的变量,作用范围是在转换内部;设置转换命名参数的方法是:在转换的空白处右键,选择转换设置就可以进行设置。功能要求:设置转换命名参数:id1 = 10和id2 = 3,从t_users表中获取数据,满足条件id < id1和id > id2,结果保存输出到excel文件中。这个功能的输入为:表输入;输出为:excel输出。
表输入设置
表输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
转换命名参数设置与传递及结果展示
转换命名参数设置:1、在转换的空白处右键,选择转换设置就可以设置转换命名参数,然后确定即可;2、建立数据库表连接后,在SQL语句将转换命名参数传递进来(注意参数书写规范:%%变量名%%,或${变量名}),然后勾选“替换SQL语句里的变量”栏目,再确定,实现转换命名参数传递的设置;3、启动后结果展示:将两个转换命名参数id1和id2传递进来,找到了所有满足条件id < id1和id > id2条件的表中数据并保存输出。
设置变量、获取变量
在转换里面有一个作业分类,里面有设置变量、获取变量的步骤(“设置变量”时,在当前转换当中是不能马上使用的,需要在作业中的下一个步骤中使用)。功能要求:kettle从一个转换里面设置变量id1和id2,d1 = 10和id2 = 3,在另一个转换里面获取变量id1和id2,从t_users表中获取数据,满足条件id < id1和id > id2,结果保存输出到excel文件中(这里需要利用作业将两个转换顺序串起来)
表输入设置
表输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
设置变量、获取变量设置及结果展示
设置变量、获取变量设置:1、设置变量:依次输入变量名及变量默认大小,并选择变量活动类型,确定即可;2、获取变量:依次输入变量名称及变量参数,再选择变量类型,然后确定即可;3、变量传递:先设置好数据库连接后,将“?”写入SQL语句中,然后在“从步骤插入数据”栏目上找到“获取变量”,再确定,实现变量传递的设置。
变量设置:
变量传递:
作业中设置变量
变量不仅可以在转换里面设置,也可以在作业里面设置变量(注意:如果一个作业含有多个转换,3个以上,且里面的转换都要使用变量,则我们在作业里面进行变量设置,而且作业里设置的变量,不仅可以先获取,再替换,还可以直接替换使用)。功能要求:在作业里面设置变量量id1和id2,d1 = 10和id2 = 3,在转换里以两种不同的方式进行变量替换:1、先获取变量,再进行步骤替换;2、直接变量替换,都从t_users表中获取数据,满足条件id < id1和id > id2,结果保存输出到excel文件中(这里需要利用作业将两个转换顺序串起来)。
表输入设置
表输入设置及Excel文件输出设置在上述的kettle的输入控件有述说。
作业中设置变量的设置及结果展示
先获取变量,再进行步骤替换的方法跟转换中设置变量、获取变量一样。直接变量替换的时候:建立数据库表连接后,在SQL语句将设置的变量传递进来(注意参数书写规范:%%变量名%%,或${变量名}),然后勾选“替换SQL语句里的变量”栏目,再确定,实现变量传递的设置。
发送邮件
发送邮件就是执行成功、失败、其它某种情景给相关人员发送邮件(注意:只有企业邮箱(发送邮件方)才可以,个人邮箱不行,而且需要在邮件设置中开通客户端授权码)。
发送邮件的设置:新建一个作业,在作业的下拉框功能选项中有邮件控件,在邮件控件中含有发送邮件功能按钮。打开发送邮件按钮后,在地址窗口下:输入收件人地址(可以是个人邮箱),发件人地址(一定要是企业邮箱);在服务器窗口下设置好SMTP服务器地址,服务器端口号,同时在该窗口下的用户验证中,要允许在客户端登录;在邮件消息窗口下:可以设置消息信息(如勾选信息里带日期),还可以添加主题和注释。