本节将通过一个示例介绍创建 Talend 父子作业的步骤。它还将帮助您了解如何使用上下文变量将值从父作业传递到子作业。当我们想在父作业中使用子作业 ETL 时,我们可以使用 tRunJob。
Talend 父子作业示例
为了演示 Talend 父子作业,我们使用了下面的员工信息文本文件。

创建 Talend 子作业
首先,我们创建了一个子作业,并将其命名为 Child_Job。接下来,我们使用 Talend tJava 组件打印一条简单的消息。

上述文本文件有五列,我们希望通过子作业打印除员工 ID 之外的所有列值。
通常,我们不会从父作业获取值到子作业。要提供相同的值,我们需要上下文变量。让我在此子作业中添加四个上下文变量,以适应这些文本文件列。

在 tJava 组件选项卡中,我们添加了以下 Java 代码。
System.out.println( StringHandling.UPCASE(context.FirstName + " " + context.LastName) + " Working as a " + context.Occupation + " earning " + context.YearlyIncome + " Monthly!" );

上面的代码将连接名字和姓氏。然后 UPCASE 函数将名称转换为大写。
创建 Talend 父作业
正如您所见,我们创建了另一个名为 Parent_Job 的作业,并添加了 tFileInputDelimited 以 将文本文件数据加载到 Talend。

我们使用浏览按钮选择了文件名,并将字段分隔符更改为逗号。请点击编辑模式并添加列名和长度。

接下来,我们添加了 tFlowToIterate 来迭代文本文件中的行,然后添加了 tRunJob。这意味着对于文本文件中的每一行,tFlowToIterate 都将帮助迭代 tRunjob 并显示打印语句。
在 tRunJob 组件选项卡中,我们选择了 Child_Job。

在上下文参数中,使用添加按钮添加子作业的上下文参数,即 FirstName。如果您没有任何上下文变量,则无法将任何值从父作业传递到子作业。

接下来,我们将 Main 行的 FirstName 分配给此上下文参数。类似地,为剩余的上下文参数分配值。

一旦点击此 Talend 父子作业的运行按钮,您就可以看到结果。如果您查看执行流程,tRunJob 已执行十次,因为员工表中共有十行。
