使用java获取kettle上个步骤的数据并处理输出到下步骤

本文深入探讨了Kettle中的行处理方法,详细讲解了如何通过读取输入行、解析参数变量、计算输出值并传递至下一节点的过程。具体演示了从输入流获取数据,解析特定字段,进行数值计算,并将结果格式化后输出的完整流程。

import java.io.File;
import java.io.IOException; 
 
//kettle中已定义好的行处理方法,每行记录都会运行一次
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
    //(1)获取到上一个步骤的输入行
    Object[] r = getRow();
    if (r == null) {
      setOutputDone();
      return false;
    }
    r = createOutputRow(r, data.outputRowMeta.size());
 
    //(2)读取出參数变量值
 
    
    String tab="";   
    //调用代码解析tab对应的数值
    try {
        String codeIn=get(Fields.In,"tab").getString(r);    
        System.out.println(codeIn);
        byte[] bytes = codeIn.getBytes();
        int i=0;
        //for (byte b : bytes) {
        //    i += b;
        //}
        for(int j=0;j<bytes.length;j++){
            i+=bytes[j];
        }
 
        i = i%100 + 1;
        if(i < 10){
            tab ="00"+i;
        }else if(i < 100){
            tab ="0"+i;
        }else{
            tab =""+i;
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
 
    //(4)把计算好的值放入到输出记录中
    get(Fields.Out, "tab").setValue(r, tab);
    //get(Fields.Out, "col").setValue(r, recordcount);
 
    //(5)输出到下一个节点做处理
    putRow(data.outputRowMeta, r);
    return true;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值