栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kettle java脚本组件的使用说明(简单使用、升级使用)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kettle java脚本组件的使用说明(简单使用、升级使用)

文章目录
  • 前言
    • Kettle java脚本组件的使用说明(简单使用、升级使用)
      • 01 简单使用
      • 02 升级使用

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


Kettle java脚本组件的使用说明(简单使用、升级使用) 01 简单使用

获取java脚本组件

打开你刚刚移动过来的java脚本

几个地方要记住

main方法,
点击后可以看到出来一大坨代码:

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
if (first) {
first = false;

// Send the row on to the next step.
putRow(data.outputRowMeta, r);
return true;
}

几个关键的地方
输入流中取出你上级传入的字段内容用

String foobar = get(Fields.In, “a_fieldname”).getString®;

a_fieldname是你上级输入的字段名
如果想改变你上级输入的内容的话,用这个

get(Fields.Out, “output_fieldname”).setValue(r, foobar);

其中:
output_fieldname是你要改变的内容的字段名
foobar:需要重写的内容
通过这两种方式:

get(Fields.In, “a_fieldname”).getString ( r);

get(Fields.Out, “output_fieldname”).setValue(r, foobar);

就可以改变你要传进来的内容并向下级输出。

如果是文件流的话看这个:

/* TODO: Your code here. (Using info fields)
FieldHelper infoField = get(Fields.Info, “info_field_name”);
RowSet infoStream = findInfoRowSet(“info_stream_tag”);
Object[] infoRow = null;
int infoRowCount = 0;
// Read all rows from info step before calling getRow() method, which returns first row from any
// input rowset. As rowMeta for info and input steps varies getRow() can lead to errors.
while((infoRow = getRowFrom(infoStream)) != null){
// do something with info data
infoRowCount++;
}

其实,当你点击main方法的时候,简单的使用他们注释上都有。

对了还有日志,这个是打印在控制台上的,下面就是:

点击logBasic就会出现

logBasic(msg);

这个就是日志。

02 升级使用

kettle里面本身自带的jar包对于有些稍微复杂的逻辑来说,
好多api都不可以使用,这种时候我们可以把我们需要的jar或者是我们自己项目打成jar包放入
data-integrationlib文件下,记得要重启kettle。

比如,我这边需要一个json转换的方法,我就自己开了一个项目,将公用方法写进这个项目里打成jar包,放入lib文件下,使用的时候在java脚本里直接引用就好了。

看下面这个例子:

import com.tool.utils.XXX;
import java.text.ParseException;
import java.util.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public void initData(Object[] r ){
  //初始化
}
public static final String TIME_LINE = "yyyy-MM-dd'T'HH:mm:ss.SSSXX";
    public static Date stringToDate(String date, String format)       throws  ParseException {
            DateFormat dateFormat = new SimpleDateFormat(format);
            dateFormat.setLenient(false);
            return dateFormat.parse(date);
    }

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws  KettleException ,ParseException{
  if (first) {
    first = false;
    
  }
  Object[] r = getRow();
  if (r == null) {
    setOutputDone();
    return false;
  }
  initData(r );
  r = createOutputRow(r, data.outputRowMeta.size());
  String yyy= get(Fields.In, "yyy").getString(r);
  //自定义里面的方法
  String ppp = new XXX().jsonToData(yyy);
  //重写
  get(Fields.Out, "yyy").setValue(r,ppp);
  putRow(data.outputRowMeta, r);
  return true;
}

语法跟java一样

引用就是import。
在这里你就把它当成java一个类就可以,没有jar包的就把jar包放入lib文件夹下,
在重启kettle就可以了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844755.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号