附加案例第五章:高级转换(二)

一、建立利用Janino计算Java表达式转换工程

建立利用Janino计算Java表达式转换工程步骤如下。 (1) 创建利用Janino计算Java表达式转换工程。使用Ctrl+N快捷键,创建【利用Janino计算Java表达式】转换工程。 (2) 创建Excel输入组件和导入数据。创建【Excel输入】组件,如图所示,设置参数,导入“2020年4月月考成绩.xls”文件。(3) 预览考试成绩数据。单击工作区上方的    图标,预览学生考试成绩数据如图所示,在当前源数据中,只有各科课程的分数,没有统计总分和平均分。 (4) 创建【利用Janino计算Java表达式】组件和连接。在【利用Janino计算Java表达式】转换工程中,单击【核心对象】选项卡,单击展开【脚本】对象,选中【利用Janino计算Java表达式】组件,并拖曳到右边工作区中。由【Excel输入】组件指向【利用Janino计算Java表达式】组件,建立节点连接,双击【利用Janino计算Java表达式】组件,弹出【User defined Java expression】对话框,在【User defined Java expression】对话框中,设置参数,编辑Java表达式,统计学生各科考试成绩总分,并按照四舍五入计算平均分,分别保存在“总分”“平均分”字段中,步骤如下。

(1) 设置组件名称。保留【步骤名称】默认值“利用Janino计算Java表达式”。 (2) 设置字段参数。在【Fields】表中设置参数,如图所示,此时完成【利用Janino计算Java表达式】组件的参数设置。

 在【利用Janino计算Java表达式】转换工程中,单击【利用Janino计算Java表达式】组件,再单击工作区上方的    图标。预览执行利用Janino计算Java表达式后的结果数据,如图所示。

 二、建立JavaScript代码转换工程

建立JavaScript代码转换工程步骤如下。 (1) 创建JavaScript代码转换工程。使用Ctrl+N快捷键,创建【JavaScript代码】转换工程。 (2) 创建Excel输入组件并导入数据。创建【Excel输入】组件,如图所示,设置参数,导入“2020年4月月考成绩.xls”文件,并设置好字段参数,学生各科成绩字段设置为数值型。(3) 预览考试成绩数据。单击工作区上方的    图标。预览学生各科成绩数据,如图所示,当前源数据中,只有各科课程的分数,没有统计总分。

 (4) 在【JavaScript代码】转换工程中,单击【核心对象】选项卡,单击展开【脚本】对象,选中【JavaScript代码】组件,并拖曳到右边工作区中。由【Excel输入】组件指向【JavaScript代码】组件,建立节点连接,双击【JavaScript代码】组件,弹出【JavaScript代码】对话框,在图【JavaScript代码】对话框中,设置参数,编辑JavaScript脚本,统计学生各科考试成绩总分,并保存在“总分”字段中。 (1) 设置组件名称。保留【步骤名称】默认值“JavaScript代码”。(2) 编辑JavaScript脚本。在【JavaScript】编辑区中,编辑JavaScript脚本如下。

var  总分=0;

for (var i=0;i<getInputRowMeta().size();i++){      

         var valueMeta= getInputRowMeta().getValueMeta(i);      

         if (valueMeta.getTypeDesc().equals("Number")) {          

                 总分 =总分 + str2num(row[i]);    

  }

}

(3) 在【字段】表中,设置【总分】字段参数,如图所示,此时完成【JavaScript代码】组件的参数设置。在【JavaScript代码】转换工程中,单击【JavaScript代码】组件,再单击工作区上方的   图标。预览执行JavaScript代码后的数据,如图所示。

 

三、建立设置变量转换工程

 某生产系统定时每天推送前两天的、名称格式为yyyyMMdd(y指的是年,M指的是月,d指的是日,例如20200320)数据文件,例如20200320.csv。自定义fileDate变量,取值符合yyyyMMdd格式,随着日期改变,取值为当前日期的前两天,例如,今天为2020年3月24日,则fileDate取值为“20200322”。 建立设置变量转换工程步骤如下。

(1) 创建设置变量转换工程。使用Ctrl+N快捷键,创建【设置变量】转换工程。 (2) 创建获取系统信息组件,定义变量。创建【获取系统信息】组件,设置参数,【字段】设置为“fileDate”,【类型】设置为“今天00:00:00”。(3) 创建JavaScript代码组件,定义变量格式。创建【JavaScript代码】组件,如图所示。

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

双击【设置变量】组件,弹出【设置环境变量】对话框,需要注意,由于所有的组件都是并行运行的,所以不能在同一转换工程中既设置变量又使用该变量。 在【设置环境变量】对话框中,设置参数,将fileDate变量的变量活动类型设置为在这个虚拟机中均有效。

(1) 设置组件名称。保留【步骤名称】默认值“设置变量”。 (2) 设置【Apply formatting】参数。保留【Apply formatting】默认值“√”。(3) 设置【字段值】表参数。设置【字段值】表参数,如图所示,此时完成【设置变量】组件的参数设置。在【设置变量】转换工程中,单击【设置变量】组件。

 运行转换

四、获取变量

 在Kettle中,获取变量可以获得系统环境变量和用户自定义变量的值。 某生产系统定时每天推送前两天的、名称格式为yyyyMMdd的数据文件,为了获得已设置好的日期变量并每天读取前两天的数据文件,需要使用获取变量组件,获取5.7小节中用户自定义的fileDate变量。

 (1) 建立【获取变量】转换建立获取变量转换工程获取用户自定义的fileDate变量,操作步骤如下。

(1) 创建获取变量转换工程。使用Ctrl+N快捷键,创建【获取变量】转换工程。 (2) 在【获取变量】转换工程中,单击【核心对象】选项卡,单击展开【作业】对象,选中【获取变量】组件,并拖曳到右边工作区中,如图所示。工程。 (2) 设置【获取变量】参数。 (3) 预览结果数据。在【获得变量】对话框中,设置参数,获取fileDate变量。 (1) 设置组件名称。保留【步骤名称】默认值“获取变量”。 (2) 设置【字段】表参数。设置【字段】表参数,如图所示,此时完成【获取变量】组件的参数设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值