Java脚本
1.在数据转换页面点击创建Java脚本菜单,系统进入Java脚本页面。Java脚本主要实现对BI系统中已有数据,通过Java定义的实现类,调用指定方法生成新的目标表,Java脚本类采用java语法。
2.创建Java脚本对话框主要包括Java脚本,目标表两个选项卡,如下图:
3.录入步骤名称,选择数据,设置转换过程的原表,录入Java处理类名称及路径。Java处理类是一个实现com.ruisitech.bi.service.etl.DataProcessInterface 接口的Java类,主要包括两个方法:
public void init(DaoHelper daoHelper) 方法
JAVA处理类初始化方法,在进行数据处理前先进行初始化工作。其中 daoHelper 用来访问数据库。
public void process(Map data) 方法
JAVA处理类数据处理方法,系统每处理一行数据就会调用一次此方法,data 参数为原表的行数据对象,数据处理完成后,系统按照data对象中的数据插入目标表中。
定义好的实现类必须编译成功后,再重启应用服务器才能生效。
java处理类接口代码如下:
package com.ruisitech.bi.service.etl;
import com.ruisi.ext.engine.dao.DaoHelper;
import java.util.Map;
/**
* @ClassName 数据处理接口
* @Description 在数据转换中创建JAVA脚本,其中JAVA类必须实现此接口来完成数据的处理。
* @Author huangqin
* @Date 2022/4/25 9:40 上午
*/
public interface DataProcessInterface {
/**
* 初始化方法
* @param daoHelper
*/
public void init(DaoHelper daoHelper);
/**
* 数据处理方法
* @param data 表的一行数据
*/
public void process(Map<String, Object> data);
}
4.如下代码演示Java处理类:
package com.ruisitech.ext.service;
import com.ruisi.ext.engine.dao.DaoHelper;
import com.ruisitech.bi.service.etl.DataProcessInterface;
import java.util.Map;
/**
* @ClassName 测试Java脚本类
* @Description TestJavaProcess
* @Author zxd
* @Date 2022/4/25 10:46 上午
*/
public class TestJavaProcess implements DataProcessInterface {
private DaoHelper daoHelper;
@Override
public void init(DaoHelper daoHelper) {
this.daoHelper = daoHelper;
}
@Override
public void process(Map<String, Object> data) {
String f_hkont = (String) data.get("f_hkont");
if(f_hkont == null || f_hkont.length() == 0){
data.put("f_hkont", "nocode");
}
}
}
通过判断f_hkont字段的值,如果值不存在设置为新的值 nocode 。
5.目标表可以是已有表,也可以基于原表字段创建新的表,如下图:
6.同步方式支持全量同步和增量同步两种方式,增量同步采用rsbi_crtdate 字段做时间戳。
7.如果需要在处理数据出现异常时,回滚已经处理的数据及时间戳,需要勾选异常处理单选框。
8.设置完成后点击确定按钮完成Java脚本的创建。请注意:Java脚本主要用来处理行数据,做不了数据聚合的操作,定义的Java类必须编译成功并且重新启动Tomcat等应用服务器。