java集成kettle 8.2 获取转换的执行日志与步骤度量

java集成kettle 8.2 获取转换作业的执行日志与步骤度量

spring boot 2.3.2 kettle 8.2


此文只给个参考,没有完整代码,基本大同小异

日志表sql

CREATE TABLE `etl_job_log` (
  `ID_JOB` int(11) DEFAULT NULL,
  `CHANNEL_ID` varchar(255) DEFAULT NULL,
  `JOBNAME` varchar(255) DEFAULT NULL,
  `STATUS` varchar(15) DEFAULT NULL,
  `LINES_READ` bigint(20) DEFAULT NULL,
  `LINES_WRITTEN` bigint(20) DEFAULT NULL,
  `LINES_UPDATED` bigint(20) DEFAULT NULL,
  `LINES_INPUT` bigint(20) DEFAULT NULL,
  `LINES_OUTPUT` bigint(20) DEFAULT NULL,
  `LINES_REJECTED` bigint(20) DEFAULT NULL,
  `ERRORS` bigint(20) DEFAULT NULL,
  `STARTDATE` datetime DEFAULT NULL,
  `ENDDATE` datetime DEFAULT NULL,
  `LOGDATE` datetime DEFAULT NULL,
  `DEPDATE` datetime DEFAULT NULL,
  `REPLAYDATE` datetime DEFAULT NULL,
  `LOG_FIELD` mediumtext,
  KEY `IDX_wgyth_kettle_log_1` (`ID_JOB`) USING BTREE,
  KEY `IDX_wgyth_kettle_log_2` (`ERRORS`,`STATUS`,`JOBNAME`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;




CREATE TABLE `etl_trans_log` (
  `ID_BATCH` int(11) DEFAULT NULL,
  `CHANNEL_ID` varchar(255) DEFAULT NULL,
  `TRANSNAME` varchar(255) DEFAULT NULL,
  `STATUS` varchar(15) DEFAULT NULL,
  `LINES_READ` bigint(20) DEFAULT NULL,
  `LINES_WRITTEN` bigint(20) DEFAULT NULL,
  `LINES_UPDATED` bigint(20) DEFAULT NULL,
  `LINES_INPUT` bigint(20) DEFAULT NULL,
  `LINES_OUTPUT` bigint(20) DEFAULT NULL,
  `LINES_REJECTED` bigint(20) DEFAULT NULL,
  `ERRORS` bigint(20) DEFAULT NULL,
  `STARTDATE` datetime DEFAULT NULL,
  `ENDDATE` datetime DEFAULT NULL,
  `LOGDATE` datetime DEFAULT NULL,
  `DEPDATE` datetime DEFAULT NULL,
  `REPLAYDATE` datetime DEFAULT NULL,
  `LOG_FIELD` mediumtext,
  KEY `IDX_wgyth_trans_log_1` (`ID_BATCH`) USING BTREE,
  KEY `IDX_wgyth_trans_log_2` (`ERRORS`,`STATUS`,`TRANSNAME`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

1:首先创建转换的时候先配置日志表

//配置日志表
transMeta.getTransLogTable().setTableName(repInitialization.transLog);

2:运行指定转换时,日志已经存到指定日志表中了
在这里插入图片描述
通过查询数据库当前执行日志和步骤度量封装返回即可

for (int i = 0; i < trans.nrSteps(); i++) {
   List<Object> jsonArray = new ArrayList<>();
   StepInterface stepInterface = trans.getRunThread(i);//获得该步骤元数据
   StepStatus status = new StepStatus(stepInterface);//获得步骤状态元对象
   String[] fields = status.getTransLogFields();//步骤度量状态数据
      for (int j = 0; j < fields.length; j++) {
           sonArray.add(fields[j]);
       }
       list.add(jsonArray);
   }
   //获取执行日志
  List<Object[]> bySql = logDao.findBySql("select t.CHANNEL_ID,t.LOG_FIELD from " + transMeta.getTransLogTable().getTableName() + " t where t.CHANNEL_ID =" + "'" + trans.getLogChannelId() + "'");

可以看到我们执行返回的结果中已经带上封装好的度量和日志了
在这里插入图片描述

在这里插入图片描述
作业获取基本大同小异,封装执行度量和日志返回展示
在这里插入图片描述
有二次开发kettle不懂的地方也可以问我,QQ:648267940

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值