Kettle第五章-高级转换

目录

一.记录集连接

        1.简单介绍

        2.建立转换并添加控件

        3.配置各控件

        4.保存运行

二.多路数据合并连接

        1.简单介绍

        2.建立转换并添加控件

        3.配置各控件

        4.保存运行

三.单变量统计

        1.简单介绍

        2.建立转换并添加控件

        3.配置各控件

        4.保存运行

四.公式      

        1.简单介绍

        2.建立转换并添加控件

        3.配置各控件

        4.保存运行

五.利用Janino计算Java表达式  

        1.简单介绍

        2.建立转换并添加控件

        3.配置各控件

        4.保存运行

六.JavaScript代码

        1.简单介绍

        2.建立转换并添加控件

        3.配置控件

        4.点击保存运行

七.设置变量

        1.简单介绍

        2.建立转换并添加控件

        3.配置控件

        4.保存运行

 八.获取变量

        1.简单介绍

        2.建立转换并添加控件

        3.配置控件

        4.保存运行

 九.小结

一.记录集连接

        1.简单介绍

                 记录集连接是将具有相同关键字字段的两个记录表进行合并。

                案例:某年级的月考成绩分散在“月考语文成绩.xls”“月考英语成绩.xls”两个文件中, 为了统计学生考试成绩的总分,需要使用记录集连接组件,将成绩数据合并在一 起,并计算出总分。

        2.建立转换并添加控件

                “语文成绩”,“英语成绩”控件位Excel输入控件,“语文成绩排序”和“英语成绩排序”为

          排序记录控件。

        3.配置各控件

                (1)双击进入语文成绩控件,点击浏览找到“月考语文成绩.xls”“月考英语成绩.xls”两个 文件,并点击增加,具体如下图。

                点击工作表,添加工作表,用于浏览数据,具体如下

                点击字段,获取字段,具体如下

                预览数据

              (2)英语成绩控件和语文成绩控件的具体配置一样,这里不再做演示。

              (3)双击进入语文成绩排序控件,按照学号将数据进行升序排序,具体配置如下。

                  (4)英语成绩排序和语文成绩排序配置一样,再不做演示。

                (5)双击进入记录集连接控件,具体配置如下。

                                    

                (6)计算器控件,双击进入,添加一个新字段“totle”,计算公式选择"A+B",字段A设置为

                         语文,字段B设置为英语,值类型设置为Number,具体如下。

                (7)字段选择控件,双击进入,添加如下字段,具体如下图。

                 到这里控件配置结束!!

        4.保存运行

        从上图可以清楚看到,它合并了语文成绩和英语成绩,并计算出了总分。

二.多路数据合并连接

        1.简单介绍

                记录集连接是两个记录集的合并,而3个及以上的记录集,采用多路数据合并连接的方式。多路数据合并连接英文名称为Multiway merge join,是对多个记录集的合并,效率更高,速度更快。

                案例:由于某次月考成绩分散在“月考语文成绩.xls”“月考英语成绩.xls”“月考数学成绩.xls”3个文件中,为了统计学生语数英的考试分数,需要使用多路数据合并连接组件,合并这3个文件的成绩数据,并计算总分。

        2.建立转换并添加控件

                “语文成绩”,“英语成绩”,“数学成绩”控件为Excel输入控件,“语文成绩排序”,“英语成绩排序”,"数学成绩排序"为排序记录控件,“多数据合并”控件为Multiway merge join控件。

        3.配置各控件

                (1)“语文成绩”,“英语成绩”,“数学成绩”三个控件的配置和记录集连接中的配置是一样

        一样的,这里不再演示。

                (2)“语文成绩排序”,“英语成绩排序”,"数学成绩排序"三个控件的配置和记录集连接中

        的配置是一样的,这里不再演示。

                (3)多数据合并控件,双击【Multiway merge join】组件,弹出【Multiway merge join

        】对话框,进行参数设置,【Input Step1】参数设置为“语文成绩排序”,同一行的【Join

        Keys】参数设置为“学号”。也可以单击同一行【Select Keys】按钮,弹出【Join keys】对话

       框,在【Keys】表中的第1行,单击【Key Field】下的第一个输入框,在下拉框中选择“学

       号”,单击【确定(O)】按钮,添加“学号”字段名称至【Join Keys】参数中,如图所示。

                        【Multiway merge join】组件的参数包含【Step name】组件名称、Input StepN

      (N=1,2,3,…)输入组件名称、【Join Keys】连接关键字(Input StepN与【Join Keys】参

        数需两两配对)和【Join Type】连接类型参数。有关参数说明如表所示。

