Pentaho DI - 如何在下一步中使用 "all" 先前步骤的结果作为 "IN" 查询

Pentaho DI - How to use "all" results from prior step in the next step as an "IN" query

我有来自数据库 A 中的 tableA 的输入,我想加入数据库 B 中的另一个 tableB。

这是我的两个选择:

  1. 使用数据库连接:对于数据库 A 中 table 的每个输入,运行 在数据库 B 中加入查询。
  2. 使用两个输入 tables (talbeA + tableB) 并在键上进行合并连接。

我选择了选项 #1,因为我想避免完整阅读 tableA 和 tableB。

我的问题是: 如何将上一步的所有结果用作一个 "IN" 查询?

例如

select *
from tableB b
where b.id IN (all_rows_from_prior_step)

与(每个输入行 运行s)

select *
from tableB b
where b.id = ?

使用 'Group by' 将行合并为一个字段 'all_rows_from_prior_step' 以逗号分隔的 ID(组字段:空,名称:all_rows_from_prior_step,主题:id,类型: 'Concatenate strings separated by ,')。接下来,使用 'User Defined Java Expression' 构建 sql 查询:

"select * from tableB b where b.id IN (" + all_rows_from_prior_step + ")"

最后,使用 'Dynamic SQL row' 到 运行 查询。模板 sql 可以是

select * from tableB b where 1=0