在PDI中,我有以下结构
- 0_Metajob
- 1_Load_1
- 1_Load_2
- 1_SimpleEvaluation
- 1_Mail
截至目前
1_Load_1 和 1_Load_2 彼此独立。无论第一个是否成功,第二个都将运行。没关系,我想要这样!
我希望有一个计数器,每次单次加载失败时递增 1,即在我的示例中,计数器可以取值 0、1 或 2.
我需要它做什么?客户将在元作业结束时收到一封邮件。上述值决定了邮件的主题,即 0=一切正常,1=马马虎虎,2=加载完全失败!
为什么不在每一个加载作业中邮寄?我这样做,但没有附加日志文件,因为它通常未完成。因此,日志文件将与元作业完成时发送的邮件一起邮寄。
尝试<</strong>br/>"设置变量"。以为我可以通过在值字段中添加一个来简单地增加它,即"${变量名称}+1"。当然,此步骤是在每个 Load-Job.
的故障路径中实现的,但是,它不起作用.
有人介意帮助我吗?我将不胜感激!
Set Variable 不做计算,你需要一个 Javascript 步骤。
幸运的是,变量也可以在Javascript步骤中设置。这段代码应该进入你放置的每个步骤,而不是设置变量步骤:
var i = parseInt(parent_job.getVariable("Counter"),0);
i = i + 1;
parent_job.setVariable("Counter",i);
true;
这段代码从父作业中获取变量"Counter"并将其转换为 int,因为所有 Pentaho 变量都是字符串。然后它递增它并再次设置作业变量。最后的"true"是确保javascript步骤向主作业报告成功。
重要提示:这与您在作业中的预期大致相同。它不会在转变中!