Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops Talend:运行条件VS迭代_Loops_If Statement_Talend - Fatal编程技术网

Loops Talend:运行条件VS迭代

Loops Talend:运行条件VS迭代,loops,if-statement,talend,Loops,If Statement,Talend,如果我使用一个'Run If'条件,它也不能作为一个'Iterate'工作吗 我有一个变量_X,它允许许多值(在“tflowtointerate”组件中定义)。然后,根据变量_Y的值,我想将变量_X的所有值传递给另一个作业(4个可用作业之一)。 因此,我希望在每个作业之前使用“Run If”条件,但我希望通过所选作业迭代变量X的值 我该怎么做呢?我有点困惑。您想使用变量Y来选择要调用的subjob,但是您想向该subjob传递一个变量X,该变量X从TflowToItem流(因此在每次迭代时都会更

如果我使用一个'Run If'条件,它也不能作为一个'Iterate'工作吗

我有一个变量_X,它允许许多值(在“tflowtointerate”组件中定义)。然后,根据变量_Y的值,我想将变量_X的所有值传递给另一个作业(4个可用作业之一)。 因此,我希望在每个作业之前使用“Run If”条件,但我希望通过所选作业迭代变量X的值


我该怎么做呢?

我有点困惑。您想使用变量Y来选择要调用的subjob,但是您想向该subjob传递一个变量X,该变量X从TflowToItem流(因此在每次迭代时都会更改)

据我所知,恐怕不可能。您可以通过一个小技巧从迭代信号中抛出不同的RunIf信号,但是您不能迭代子作业。子作业将在每次迭代时使用单个值X调用,也不会调用集合。如果需要,恐怕您必须稍微更改一下设计(例如,在单个字符串上串联X的可能值,在子作业中分解它并在本地循环)

如果您想从一个迭代符号触发多个信号,可以使用未记录的“组件缓冲区”技巧。Talend团队可能并不乐于知道这一点,但它确实有效。其思想是使用代理迭代信号的虚拟组件

                                                         /--->RunIf--->[stuff1]
                                                        /
                                                       /
tRowGenerator---row--->tFlowToIterate---Iterate--->tWarn--->RunIf----->[stuff2]
                                                       \
                                                        \
                                                         \--->RunIf--->[stuff3]

tWarn
(例如,您可以用来打印详细调试)将充当代理。因此,RunIf将在每次迭代时进行评估。“stuff”可以是subbob,但它将获得X的当前值,而不是整个集合。

“您希望使用变量Y来选择要调用的subbob,但随后您希望向该subbob传递一个变量X,该变量X从一个tflowtointerate(因此在每次迭代时都会发生变化)?”是的,就是这样。我想我的问题是,正如你所说,当我试着重复做一份儿童工作时。现在,我已经将每个子作业复制到父作业中,并且在“If语句”之前有一个空的“tJava”,用作伪作业,如您所说。显然,它正在发挥作用。再次感谢:)