javascript - Pentaho水壶: Compare two inputs with a loop?

标签 javascript etl pentaho kettle pentaho-spoon

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

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

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

结果应该是一些未出现在位置查找表中的字符串(方向)。为了做到这一点,我需要两个循环(嵌套的)来比较每个方向条目与每个位置条目。我如何使用 Pentaho Kettle 实现这一目标?我已经尝试过合并行(diff)和修改后的 Java 脚本值步骤,但没有成功。关于如何解决这个问题有什么建议吗?

最佳答案

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

在下图中,我构建了一个简单的转换,它应该可以完成您想要的操作:

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

enter image description here

关于javascript - Pentaho水壶: Compare two inputs with a loop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58609037/

相关文章:

javascript - 提交表单时同步确认灯箱

c# - SSIS脚本组件输入

hadoop - ETL关联HADOOP数据库Hbase?

sql-server - 在没有 SQL Server Integration Services 的情况下运行 SSIS 包

pentaho - Mondrian/Saiku - 闭包表 - 空指针异常

postgresql - Redshift 插入瓶颈

javascript - 有没有办法通过浏览器向客户端发送TCP请求?

javascript - 使用 ControllerAs 语法的 Firebase 3 向数据绑定(bind)

javascript - 是否有访问 JSON.parse XMLHTTPRequest.responseText 的通用方法?

java - 将 pentaho di 与 Web 应用程序集成