有时候需要对Kettle抽取过来的数据进行加解密或者其他一些自定义的操作,Kettle本身有对称加密和解密的功能,但由于有时候需要自定义,所以还是提供了调用外部接口的能力。
新建一个自定义处理的JAVA类,例如:
package test; public class Test{ public static final String getMyName(String name){ //your code return name; } }
处理好你的逻辑以后,打包成一个JAR包,放到KEttl的 lib目录里面,然后 在Java代码控件填写调用逻辑
import test.Test; public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException { Object[] r = getRow(); if (r == null) { setOutputDone(); return false; } if (first) { first = 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, outputRowSize); /* TODO: Your code here. (See Sample) / Get the value from an input field String foobar = get(Fields.In, "a_fieldname").getString(r); foobar += "bar"; // Set a value in a new output field get(Fields.Out, "output_fieldname").setValue(r, foobar); */ //调用jar String name= get(Fields.In, "ENAME").getString(r); //输入参数 name= Test.getMyName(name); get(Fields.Out, "ENAME").setValue(r, name); //获取参数 String AGEField = getParameter("AGE"); get(Fields.Out, "AGE").setValue(r, AGEField); //输出参数 // Send the row on to the next step. putRow(data.outputRowMeta, r); return true; }
运行转换测试数据是否正确