Talend:"主要链接"在SubJob从其中检索值之前不起作用

时间:2016-11-08 12:45:54

标签: etl talend

我的Talend工作有问题。 我的目标是从人员列表(从数据库中提取)开始,并对列表中的每一行检查Active Directory中是否已存在该ID。

检查ID是否已存在的subjob(cherche_doublon_id)正常工作。工作应该返回一个结果" idUnique"如果ID不存在," idDoublon"在其他情况下。 该子工作使用由父项传输的ID作为上下文参数。

我的问题似乎是连接"主要"谁进入我的孩子工作。如果我放了一个" OnComponentOk",那么subjob运行良好,但只有一次在我列表的最新元素上。使用" main"连接,我想为列表中的每一行执行subjob,但我无法在作业中检索结果。

在这里,您可以找到我的工作和组件的设置: my job and the settings of the components

如果我使用" OnComponentOk"在subjob之前链接,我可以检索没有任何困难。 查看相应的屏幕截图: See the corresponding screenshot

但就我而言," OnComponentOk"不可行,因为我想为你的每一行做我的东西。

3 个答案:

答案 0 :(得分:1)

最后,我通过改变工作结构解决了我的问题。 在我最初的问题中,我试图找回我的第一份工作的结果" cherche_doublon",我想过滤这个结果。

现在我决定以级联模式工作。

这意味着我有了第一份工作: liste_titulaires→affect_global→cherche_doublon

在我的cherche_doublon里面,我做我的东西,最后在我的结果中,我做了一个或另一个工作: Here the image of the subjob

我有其他子工作。 好的一点是,在我的主要工作中,我迭代列表中的每个元素,并完成我的子工作中的所有处理。我使用上下文参数来传输我所需的信息。

现在一切正常。 谢谢你的帮助。

达明。

答案 1 :(得分:0)

我不清楚你的工作是怎样的。您提供了图片中的大量信息,但没有完整的主要和副主题图片。

所以,我想猜几件事:

  • tJava不是基于行的,所以如果你在工作中也使用它,这可能是问题的原因
  • onComponentOk让第一部分完全运行,解释只提供最后一个条目的行为。因此,这会将作业分成几个独立的步骤
  • 检查丢失或已存在的条目的方法通常看起来过于复杂。为什么是一个subjob?

我会选择这样的工作布局:

Liste titulaires --row--> tMap --rowFound-->doStuff
            AD --lookup--/    \--rowNotFound-->doOtherStuff    

答案 2 :(得分:0)

您可以在tHashInput和tRunJob之间使用tFlowToIterate。它将为tHashInput的每一列创建一个全局变量。然后,您可以使用迭代链接将tFlowToIterate链接到tRunJob,并通过将tFlowToIterate.Id字段传递给变量glb_individu_id来配置tRunjob。