第五章(扩展)——高级转换

目录

一、记录集连接

        1.事件介绍与数据预览

        2.打开kettle创建转换

        3.配置步骤

        4.运行转换并查看结果

二、多路数据合并连接

        1.事件介绍与数据预览

        2.打开kettle创建转换

        3.配置步骤

        4.运行转换并查看结果

三、单变量统计

        1.事件介绍与数据预览

        2.打开kettle创建转换

        3.配置步骤

        4.运行转换并查看结果

四、公式

        1.事件介绍与数据预览

        2.打开kettle创建转换

        3.配置步骤

        4.运行转换并查看结果

五、利用Janino计算java表达式

        1.事件介绍与数据预览

        2.打开kettle创建转换

        3.配置步骤

        4.运行转换并查看结果

六、JavaScript代码

        1.事件介绍与数据预览

        2.打开kettle创建转换

        3.配置步骤

        4.运行转换并查看结果

七、设置变量

        1.事件介绍与数据预览

        2.打开kettle创建转换

        3.配置步骤

        4.运行转换并查看结果

八、获取变量

        1.事件介绍与数据预览

        2.打开kettle创建转换

        3.配置步骤

        4.运行转换并查看结果


一、记录集连接

        1.事件介绍与数据预览

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

 

 

        2.打开kettle创建转换

 

        3.配置步骤

双击Excel输入控件,点击浏览将语文数据导进来后点增加,然后点工作表选项卡将工作表移过去,最后点字段选项卡点获取来自头部数据的字段,将序号和学号的数据类型改成Integer

 

 

点预览记录看语文数据是否抽取进来

 

双击排序记录控件,对学号进行升序排序

 

Excel输入2控件和排序记录2控件采取相同的操作将英语成绩也导进来 

双击记录集连接控件,在第一个步骤处下拉选择排序记录,同样第二个步骤选择排序记录2,连接类型选择INNER,连接字段选择学号

 

 双击计算器控件,在新字段处写总分,计算语文和英语的总分

 

        4.运行转换并查看结果

查看合并的结果 

 

二、多路数据合并连接

        1.事件介绍与数据预览

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

 

 

 

        2.打开kettle创建转换

 

        3.配置步骤

Excel输入控件和排序记录均是上述操作,不再赘述

双击Multiway merge join控件,在Input Step1,2,3处分别选择排序记录1,2,3,连接类型选择INNER,点Select Keys会出现Join小框,然后选择学号点确定,具体操作如下:

 双击字段选择控件,点击选择和修改选项卡,然后点击获取选择的字段将所有字段都包含进来,然后点击移除选项卡将重复的学号和序号去除,具体操作如下:

 

 双击计算器控件,在新字段处填入总分,计算三门课总分,具体操作如下:

 

        4.运行转换并查看结果

 查看最终结果:

 

三、单变量统计

        1.事件介绍与数据预览

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

 

        2.打开kettle创建转换

 

        3.配置步骤

Excel输入控件配置不再提及,双击单变量统计,对语文和数学进行统计,具体配置如下:

 

        4.运行转换并查看结果

 查看结果:

 

四、公式

        1.事件介绍与数据预览

在某年级的“2019年11月月考成绩.xls”文件中,为了统计成绩以表彰优秀的学生,需要使用公式组件,统计学生所有考试科目的总分,并对总分650分以上的学生评优标注“优秀”。

 

        2.打开kettle创建转换

 

        3.配置步骤

Excel输入不在提及,双击公式控件进行如下配置

 

        4.运行转换并查看结果

 查看结果:

 

五、利用Janino计算java表达式

        1.事件介绍与数据预览

在某年级的“2020年4月月考成绩.xls”文件中,为了了解学生的考试情况,需要采用利用Janino计算Java表达式组件,统计每个学生月考成绩的总分,并按照四舍五入的方法,计算每个学生的平均分

 

        2.打开kettle创建转换

 

        3.配置步骤

Excel输入不在提及,双击利用Janino计算Java表达式控件进行如下配置:

 

        4.运行转换并查看结果

查看结果:

六、JavaScript代码

        1.事件介绍与数据预览

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

 

        2.打开kettle创建转换

 

        3.配置步骤

Excel输入不在提及,双击JavaScript代码控件,进行如下配置

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

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

 

        4.运行转换并查看结果

查看结果

 

 

七、设置变量

        1.事件介绍与数据预览

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

        2.打开kettle创建转换

 

 

        3.配置步骤

双击获取系统信息控件,字段设置为“fileDate”,类型设置为“今天00:00:00”

双击JavaScript控件,双击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");

 双击设置变量控件进行如下配置

 

        4.运行转换并查看结果

 查看结果:

 

八、获取变量

        1.事件介绍与数据预览

某生产系统定时每天推送前两天的、名称格式为yyyyMMdd的数据文件,为了获得已设置好的日期变量并每天读取前两天的数据文件,需要使用获取变量组件,获取七中用户自定义的fileDate变量

        2.打开kettle创建转换

        3.配置步骤

        4.运行转换并查看结果

查看结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值