【问题标题】:Running Talend child jobs through a parent job通过父作业运行 Talend 子作业
【发布时间】:2017-01-15 17:36:46
【问题描述】:

我想开发一个将读取文件的 Talend 作业父作业。该文件将包含所有子作业名称。 因此,父作业在运行时必须遍历文件中的每个条目(即每个子作业名称)并执行子作业。 谁能指导我。

【问题讨论】:

  • 你输入文件的格式是什么?我们可以举一个你的输入文件的例子吗?
  • 输入文件可以是CSV文件。

标签: talend


【解决方案1】:

您可以使用tRunJob动态作业功能,我执行了3个子作业,分别称为a,b和c,并且在文件中指定了顺序,见下文:

第一个块是将文件加载到上下文中,您可以使用属性文件或分隔文件。

我使用了这个内容的属性文件:

jobs=a;c;b;a

您必须添加一个名为 jobs 的字符串类型的上下文变量,以将属性值放入其中。

现在,我们的作业列表存储在一个上下文变量中,我们需要使用 tJavaFlex 遍历它们并更新一个名为 currentjob 的上下文变量:

最后,这是如何设置 tRunJob 组件:

这里指定要执行的作业,但是执行顺序是由文件指定的!

【讨论】:

  • 是否有可以在任何地方编辑的架构?以及要填写的任何上下文参数?我收到错误“作业无法解析为变量”
  • 你需要 2 个上下文变量,jobs 将在一个来自文件的字符串中包含所有作业名称,currentjob 是每次迭代中要执行的作业。
  • 如何创建这些上下文变量?我是 talend 新手,所以我不知道。
  • 看这里:define context var
  • 我必须为两个上下文变量jobs和currentjob赋予什么值?
【解决方案2】:

你可以像下面的场景那样做

这是我尝试的示例作业。

我假设您的输入来自 CSV 文件,并且输入文件包含三个作业名称,分别是

ChildJob1
ChildJob2
ChildJob3

我正在获取作业名称并将其分配给如下上下文变量

然后在tRunJob 组件中使用该上下文变量。

每个子作业都有一个 tjava 组件,用于显示作业名称

希望对你有所帮助。

【讨论】:

  • 我得到以下错误值无法解析或不是字段请帮助!
  • 在哪个字段上,错误突出显示?如果它在context.JobName 上,请检查您是否在Contexts 选项卡中声明了JobName 上下文变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
  • 2018-05-13
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
相关资源
最近更新 更多