使用 Pentaho Kettle 使用前一跃点的字段作为 Table 输入中的参数

Use a field from a previous hop as a parameter in a Table input using Pentaho Kettle

我正在使用 Pentaho Kettle 来重新创建数据混合过程,以将各种数据源放在一个数据集中。

有一次我使用行过滤器来检查某些失败是否为空(在本例中为长度和重量)。在过滤器的真实部分之后,我正在使用 Table 输入 (MSSQL) 到 运行 查询并尝试在数据库中查找其他数据。有没有一种方法可以使用行过滤器中的字段(外键 patient_id,在我的例子中)在 Table 输入中使用它来写下像

这样的查询
SELECT field1, field2, ... 
FROM my_table WHERE patient_id in ( 
    reference_to_the_patient_id_field_from_the_row_filter
)

我一直在尝试使用变量,但它们似乎只是环境,而不是上下文。此外,选项 Replace variables in script 似乎对我没什么用。

希望你能帮助我。谢谢你的时间。

Table 输入是行生成器步骤,而不是中间步骤。如果您将使用选项 "Insert data from step",它将用值替换实际的问号,并将构建的查询发送到数据库。哪些性能确实很差而且容易出错(上一步的值是 null 或空字符串,或者它甚至可能包含 sql 注入?)

DatabaseJoin 步骤更适合这种地方。它使用 PreparedStatement,这要快得多。

您可以更改 sql 查询以传递参数

select field1, field2 form my_table join (values(?)) as t(patient_id) on t.patient_id = my_table.patient_id

您可以考虑使用 DatabaseLookup 步骤,因为只有一个 table 用于提取数据。具有良好的性能,并提供缓存机制。