参数名称

说明

Step name

表示多路数据合并连接组件名称,在单个转换工程中,名称必须唯一。默认值是【Multiway merge join】的组件名称

Input StepN

表示合并连接的第N(N=1,2,3,4,…)个输入组件的名称,在下拉框中选择输入组件名称。默认值为空

Join Keys

表示对应所在行Input StepN输入组件的连接关键字段。单击所在行的【Select Keys】按钮,在弹出的对话框中选择字段名称。默认值为空

Join Type

表示多个源数据表的连接类型。在下拉框中选择连接类型,默认值为INNER。连接类型如下

FULL OUTER:连接结果包含来自多个数据源表的所有记录,而不匹配的记录,字段值被系统设为空(null)

INNER:只有在多个源数据表中具有相同关键字段值的记录才会包含在连接结果中(内连接)

                (4)计算器控件,双击进入,添加一个新字段“totle”,计算公式选择"A+B+C",字段A设置

           为数学,字段B设置为英语,字段C设置为语文,值类型设置为Number,具体如下。

                (5)字段选择控件,双击进入,添加如下字段,具体如下图。

                (6)排序记录控件,对过滤后的数据按照学号进行一个升序,具体如下。

        4.保存运行

三.单变量统计

        1.简单介绍

                单变量统计是对数据进行单个变量的数据统计,以字段为单变量,可以分别对多个字段进行数据统计,统计类型有N(统计数量)、最小值、最大值、平均值、样本标准差、中位数和任意百分位数等。

                案例:在“2018年上学期期末考试成绩.xls”文件中,为了了解学生考试的统计数据,对语文和数学两门主科进行数据统计,使用单变量统计组件,分别统计学生的考试人数、最低分、最高分、平均分和中位数等。

        2.建立转换并添加控件

        3.配置各控件

                (1)Excel输入控件再上面的案例中都已经介绍,在这里不再演示,只给出获取字段部分。

                (2)单变量统计控件,双击进入控件,具体配置如下。

                【单变量统计】组件的参数包含组件的基础参数和【Input fields andderived stats】参数,有关参数说明如表所示。

参数名称

说明

基础参数

Step name

表示单变量统计组件名称,在单个转换工程中,名称必须唯一。默认值是【单变量统计】组件名称

Input fields andderived stats

Input field

表示进行统计的字段名称,单击下拉框选择字段名称,默认值为空

N

表示是否统计字段记录数量,从下拉框中选择,选项有true、false,默认值为空

Mean

表示是否统计字段的均值,选项有true、false,默认值为空

Std dev

表示是否统计数值字段的standard deviation标准差,选项有true、false,默认值为空

Min

表示是否统计数值字段的最小值,选项有true、false,默认值为空

Max

表示是否统计数值字段的最大值,选项有true、false,默认值为空

Median

表示是否统计数值字段的中位数,选项有true、false,默认值为空

Percentile

表示数值字段百分位数,默认值为空

Interpolate percentile

表示是否统计数值字段的插入百分位数,选项有true、false,默认值为空

        4.保存运行

四.公式      

        1.简单介绍

                公式是用来计算数据流中数据的表达式。公式可以是“A+B”这样的简单计算,也可以是类似“if/then”复杂业务逻辑判断的表达式。

                案例:在某年级的“2019年11月月考成绩.xls”文件中,为了统计成绩以表彰优秀的学生,需要使用公式组件,统计学生所有考试

                科目的总分,并对总分650分以上的学生评优标注“优秀”。

        2.建立转换并添加控件

        3.配置各控件

                (1)Excel输入控件再上面的案例中都已经介绍,在这里不再演示,只给出获取字段部分。

                  (2)公式控件:双击进入控件,在公式框中编辑公式(点击公式框,会弹出如下窗口),具体如下。

          【公式】组件的参数包含组件的基础参数和【字段】表参数,有关参数说明如表所示。

参数名称

说明

基础参数

步骤名称

表示公式组件名称,在单个转换工程中,名称必须唯一。默认值是【公式】组件名称

字段

新字段

表示新增加的字段名称。默认值为空

公式

表示计算公式,单击单元格时,系统打开公式编辑器窗口,提供可用函数的帮助,方便用户编辑计算公式。默认值为空

值类型

表示字段的数据类型。类型选项有:BigNumber、Binary、Boolean、Date、Integer、Internet Address、Number、String、Timestamp。默认值为空

长度

表示字段长度。默认值为空

精度

