需求:
通过kettle脚本控件调用java项目的中方法 大体流程如下
步骤:
创建输入
输入->自定义常量数据, 元数据2列 key,value
创建java 代码
1 添加控件 脚本->java 代码
2 选用主程序,双击code snippits->common use->mian 方法,会再processor中创建processRow方法用于处理每一行数据
3 将java项目打包,并添加到lib下面,重启kettle,就可以加载自定义的类,例如我用到的StringUtil
中一个获取当前日期的方法genDate()
4 再processor 中引入我们自定义类,并在代码中调用自定义的方法
import com.yatsenglobal.mall.util.StringUtil;
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
if (first) {
first = false;
}
//获取行数据
Object[] r = getRow();
if (r == null) {
setOutputDone();
return false;
}
// It is always safest to call createOutputRow() to ensure that your output row's Object[] is large
// enough to handle any new fields you are creating in this step.
//创建输出结果
r = createOutputRow(r, data.outputRowMeta.size());
//调用自己jar中的函数
String a=StringUtil.genDate();
//对输出的结果value进行赋值
get(Fields.Out, "value").setValue(r,a);
// Send the row on to the next step.
putRow(data.outputRowMeta, r);
return true;
}
创建输出
流程->空操作,对数据不做处理
看到这里大家都还有很多问号,这个code snippits 下很多函数怎么使用,贴上官方文档,只能找到部分用法, 函数直接点击,就会在processor中生成对应的代码。
自定义java类