KETTLE-作业-条件组件
条件组件
Shell
- 执行shell脚本,日志可输出控制台或日志文件
- Insert script为不执行脚本文件,可以在Script区编写shell脚本内容
- Script file name为选择要执行脚本文件,$ {Internal.Job.Filename.Directory} 为当前作业的目录,默认:${user.dir}为data-integration安装目录
- Logging settings为定义日志文件,在${user.dir}生成日志文件,Append logfile?为日志追加,Extension of logfile为文件类型后缀(推荐.log/.txt)
- Copy previous results to args?为与转换的 Copy rows to result组件配合使用,将复制的result作为参数传递到shell
- Execute for every input row?为上个步骤返回多条流数据,每一行都执行一次shell脚本,且将这一行的数据作为参数传递
- Fields为传递到shell脚本的参数,window(%1、%2),linux($1、$2)
JavaScript
支持使用java类以及方法,如equals
变量用var声明
语法 | 描述 |
---|---|
parent_job | 当前作业,对应 org.pentaho.di.job.Job类 |
new Number(var) | 数据类型转换 |
parent_job.getVariable(var)、${var} | 获取变量 |
parent_job.setVariable(var,value) | 设置变量 |
true、false | 对应成功返回、失败返回 |
is_windows | 是否为Window系统(boolean) |
previous_result.getResult() | 上一个作业组件的执行结果状态(boolean,true:成功,false:失败) |
previous_result.getExitStatus()、exit_status | 获取最近一个shell组件的执行结果状态(int,0:成功,1:失败) |
previous_result.getEntryNr() 、nr | 获取前面组件总数(不包含某些组件:write to log等辅助性组件),发现在shell组件之前获取,总是返回0,在之后能正常获取到(int) |
previous_result.getNrErrors()、errors | 获取上一个 作业组件返回的异常数,连线必须为异常连线;如果不连异常线而是成功线,可在write to log组件使用${nrErros}获取异常数(long) |
previous_result.getRows() | 获取上一个转换组件的结果行,该转换需使用Copy rows to result组件(对应java类 RowMetaAndData,通过row[index].getString(key,normalValue)来获取属性值) |
previous_result.isStopped() | 获取上一作业组件是否停止(boolean) |
previous_result.getLogChannelId() | 获取上一个作业组件的日志通道ID,可以使用它来查找日志通道日志表中的具体信息,需要作业和转换配置日志记录功能(string) |
previous_result.getLogText() | 获取上一个作业组件及其子子孙孙组件的日志文本,仅仅包含组件输出的信息(string) |
previous_result.getResultFilesList() | 获取在此之前所有组件中使用的所有文件的列表(对应java类ResultFile) |
lines_input、previous_result.getNrLinesInput() | 从数据库或文件读取的行数(long),实际无效 |
lines_output、previous_result.getNrLinesOutput() | 写入数据库或文件的行数(long),实际无效 |
lines_read、previous_result.getNrLinesRead() | 从上一个转换步骤读取的行数(long),实际无效 |
lines_updated、previous_result.getNrLinesUpdated() | 数据库表中更新的行数(long),实际无效 |
lines_written、previous_result.getNrLinesWritten() | 写入下一个转换步骤的行数(long),实际无效 |
previous_result.getNrLinesDeleted()、lines_deleted | 数据库表中删除的行数(long),实际无效 |
previous_result.getNrLinesRejected() | 拒绝的行数并通过错误处理传递给另一个步骤(long),实际无效 |
files_retrieved、previous_result.getNrFilesRetrieved() | 从FTP服务器检索的文件数(int),待测试 |
遗留
- JavaScript组件中获取数据库、文件操作行数,测试不出效果,问题解决思路