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  - **[New Job]** 窗口将打开,在此填写所有必要详细信息,如 **Name、Purpose 和 Description**。
- 然后单击 **Finish** 按钮,如下面的截图所示。
 现在,我们将添加组件以进行后续处理。 添加组件要向 Job 中添加组件,请按照以下步骤操作。 - 转到 **Palette** 面板,然后转到 **File** 选项,选择 **tFileInputDelimited** 组件,如下面的图像所示。
 - 将所选组件从 **Palette** 面板拖到 **Design Workspace Window**,如下面的图像所示。
 - 之后,双击 **tFileInpuDelimited_1** 组件,在 **File name/ Stream** 字段中通过单击 **[...]** 按钮添加 **customer.txt** 文件。
然后,我们将添加特定文本文件的元数据。 在 Job 中集中化元数据要在 Job 中集中化元数据,请按照以下步骤操作: - 转到 **Schema** 字段,并在提供的下拉列表中选择 **Repository** 选项。
- 然后,单击 **[...]** 按钮添加元数据,如下面的截图所示。
 - 单击 **[...]** 按钮后,将打开 **Repository Content** 窗口,我们将在其中按照以下路径操作:
Metadata → file delimited → customer_metadata0.1 → metadata  - 之后,我们将为另一个输入文件 **department.txt** 添加一个组件。
- 为此,我们将遵循与 **customer.txt** 文件相同的步骤。
- 在添加第二个组件 **tFileInputdelemited_2** 后,我们的 **Design workspace** 窗口将如下面的图像所示。
 添加 tMap 组件完成特定文件的组件添加后,我们就可以添加 tMap 组件了。 请按照以下步骤将 tMap 组件添加到 Design workspace 窗口: - 转到 **Palette** 面板,然后在搜索框中键入 **tMap**。
- 然后,从 **Palette** 中拖动 **tMap** 组件,并将其放置在 **Design workspace** 窗口中,如下面的图像所示。
 现在,我们已成功将 tMap 组件添加到 Design workspace 窗口。 添加组件后,我们将连接这些组件。 连接组件要将文件分隔输入组件连接到 tMap 组件,请按照以下步骤操作: - 在 Design workspace 窗口中,右键单击 **tFileInputDelimeted_1** 组件,选择 **Row**,然后选择 **Main**,如下面的图像所示。
 - 然后,连接到 **tMap_2** 组件,如下图所示。
 之后,我们将连接第二个组件,即 **tFileInputDelimeted_2** 到 **tMap_2** 组件。 连接 **tFileInputDelimeted_2** 到 **tMap_2** 组件的步骤与连接 **tFileInputDelimited_1** 组件的步骤相同。 连接 **tFileInputDelimeted_2** 到 **tMap_2** 后,我们的 Design workspace 窗口将如下面的图像所示。  成功连接组件后,我们将添加一个 Output 组件。 添加 Output 组件要添加输出组件,请按照以下路径操作: Palette 窗格 → File → output → tFileOutputDelimited_1 - 将所选的 **tFileOutputDelimited_1** 组件拖到 Design workspace 窗口,如下面的图像所示。
 - 然后,连接 **tMap_2** 到 **tFileOutputDelmited_1**。
要连接这两个组件,请按照以下步骤操作: - 右键单击 **tMap_2** 组件,然后转到 **Row**,在弹出菜单中选择 **New Output (Main)** 选项,如下面的图像所示。
 - 单击 New Output 后,将打开 **tMap_2 output** 窗口。我们需要为新的输出命名,因此我们将其命名为 **final_output**,如下面的图像所示。
 之后,单击 **OK** 按钮。 添加并连接所有组件后,我们的 Design workspace 窗口将如下面的图像所示。  现在,我们将对 **tMap_2** 组件执行一些操作。 要对 tMap 组件执行操作,请按照以下步骤操作: - 双击 **tMap_2** 组件。
- 双击 tMap 组件后,将打开 **[Map Editor]** 窗口,如下面的图像所示。
 Map Editor 是一个 **一体化** 工具,它允许我们在图形界面上定义映射、转换和路由数据流所需的所有参数。 我们可以使用 Map Editor 中的窗口图标最小化和恢复所有显示的表格。 Map Editor 是多个面板的组合,它们是: 输入面板它是 Map Editor 上的 **左上角面板**,输入面板是所有(主和查找)传入数据流的表示,数据在输入表的多个列中收集。 同时,请注意表名在 Design workspace 窗口中反映了 Job Design 中的主行或查找行。  变量面板它是 Map Editor 的中央面板。变量面板允许通过映射到变量来集中化不必要的信息。它将使我们能够执行转换。  搜索面板它位于 Map Editor 中变量面板的上方。 在搜索面板中,我们可以在编辑器中搜索包含我们在 find 字段中输入的文本的列或表达式。  输出面板它位于编辑器的右上角。输出面板用于将数据和字段从输入表和变量映射到合适的输出行。  注意:两个底部面板分别是输入和输出 Schema 的描述。映射编辑器中存在两个编辑器,它们是: Schema 编辑器 在 Schema 编辑器中,我们可以在各自的面板中看到输入和输出表的所有列的 Schema 视图,如下面的图像所示。  >Expression 编辑器 它是输入/输出数据、变量表达式或过滤条件的表达式键的编辑工具。 Map Editor 中的输入/输出表名反映了传入和传出流(行连接)的名称。  tMap 操作以下是 tMap 操作的类型: - 对任何类型的字段进行数据转换
- 数据多路复用和解复用
- 使用约束过滤字段
- 字段连接和交换
- 数据拒绝
之后,我们将连接 row1 和 row2 并将其操作到输出分隔文件中。 为此,从 **row1** 中选择 **dept_no** 并将其拖到 **row2**,如下面的图像所示。  单击 **tMap** 设置按钮,然后单击 **Left Outer Join** 按钮,如下面的截图所示。  之后,在 **Options** 窗口中,选择 **Left Outer Join** 选项,然后单击 **OK** 按钮,如下面的截图所示。  然后,我们将选择 **row1** 并将其拖到输出面板,如下面的图像所示。  现在,我们将 **dept_name** 从 **row2** 拖到输出面板,如下所示。  因此,我们拥有 **row1** 和 **row2** 的所有列,它们已映射到输出面板。 之后,单击 **Apply** 按钮,然后单击 **OK** 按钮,如下面的图像所示。  然后,单击 **Yes** 按钮以允许更改,如下面的截图所示。  之后,双击 **tFileOutputDelimited_1** 文件,然后单击 **Edit Schema**。  - 在上图中,我们可以看到所有列都从 **Row1** 映射到了 **Row2**,然后单击 **Ok** 按钮。
- 在 **File Name** 列中,我们可以更改文件扩展名,例如 **.txt**。
 之后,单击 **Run** 按钮以开始执行 **tMap_demo** job。  结果将在 Design workspace 窗口中显示如下。  输出将显示在 **out.txt** 文件中,如下面的截图所示。 
|