Pentaho Kettle:将两个输入与一个循环进行比较?

问题描述 投票:0回答:1

我有两个单独的字段(来自两个单独的excel文件输入),可以在Pentaho Kettle中进行比较。第一个excel文件的字段名称称为“位置”,第二个excel输入的字段名称称为“方向”。这两个字段的数据类型均为“字符串”。

“位置”字段的条目是唯一的,而“方向”字段的条目不是唯一的。例如,它们可能多次包含字符串“ New York”。

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

结果应该是未出现在location-lookup-table中的许多字符串(方向)。为了做到这一点,我将需要两个循环(嵌套的)来比较每个方向条目和每个位置条目。如何使用Pentaho Kettle实现此目的?我已经用“合并行(diff)”和“修改后的Java脚本值步骤”进行了尝试,但没有成功。有关如何解决此问题的任何建议?

javascript etl pentaho kettle pentaho-spoon
1个回答
0
投票

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

在下面的图片中,我构建了一个简单的转换,该转换应该可以执行您想要的操作:

  1. 这两个Excel输入将为您提供方向和位置,以及您需要的任何其他字段。
  2. 流查找将位置中的所有记录加载到内存中进行比较(将位置Excel Input配置为查找步骤),然后根据您配置的字段(方向和位置)从“方向”中查找每一行。
  3. 您应该至少输入一个字段以从位置查询中返回ID,位置本身。
  4. 然后,筛选器行会检查新字段(Location_id,位置,所拥有的内容)是否具有某些值。如果已填充,则该位置存在;如果为空,则该位置转到“未找到”以进行进一步处理。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.