首页 > 解决方案 > Pentaho / PDI:如果加载作业(在元作业内)失败,则自动将值增加一

问题描述

在 PDI 中,我有以下结构

到目前为止,
1_Load_1 和 1_Load_2 是相互独立的。无论第一个成功与否,第二个都会运行。没关系,我想要这样!

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

尝试
“设置变量”。以为我可以简单地通过在值字段中添加一个来增加它,即“${VariableName}+1”。当然,这一步是在每个 Load-Job 的失败路径中实现的。
但是,它没有用。

有人愿意帮助我吗?我会很感激的!

标签: pentahokettlepentaho-data-integration

解决方案


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

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

var i = parseInt(parent_job.getVariable("Counter"),0);
i = i + 1;
parent_job.setVariable("Counter",i);
true;

这段代码从父作业中获取变量“Counter”并将其转换为 int,因为所有 Pentaho 变量都是字符串。然后它增加它并再次设置作业变量。最后的“真”是确保javascript步骤向主作业报告成功。

重要提示:这与您在工作中所期望的大致相同。它不会发生转变!


推荐阅读