目录
一、记录集连接
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.运行转换并查看结果
查看结果: