Pentaho/PDI:如果加载作业(元作业内)失败,则自动将值增加1

Pentaho/PDI:如果加载作业(元作业内)失败,则自动将值增加1,pentaho,kettle,pentaho-data-integration,Pentaho,Kettle,Pentaho Data Integration,在PDI中,我有以下结构 0_元作业 1_负载_1 1_负载_2 1.简单评估 1_邮件 截至目前 1_负载_1和1_负载_2相互独立。第二个将运行,而不管第一个是否成功。没关系,我想这样 问题 我希望计数器在每次一个加载失败时递增一,即在我的示例中,计数器可以取值0、1或2。 我需要它做什么?客户将在元作业结束时收到一封邮件。上述值确定邮件的主题,即0=一切正常,1=一般,2=加载完全失败 为什么不在每个加载作业中发送邮件?我这样做,但没有附加日志文件,因为它通常是未完成的。因此,日志文件

在PDI中,我有以下结构

  • 0_元作业
  • 1_负载_1
  • 1_负载_2
  • 1.简单评估
  • 1_邮件
截至目前
1_负载_1和1_负载_2相互独立。第二个将运行,而不管第一个是否成功。没关系,我想这样

问题
我希望计数器在每次一个加载失败时递增一,即在我的示例中,计数器可以取值0、1或2。
我需要它做什么?客户将在元作业结束时收到一封邮件。上述值确定邮件的主题,即0=一切正常,1=一般,2=加载完全失败
为什么不在每个加载作业中发送邮件?我这样做,但没有附加日志文件,因为它通常是未完成的。因此,日志文件将与元作业完成时发送的邮件一起发送

尝试过
“设置一个变量”。我想我可以简单地通过在value字段中添加一个1来增加它,即“${VariableName}+1”。当然,此步骤是在每个加载作业的失败路径中实现的。
但是,它没有起作用。


有人介意帮我吗?我会很感激的

Set变量不进行计算,您需要一个Javascript步骤

幸运的是,还可以在Javascript步骤中设置变量。这段代码应该进入您放置在集合变量步骤中的每个步骤:

var i = parseInt(parent_job.getVariable("Counter"),0);
i = i + 1;
parent_job.setVariable("Counter",i);
true;
这段代码从父作业获取变量“Counter”,并将其转换为int,因为所有Pentaho变量都是字符串。然后将其递增,并再次设置作业变量。最后的“true”是确保javascript步骤向主作业报告成功

重要提示:这与你在工作中的预期大致相同。它不会在一个转变