我有两个单独的字段(来自两个单独的 Excel 文件输入)可以在 Pentaho Kettle 中进行比较。第一个 Excel 文件的字段名称称为“位置”,第二个 Excel 输入的字段名称称为“方向”。这两个字段的数据类型都是“String”。
“位置”字段的条目是唯一的,而“方向”字段的条目不是唯一的。例如,它们可能多次包含字符串“New York”。
我想要做的是将“方向”字段的每个条目与“位置”字段的所有条目进行比较。由于位置字段充当查找表,我想知道哪些方向条目未在位置条目中列出。
结果应该是一些未出现在位置查找表中的字符串(方向)。为了做到这一点,我需要两个循环(嵌套的)来比较每个方向条目与每个位置条目。我如何使用 Pentaho Kettle 实现这一目标?我已经尝试过合并行(diff)和修改后的 Java 脚本值步骤,但没有成功。关于如何解决这个问题有什么建议吗?
最佳答案
Pentaho 使用流工作,通常不需要循环。
在下图中,我构建了一个简单的转换,它应该可以完成您想要的操作:
- 这两个 Excel 输入应该可以为您提供路线和位置,以及您需要的任何其他字段。
- 流查找将位置中的所有记录加载到内存中进行比较(将位置 Excel 输入配置为查找步骤),然后根据您配置的字段(方向和位置)从方向中查找每一行。
- 您应该至少输入一个字段以从位置查找中返回,即 ID 或位置本身。
- 过滤行然后检查新字段(Location_id、位置、您拥有的内容)是否具有某些值。如果已填,则该位置存在,如果为空,则转至“未找到”以进行进一步处理。
关于javascript - Pentaho水壶: Compare two inputs with a loop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58609037/