表示数字类型字段的浮点数的精确位数。默认值为空

替换值

表示字段需要替换值。默认值为空

      4.保存运行

 

五.利用Janino计算Java表达式  

        1.简单介绍

                Janino是一个超小型,超快的Java编译器,Kettle可以利用Janino提供类和对象,定义Java表达式来计算新值。

                案例:在某年级的“2020年4月月考成绩.xls”文件中,为了了解学生的考试情况,需要采用利用Janino计算Java表达式组件,统计每个学生月考

         成绩的总分,并按照四舍五入的方法,计算每个学生的平均分。

        2.建立转换并添加控件

        3.配置各控件

                (1)  Excel输入控件再上面的案例中都已经介绍,在这里不再演示,只给出获取字段部分。

                (2)利用Janino计算Java表达式控件:双击进入控件,具体配置如下。

        4.保存运行

六.JavaScript代码

        1.简单介绍

                Kettle提供用户界面,可采用JavaScript脚本编程修改数据。

                案例:在某年级的“2020年4月月考成绩.xls”文件中,为了了解每个学生考试的总分,需要使用JavaScript代码组件,统计每个学生月考成绩的总分等。

        2.建立转换并添加控件

         3.配置控件

                Excel控件,点击浏览,添加文件,具体如下。

                接着点击工作表,进入后,点击下方获取工作表名称,将其添加,具体如下。

                点击字段,获取字段,具体如下。

                点击预览

                Java Script控件,点击进入控件,填写代码和配置下方字段,具体如下

var  总分=0;
for (var i=1;i<getInputRowMeta().size();i++){ 
       var valueMeta= getInputRowMeta().getValueMeta(i);

      if (valueMeta.getTypeDesc().equals("Number")) {
          总分 =总分 + str2num(row[i]);
      } 
}

 

         4.点击保存运行

七.设置变量

        1.简单介绍

                在Kettle中,读者可通过获得系统信息组件获得系统环境变量,也可以通过设置变量,定义虚拟机和任务中的变量。在项目中,经常利用生产环境或外围系统交互的FTP文件接口,获取固定格式的数据文件。

                案例:某生产系统每天定时推送名称格式包含yyyyMMdd的数据文件,为了获得日期变量并每天读取由生产系统推送的前两天的数据文件,需要使用设置变量组件,设置名称为fileDate的变量,该变量值需要符合yyyyMMdd格式,取值为当前系统日期的前两天。

        2.建立转换并添加控件

        3.配置控件

                (1)创建获取系统信息组件,定义变量。创建【获取系统信息】组件,设置参数,【字段】设置为“fileDate”,【类型】设置为“今天00:00:00”具体如下

                 (2)双击【JavaScript代码】组件,编写JavaScript脚本,定义dtNew变量格式为yyyyMMdd,取值为当前日期的前两天,并将dtNew变量名称改名为fileDate。编写代码和设置完成时,【JavaScript代码】参数设置如图所示。

