kettle-如何在作业job中使用JavaScript脚本

该文章已生成可运行项目,

如何在作业job中使用JavaScript脚本

描述(Description)

使用JavaScript作业条目来计算布尔表达式。结果可用于确定下一步将要执行的步骤。您可以使用函数,过程调用,“与”,“与”号,“或”,“等式”等。Javascript作业条目会评估并返回true或false。

评估(Evaluation)

JavaScript作业条目的结果为true或false。换句话说,它需要以布尔表达式结尾。

下面是一些可能的评估,以结束您的脚本:

lines_input > 100

或者

true

或者

parent_job.getVariable("INPUT_DIRECTORY").equals("/tmp");

以下变量可用于表达式:

注意:确保您指定了从中选择“ lines_input”和其他数字的步骤。否则,值将保持为0。打开转换文件,然后在“转换设置”对话框的“日志”选项卡中执行此操作。

变量描述
errors上一个作业条目中的错误数(long)
lines_input从数据库或文件读取的行数(long)
lines_output写入数据库或文件的行数(long)
lines_updated数据库表中更新的行数(long)
lines_read从上一个转换步骤读取的行数(long)
lines_writer写入下一个转换步骤的行数(long)
files_retrieved从FTP服务器检索的文件数(long)
exit_statusShell脚本的退出状态(integer)
nr(Integer)前一个作业条目的作业条目号(long);在下一个工作条目中递增
is_windows如果Pentaho Data Integration在Windows上运行,则使用(布尔值)
parent_job当前作业条目的父作业(org.pentaho.di.job.Job类)
entry当前作业条目(org.pentaho.di.job.entries.JobEntryEval类)

变量(Variables)

这是评估变量字符串内容的方法:

parent_job.getVariable("NR_OF_ROWS") == 1000000 

由于我们可以访问parent_job对象,因此我们也可以通过以下方式在父作业中设置变量:

parent_job.setVariable("NR_OF_ROWS", "1000000");

请注意,setVariable调用的计算结果为false。在其后放一个“ true”,以避免该步评估为false并引发错误。

例如,您可以执行以下操作来操作此作业条目中的变量:

useDate = parent_job.getVariable("use_date").equals("1");
if (useDate == 0) { //We get to use native java classes as this is using Rhino mocks???
	date = new java.util.Date();
	date.setDate(date.getDate()-1); //Go back 1 full day
	dateFormat = new java.text.SimpleDateFormat("yyyyMMdd");
	newDateStr = dateFormat.format(date);
	parent_job.setVariable("start_date", newDateStr);
}
true;

上一步骤的结果(Previous result)

作业条目完成后,执行结果将是一个Result对象,向JavaScript引擎公开为“ previous_result”:

表达式替代数据类型含义
previous_result.getResult()boolean如果先前的作业条目已成功执行,则为true;如果存在某些错误,则为false。
previous_result.getExitStatus()exit_statusint前一个Shell脚本作业条目的退出状态
previous_result.getEntryNr()nrint每次执行作业条目时,条目号都会增加。
previous_result.getNrErrors()errorslong错误数,也可以作为变量“错误”使用
previous_result.getNrLinesInput()lines_inputlong从文件或数据库读取的行数
previous_result.getNrLinesOutput()lines_outputlong写入文件或数据库的行数
previous_result.getNrLinesRead()lines_readlong从上一步读取的行数
previous_result.getNrLinesUpdated()lines_updatedlong文件或数据库中更新的行数
previous_result.getNrLinesWritten()lines_writerlong写入下一步的行数
previous_result.getNrLinesDeleted()lines_deletedlong删除的行数
previous_result.getNrLinesRejected()lines_rejectedlong通过错误处理拒绝并传递到另一步骤的行数
previous_result.getRows()List结果行,另请参见下文。
previous_result.isStopped()boolean标记以指示上一个先前的作业条目是否停止。
previous_result.getResultFilesList()List上一个作业条目中使用的所有文件的列表
previous_result.getNrFilesRetrieved()files_retrievedint从FTP,SFTP等检索到的文件数。
previous_result.getLogText()String上一个作业条目及其子执行的日志文本。
previous_result.getLogChannelId()String上一个作业条目的日志通道的ID。您可以使用它在日志通道日志表中查找有关执行沿袭的信息。
is_windowsBoolean如果作业在Windows变体上运行,则为true,否则为false。

平台(Platform)

我们还公开了一个名为“ is_windows”的变量,以帮助您做出特定于平台的选择

行数(rows)

我们向JavaScript公开的“rows”变量可帮助您使用“将行复制到结果”步骤评估传递到下一个作业条目的结果行。
这是有关如何使用此数组的示例脚本:


var firstRow = rows[0];
 
firstRow.getString("name", "").equals("Foo")

该脚本将遵循绿色作业跳(green job hop),即表达式的值为真。如果字段“name”包含字符串“ Foo”,则会发生这种情况。

原文

https://wiki.pentaho.com/pages/viewpage.action?pageId=4358187

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值