tMap 组件

17 Mar 2025 | 6 分钟阅读

在本章中,我们将学习如何借助 **tMap** 来映射多个组件。

为了理解映射组件的工作原理,我们将使用 tMap 组件执行多个操作。

首先,我们将在本地系统中创建 **customer.txt** 和 **department.txt** 文件。

我们对 **customer.txt** 和 **department.txt** 这两个文件执行连接操作,并从 **department.txt** 文件中获取 **dept_name**。

创建 Job

要在 Talend Studio 中创建 Job,请按照以下步骤操作:

  • 首先,我们将通过双击图标来打开 Talend Studio。
  • Talend Studio 打开后,转到 Repository 面板。
  • 然后右键单击 **Job Design**,选择 **Create Job** 选项,如下面的截图所示。

Repository → Job Designs → Create job

tMap Component
  • **[New Job]** 窗口将打开,在此填写所有必要详细信息,如 **Name、Purpose 和 Description**。
  • 然后单击 **Finish** 按钮,如下面的截图所示。
tMap Component

现在,我们将添加组件以进行后续处理。

添加组件

要向 Job 中添加组件,请按照以下步骤操作。

  • 转到 **Palette** 面板,然后转到 **File** 选项,选择 **tFileInputDelimited** 组件,如下面的图像所示。
tMap Component
  • 将所选组件从 **Palette** 面板拖到 **Design Workspace Window**,如下面的图像所示。
tMap Component
  • 之后,双击 **tFileInpuDelimited_1** 组件,在 **File name/ Stream** 字段中通过单击 **[...]** 按钮添加 **customer.txt** 文件。

然后,我们将添加特定文本文件的元数据。

在 Job 中集中化元数据

要在 Job 中集中化元数据,请按照以下步骤操作:

  • 转到 **Schema** 字段,并在提供的下拉列表中选择 **Repository** 选项。
  • 然后,单击 **[...]** 按钮添加元数据,如下面的截图所示。
tMap Component
  • 单击 **[...]** 按钮后,将打开 **Repository Content** 窗口,我们将在其中按照以下路径操作:

Metadata → file delimited → customer_metadata0.1 → metadata

tMap Component
  • 然后,单击 **OK** 按钮,如上图所示。

注意:创建 File Delimited 元数据,可以参考以下链接:
http://javatpoint.com/talend-centralizing-file-delimited-metadata

  • 之后,我们将为另一个输入文件 **department.txt** 添加一个组件。
  • 为此,我们将遵循与 **customer.txt** 文件相同的步骤。
  • 在添加第二个组件 **tFileInputdelemited_2** 后,我们的 **Design workspace** 窗口将如下面的图像所示。
tMap Component

添加 tMap 组件

完成特定文件的组件添加后,我们就可以添加 tMap 组件了。

请按照以下步骤将 tMap 组件添加到 Design workspace 窗口:

  • 转到 **Palette** 面板,然后在搜索框中键入 **tMap**。
  • 然后,从 **Palette** 中拖动 **tMap** 组件,并将其放置在 **Design workspace** 窗口中,如下面的图像所示。
tMap Component

现在,我们已成功将 tMap 组件添加到 Design workspace 窗口。

添加组件后,我们将连接这些组件。

连接组件

要将文件分隔输入组件连接到 tMap 组件,请按照以下步骤操作:

  • 在 Design workspace 窗口中,右键单击 **tFileInputDelimeted_1** 组件,选择 **Row**,然后选择 **Main**,如下面的图像所示。
tMap Component
  • 然后,连接到 **tMap_2** 组件,如下图所示。
tMap Component

之后,我们将连接第二个组件,即 **tFileInputDelimeted_2** 到 **tMap_2** 组件。

连接 **tFileInputDelimeted_2** 到 **tMap_2** 组件的步骤与连接 **tFileInputDelimited_1** 组件的步骤相同。

连接 **tFileInputDelimeted_2** 到 **tMap_2** 后,我们的 Design workspace 窗口将如下面的图像所示。

tMap Component

成功连接组件后,我们将添加一个 Output 组件。

添加 Output 组件

要添加输出组件,请按照以下路径操作:

Palette 窗格 → File → output → tFileOutputDelimited_1

  • 将所选的 **tFileOutputDelimited_1** 组件拖到 Design workspace 窗口,如下面的图像所示。
tMap Component
  • 然后,连接 **tMap_2** 到 **tFileOutputDelmited_1**。