Date.prototype.Format = function (fmt) { //author: meizz 
    var o = {
        "M+": this.getMonth() + 1, //月份 
        "d+": this.getDate(), //日 
        "h+": this.getHours(), //小时 
        "m+": this.getMinutes(), //分 
        "s+": this.getSeconds(), //秒 
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
        "S": this.getMilliseconds() //毫秒 
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}
var dtNew=new Date(new Date().getTime()-2*24*60*60*1000).Format("yyyyMMdd");

  

                (3)双击进入设置变量控件,设置【Apply formatting】参数。保留【Apply formatting】默认值“√”,设置【字段值】表参数。设置【字段值】表参数,具体如下。

         4.保存运行

 八.获取变量

        1.简单介绍

                在Kettle中,获取变量可以获得系统环境变量和用户自定义变量的值。

                案例:某生产系统定时每天推送前两天的、名称格式为yyyyMMdd的数据文件,为了获得已设置好的日期变量并每天读取前两天的数据文件,

                           需要使用获取变量组件,获取5.7小节中用户自定义的fileDate变量。

        2.建立转换并添加控件

    

        3.配置控件

                双击进入获取变量控件,设置【字段】表参数。设置【字段】表参数,如下图所示,此时完成【获取变量】组件的参数设置。

        4.保存运行

 九.小结

        本章对记录集连接、多路数据合并连接、单变量统计、公式、利用Janino计算Java表达式、JavaScript代码、设置变量和获取变量这8种典型的高级转换组件进行了介绍,阐述了这些组件的使用方法和步骤。

        通过任务,从数据准备,到转换组件之间的连接,设置组件参数和浏览转换处理后的数据,都进行详细说明,指出了各个高级转换处理的作用和不同之处,实现了对复杂的数据的转换处理。

             

Kettle工具使用 培训教程 目录 ETL 简介 KETTLE 简介 KETTLE 安装和运行 KETTLE 菜单简介 KETTLE 案例讲解 控件介绍 日志介绍 一、ETL 简介 ETL 概念简介 ETL相关的质量特性 ETL 在数据仓库项目中的位置 二、kettle 工具简介 Kettle是一款国外开源的ETL工具, 纯java编写,可以在Window、 Linux、Unix上运行,数据抽取高效 稳定 Kettle中有两种脚本文件, transformation(转换)和job (作业),transformation完成 针对数据的基础转换,job则完 成整个工作流的控制。 Kettle 工具的模型架构 kettle 工具的优缺点 优点: 系统开源、免费 安装方便、图形化安装 支持多种数据源 支持多种字符集 具有简单的权限管理 支持各种复杂数据转换 缺点 稳定性差 性能差 缺乏元数据管理 KETTLE 的下载 Kettle可以在 http://kettle.pentaho.org/网站下载 下载kettle压缩包,因kettle为绿色软 件,解压缩到任意本地路径即可 Kettle 运行步骤 双击运行 kettle 文件夹下的 Kettle 文件,出 现 kettle 欢迎界面。 创建资料库(可省略) 创建数据库连接 创建转换 创建Jobs,进行流程化控制 KETTLE 的使用 进入到Kettle目录,如果Kettle部署在windows环 境下,双击运行spoon.bat文件,出现如下界面: Kettle 使用步骤 (1)创建转换 大概的来说一般由三步组成: 输入+转换等中间步骤+输出 (2)创建作业 将已经创建好的转换和相关的作业组件串联起来, 形成一个整体的任务。 Kettle 的执行顺序 作业:分串行执行和并行执行,串行执行是先执行完其中一条线再执 行另一条线,并行是两条线同时执行,同一条线上的两个步聚会先执 行前面的再执行后面的。每个步骤执行结果分两种:true(成 功)/false(失败),根据返回结果可以控制流程走向。 转换:一开始所有步骤同时运行,记录会从最前端的步骤向后传递, 传递到相应步骤则该记录被该步骤作相应处理,处理完成再把记录往 后传递,记录传递分复制和分发两种模式。 KETTLE 的目录介绍 根目录文件夹介绍: 【Docs】存放Kettle各种语言版本的API文档。 【 Launcher 】存放Kettle Spoon加载的一些配置信息。 【 Lib 】存放Kettle所使用到的第三方jar包。比如:数据库驱动包, 如缺少时需要把对应的数据库驱动包放入此文件夹中。 【 Libswt 】存放Kettle对应不同平台的相关UI jar包。 【 Plugins 】存放Kettle自定义插件时,需要把自定义好的插件打成 jar放在此目录。 【 Pwd 】存放Kettle配置集群时所需要的配置文件与加密文件。 【 Samples 】存放Kettle自带的一些Job与Trans实例。 【 Simple-jndi 】存放Kettle使用JNDI方式连接数据源方式的文件 存放目录。目录下的jdbc.properties配置文件中有相应的实例提供 参考。 【 Ui 】存放Kettle初始化使用到的图片及配置信息。 Kettle 菜单介绍-transformation Main Tree菜单列出的是一个 transformation中基本的属性, 可以通过各个节点来查看。 DB连接:显示当前transformation 中的数据库连接,每一个 transformation的数据库连接都需要 单独配置。 Steps:一个transformation中应用 到的环节列表 Hops:一个transformation中应用 到的节点连接列表 转换的菜单介绍: Kettle 菜单介绍-transformation Core Objects菜单列出的是 transformation中可以调用 的环节列表,可以通过鼠标 拖动的方式对环节进行添加。 Input:输入环节 Output:输出环节 Lookup:查询环节 Transform:转化环节 Joins:连接环节 Scripting:脚本环节 转换的菜单介绍: Kettle 菜单介绍-transformation 每一个环节可以通过鼠标拖动来将环节添加到主窗 口中。 并可通过shift+鼠标拖动,实现环节之间的连接。 Kettle 菜单介绍-transformation 转换的常用环节介绍: Kettle 菜单介绍-job Main Tree菜单列出的是一 个Job中基本的属性,可以 通过各个节点来查看。 DB连接:显示当前Job中的数据 库连接,每一个Job的数据库连接 都
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CC-Betsy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值