本 Talend 部分讨论了 Talend tMap 查找模型、查找匹配模型和存储临时数据选项。总的来说,当我们查找表中只有一条匹配记录时,更改 Talend tMap 查找匹配模型是没有意义的。但是,当查找表中有多条匹配记录时,我们必须指定为特定 ID 选择哪一条。匹配模型选项完全控制这一点。
从下面的部门表文本文件中可以看出,该文件有部门 ID 2 和 6 的多个条目。

我们使用了员工和部门文本文件来演示 Talend tMap 查找匹配模型。

首先,我们将 tMap 添加到作业设计器中,并将员工主输入行连接到 tMap。接下来,我们将部门主行添加到 tMap,它将自动转换为查找表。

接下来,我们添加了 tLogRow,将 tMap 的新输出连接到它,并将其命名为 Lookup_Output。我建议您参考 Talend tJoin 和 tMap Joins 文章来理解。

下面的屏幕截图显示了最终的 Talend tMap 查找匹配模型作业。请双击 tMap 以打开 tMap 架构编辑器。

Talend tMap 查找匹配模型示例
首先,我们连接了员工表和部门表的键或公共列,即 DeptID。接下来,我们将所有列拖到了 Lookup_output。

让我们运行 Talend tMap 查找匹配作业,看看输出。

从上面的屏幕截图中,您可以看到部门 ID 2 加载了 Developer。对于部门 ID 6,它加载了 Sales 作为部门名称。
请单击“设置”选项卡,然后单击“匹配模型”的浏览按钮以打开可用选项。设置将决定 tMap 查找需要选择的匹配记录。如您所见,它有四个选项,默认选项是“唯一匹配”。因此,默认的“唯一匹配”模型选择查找表中的最后一条匹配记录。

让我将匹配模型更改为“首次匹配”,然后运行 Talend tMap 查找匹配模型作业以查看结果。

下面的 tMap 查找图像已为部门 ID 2 和 6 的部门名称选择了第一个匹配的记录。

这次我们将 tMap 匹配模型选项更改为“所有匹配”。

从下面的查找匹配模型图像中,它显示了部门 ID 的所有匹配的部门名称。

如果您将 Talend tMap 匹配模型更改为“所有行”,Talend 将显示两个表的笛卡尔积。

Talend tMap 查找模型设置
单击 tMap 查找模型设置旁边的浏览按钮将显示可用的查找模型选项。
- 仅加载一次:查找表中的所有记录将在开始时加载,并且 tMap 查找将使用这些记录。
- 每次行加载:此查找表将加载并处理主行中的每条记录。
- 每次行加载(缓存):与上面相同,但它将从缓存中处理。

类似地,tMap 还有一个称为“存储临时数据”的选项。将其从默认的 False 更改为 True,您可以将查找表存储在本地文件系统中,它将充当临时数据。

如果启用“存储临时数据”选项,那么您需要选择“临时数据目录”路径来保存此临时数据。我建议您在处理数百万条记录时尝试此选项。