要连接这两个组件,请按照以下步骤操作:

  • 右键单击 **tMap_2** 组件,然后转到 **Row**,在弹出菜单中选择 **New Output (Main)** 选项,如下面的图像所示。
tMap Component
  • 单击 New Output 后,将打开 **tMap_2 output** 窗口。我们需要为新的输出命名,因此我们将其命名为 **final_output**,如下面的图像所示。
tMap Component

之后,单击 **OK** 按钮。

添加并连接所有组件后,我们的 Design workspace 窗口将如下面的图像所示。

tMap Component

现在,我们将对 **tMap_2** 组件执行一些操作。

要对 tMap 组件执行操作,请按照以下步骤操作:

  • 双击 **tMap_2** 组件。
  • 双击 tMap 组件后,将打开 **[Map Editor]** 窗口,如下面的图像所示。
tMap Component

Map Editor 是一个 **一体化** 工具,它允许我们在图形界面上定义映射、转换和路由数据流所需的所有参数。

我们可以使用 Map Editor 中的窗口图标最小化和恢复所有显示的表格。

Map Editor 是多个面板的组合,它们是:

  • 输入面板
  • 变量面板
  • 搜索面板
  • 输出面板

输入面板

它是 Map Editor 上的 **左上角面板**,输入面板是所有(主和查找)传入数据流的表示,数据在输入表的多个列中收集。

同时,请注意表名在 Design workspace 窗口中反映了 Job Design 中的主行或查找行。

tMap Component

变量面板

它是 Map Editor 的中央面板。变量面板允许通过映射到变量来集中化不必要的信息。它将使我们能够执行转换。

tMap Component

搜索面板

它位于 Map Editor 中变量面板的上方。

在搜索面板中,我们可以在编辑器中搜索包含我们在 find 字段中输入的文本的列或表达式。

tMap Component

输出面板

它位于编辑器的右上角。输出面板用于将数据和字段从输入表和变量映射到合适的输出行。

tMap Component

注意:两个底部面板分别是输入和输出 Schema 的描述。

映射编辑器中存在两个编辑器,它们是:

  • Schema 编辑器
  • Expression 编辑器

Schema 编辑器

在 Schema 编辑器中,我们可以在各自的面板中看到输入和输出表的所有列的 Schema 视图,如下面的图像所示。

tMap Component

>Expression 编辑器

它是输入/输出数据、变量表达式或过滤条件的表达式键的编辑工具。

Map Editor 中的输入/输出表名反映了传入和传出流(行连接)的名称。

tMap Component

tMap 操作

以下是 tMap 操作的类型:

  • 对任何类型的字段进行数据转换
  • 数据多路复用和解复用
  • 使用约束过滤字段
  • 字段连接和交换
  • 数据拒绝

之后,我们将连接 row1 和 row2 并将其操作到输出分隔文件中。

为此,从 **row1** 中选择 **dept_no** 并将其拖到 **row2**,如下面的图像所示。

tMap Component

单击 **tMap** 设置按钮,然后单击 **Left Outer Join** 按钮,如下面的截图所示。

tMap Component

之后,在 **Options** 窗口中,选择 **Left Outer Join** 选项,然后单击 **OK** 按钮,如下面的截图所示。

tMap Component

然后,我们将选择 **row1** 并将其拖到输出面板,如下面的图像所示。

tMap Component

现在,我们将 **dept_name** 从 **row2** 拖到输出面板,如下所示。

tMap Component

因此,我们拥有 **row1** 和 **row2** 的所有列,它们已映射到输出面板。

之后,单击 **Apply** 按钮,然后单击 **OK** 按钮,如下面的图像所示。

tMap Component

然后,单击 **Yes** 按钮以允许更改,如下面的截图所示。

tMap Component

之后,双击 **tFileOutputDelimited_1** 文件,然后单击 **Edit Schema**。

tMap Component
  • 在上图中,我们可以看到所有列都从 **Row1** 映射到了 **Row2**,然后单击 **Ok** 按钮。
  • 在 **File Name** 列中,我们可以更改文件扩展名,例如 **.txt**。
tMap Component

之后,单击 **Run** 按钮以开始执行 **tMap_demo** job。

tMap Component

结果将在 Design workspace 窗口中显示如下。

tMap Component

输出将显示在 **out.txt** 文件中,如下面的截图所示。

tMap Component