Talend 父子作业

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

Talend 父子作业示例

为了演示 Talend 父子作业,我们使用了下面的员工信息文本文件。

Employee Information File

创建 Talend 子作业

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

Talend Parent Child Job 1

上述文本文件有五列,我们希望通过子作业打印除员工 ID 之外的所有列值。

通常,我们不会从父作业获取值到子作业。要提供相同的值,我们需要上下文变量。让我在此子作业中添加四个上下文变量,以适应这些文本文件列。

Create four fields in Context Tab to Map Columns

tJava 组件选项卡中,我们添加了以下 Java 代码。

System.out.println(
StringHandling.UPCASE(context.FirstName + " " + context.LastName) +
" Working as a " + context.Occupation + " earning " + context.YearlyIncome + " Monthly!"
);
Write a Code for tJava

上面的代码将连接名字和姓氏。然后 UPCASE 函数将名称转换为大写。

创建 Talend 父作业

正如您所见,我们创建了另一个名为 Parent_Job 的作业,并添加了 tFileInputDelimited 以 将文本文件数据加载到 Talend

Talend Parent Child Job 4

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

Edit Schema

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

在 tRunJob 组件选项卡中,我们选择了 Child_Job。

Talend Parent Child Job 8

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

Talend Parent Child Job 9

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

Parent Child Job 11

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

Run the Talend Parent Child Job Workflow