Pentaho DI - 如何使用下一步中先前步骤的“全部”结果作为“IN”查询

时间:2016-07-29 17:24:33

标签: pentaho-spoon pentaho-data-integration

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

这是我的两个选择:

  1. 使用数据库连接:对于数据库A中表的每个输入,运行数据库 在数据库B中加入查询。
  2. 使用两个输入表(talbeA + tableB)并在键上合并连接。
  3. 我选择#1选项,因为我想避免在tableA和tableB中完整地阅读。

    我的问题是: 如何将前一步骤中的所有结果用作“IN”查询?

    例如

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

    与(每个输入行的运行位置)

    select *
    from tableB b
    where b.id = ?
    

1 个答案:

答案 0 :(得分:0)

使用'分组按'用一个字段将行压平成一行' all_rows_from_prior_step'逗号分隔的ID(组字段:空,名称:all_rows_from_prior_step,主题:id,类型:'连接字符串,由'分隔)。接下来,使用用户定义的Java表达式'构建sql查询:

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

最后,使用'动态SQL行'运行查询。模板sql可能是

select * from tableB b where 1=0