kettle如何通过java增加数据行


前言

通过kettle开发过程中,需要通过动态添加新的数据行来为后面的任务做处理。

解决思路

通过owDataUtil.createResizedCopy复制kettle的Row对象,再通过putRow()方法输出出去。
核心逻辑就是每次输出前复制一个r,利用复制的r进行输出就可以得到每次修改后输出的结果了。

示例:

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
  if (first) {
    first = false;
  }
  Object[] r = getRow();
  if (r == null) {
    setOutputDone();
    return false;
  }
  r = createOutputRow(r, data.outputRowMeta.size());
  String test = get(Fields.In, "test").getString(r);
  String[] split = test.split(",");
  for(String s : split){
    //使用RowDataUtil.createResizedCopy复制r对象,利用复制的对象进行行输出
    Object[] newRow = RowDataUtil.createResizedCopy(r, data.outputRowMeta.size());
    get(Fields.Out, "test").setValue(newRow, s);
    putRow(data.outputRowMeta, newRow);
  }
  return true;
}

引用

本文引用自博客:kettle - 使用java代码新增行

声明:一代明君的小屋|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - kettle如何通过java增加数据行


欢迎来到我的小屋