使用前一跳中的字段作为使用 Pentaho Kettle 的表输入中的参数

问题描述 投票:0回答:1

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

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

SELECT field1, field2, ... 
FROM my_table WHERE patient_id in ( 
    reference_to_the_patient_id_field_from_the_row_filter
)

我一直在尝试使用变量,但它们似乎只是环境,而不是上下文。另外,“替换脚本中的变量”选项似乎对我来说没有多大作用。

sql-server parameters pentaho kettle
1个回答
3
投票

表输入是行生成器步骤,而不是中间步骤。如果您将使用选项“从步骤插入数据”,它将用值替换实际的问号,并将构建的查询发送到数据库。其性能确实很高并且容易出错(上一步的值是 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步骤,因为只有一张表用于提取数据。性能良好,并提供缓存机制。

© www.soinside.com 2019 - 2024. All rights reserved.