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。
这是我的两个选择:
- 使用数据库连接:对于数据库 A 中 table 的每个输入,运行
在数据库 B 中加入查询。
- 使用两个输入 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
我有来自数据库 A 中的 tableA 的输入,我想加入数据库 B 中的另一个 tableB。
这是我的两个选择:
- 使用数据库连接:对于数据库 A 中 table 的每个输入,运行 在数据库 B 中加入查询。
- 使用两个输入 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