【问题标题】:How to Loop inside Pentaho Data Integration Transformation如何在 Pentaho 数据集成转换中循环
【发布时间】:2019-08-05 18:56:44
【问题描述】:

我有以下 pdi 工作结构:

START ---> TR1 ---> TR2 ---> TR3

地点:

TR1 将返回 3 行,

TR2 我启用了execute every input row,将返回 5 行,

TR3 由我启用了execute every input row,它应该运行了 15 次(这 3 个TR2 各运行 5 次)。

我的期望是:

TR1 将运行 1 次,TR2 将并行运行 3 次(因为 TR1 返回 3 行),

并且TR3 将运行 15 次(因为每个 TR2 返回 5 行)。

但后来现实是

TR2被执行了3次,如预期的那样,

但是TR3只执行了1次,不如预期。

我的问题是:

  1. 为什么会这样?

  2. 如何使TR3 在TR2 的行中充当循环

【问题讨论】:

  • 尝试再创建一份工作。第一份工作会有TR1和TR2,第二份工作会有第一份工作和TR3,试试这个。

标签: pentaho pentaho-spoon pentaho-data-integration pdi


【解决方案1】:

为此您需要创建作业,请尝试此顺序

开始-tr1-(job1(tr2-subjob2(tr3)))-结束

job1 和 job2 将在执行每个原始输入时检查。

显示- 创建job1并连接到tr1,然后将tr2放入其中创建subjob2并连接到tr2,然后将tr3放入subjob2

【讨论】:

  • @xcode,这个答案更适合您,因为与在 1 个作业中直接调用 3 个 TR 调用相比,您可以更好地控制变量和执行,
【解决方案2】:

我假设,TR 代表转型,所有的 TR 都是工作的一部分?如果是这种情况,那么您需要做的就是 - 在 TR1 中,通过将 TR1 中的最后一步与“将行复制到结果”连接起来,将结果发送到 TR2,然后在工作中双击 TR2 并转到“高级”并选中“将以前的结果复制到参数”和“执行到每个输入行”。

现在,在 TR2 的参数选项卡下以相同的顺序以相同的名称添加来自 TR1 的列名称。然后在 TR2 属性中将它们添加为具有空默认值的参数,以便您可以将先前转换生成的值用作 TR2 中的变量。现在将 TR3 包含在 TR2 中,以便它甚至为 TR1 生成的每一行执行。我希望我没有混淆。如果没有意义,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2014-12-23
    相关资源
    最近更新 更多