Pentaho Kettle:用循环比较两个输入?

Pentaho Kettle: Compare two inputs with a loop?

我有两个单独的字段(来自两个单独的 excel 文件输入)要在 Pentaho Kettle 中进行比较。第一个 excel 文件的字段名称为 "location",第二个 excel 输入的字段名称为 "direction"。两个字段的数据类型都是 "String".

"location" 字段的条目是唯一的,而 "direction" 字段的条目不是唯一的。例如,它们可能多次包含字符串 "New York"。

我想做的是将 "direction" 字段的每个条目与 "location" 字段的所有条目进行比较。由于位置字段用作查找 table,我想知道哪些方向条目未在位置条目中列出。

结果应该是一些没有出现在location-lookup-table中的字符串(方向)。为此,我需要两个循环(嵌套)来比较每个方向条目和每个位置条目。我如何使用 Pentaho Kettle 实现这一目标?我已经尝试使用 Merge Rows (diff)- 和 Modified Java Script Value-Steps 但没有成功。关于如何解决这个问题有什么建议吗?

Pentaho 使用流工作,通常不需要循环。

在下图中,我构建了一个简单的转换,它应该可以满足您的要求:

  1. 这两个 Excel 输入应该为您提供方向和位置,以及您需要的任何其他字段。
  2. Stream lookup 将 Locations 中的所有记录加载到内存中进行比较(配置 Locations Excel Input 作为查找步骤),然后根据您配置的字段(方向和方向)从 Directions 中查找每一行地点)。
  3. 您应该从 Locations 查找中至少输入一个字段 return,一个 id 或 Location 本身。
  4. 过滤器行然后检查新字段(Location_id、位置、您拥有的内容)是否具有某些值。如果填写,则该位置存在,如果为空,则转到未找到进一步处理。