Pentaho 如何在表输入中传递参数?

Pentaho 如何在表输入中传递参数?,pentaho,kettle,pdi,Pentaho,Kettle,Pdi,我有一份工作,有两个转变 转换获取传递给另一个转换的数据列表。在这里,它从第一次转换开始执行每一行传递 在第二次转换中,我使用了 从结果->表格输入中获取行 在get row from result中有五个字段,但在表格输入中,我只能使用第2位和第3位字段 即使我试着给出一个参数?它的给出错误 2017/06/29 15:11:02-从表0中获取数据-在准备好的语句上设置值3[String]时出错 2017/06/29 15:11:02-从表0中获取数据-参数索引超出范围3>参数数量,即2。

我有一份工作,有两个转变

转换获取传递给另一个转换的数据列表。在这里,它从第一次转换开始执行每一行传递

在第二次转换中,我使用了

从结果->表格输入中获取行

在get row from result中有五个字段,但在表格输入中,我只能使用第2位和第3位字段

即使我试着给出一个参数?它的给出错误

2017/06/29 15:11:02-从表0中获取数据-在准备好的语句上设置值3[String]时出错 2017/06/29 15:11:02-从表0中获取数据-参数索引超出范围3>参数数量,即2。

我的问题很简单 从col1=?和col2=


我怎样才能做到这一点?错误我做错了什么吗?

如果有5个字段到达表输入,则需要按正确的顺序向查询传递5个参数。此外,每个参数仅使用一次


因此,如果您有5个字段,并且只使用其中的2个字段,最好的方法是在“从结果获取行”和“表输入”之间设置一个“选择值”步骤,只让实际的查询参数通过。

如果有5个字段到达表输入,则需要按正确的顺序向查询传递5个参数。此外,每个参数仅使用一次


因此,如果您有5个字段,并且只使用其中的2个字段,那么最好的方法是在“从结果获取行”和“表输入”之间设置一个“选择值”步骤,并且只允许实际的查询参数通过。

您还可以为参数命名,这样您的查询就可以

从col1=${param2}和col2=${param3}所在的表中选择*

不要忘记选中脚本中的Replace变量复选框,并根据sql方言调整引号,例如:“${param1}”用于sql Server

注意,param2和param3必须存在于转换的设置/参数中,没有${…}装饰,并且具有不破坏SQL的值

参数的值可以在以前的转换中使用一组变量设置或更改步骤变量和参数在一次近似中是同义的,并且范围至少在父作业中有效


当然,如果您出于遗留目的或任何其他原因坚持使用未命名参数,您有责任告诉PDI第一个参数将被丢弃,例如在哪里?是null还是0=0和col1=?和col2=

您还可以为参数命名,以便查询

从col1=${param2}和col2=${param3}所在的表中选择*

不要忘记选中脚本中的Replace变量复选框,并根据sql方言调整引号,例如:“${param1}”用于sql Server

注意,param2和param3必须存在于转换的设置/参数中,没有${…}装饰,并且具有不破坏SQL的值

参数的值可以在以前的转换中使用一组变量设置或更改步骤变量和参数在一次近似中是同义的,并且范围至少在父作业中有效


当然,如果您出于遗留目的或任何其他原因坚持使用未命名参数,您有责任告诉PDI第一个参数将被丢弃,例如在哪里?是null还是0=0和col1=?和col2=

您的SQl查询是什么?在我看来,这似乎是一个SQL问题。2不在1和1的有效值之间,这是正确的。即使在通过其他问题传递了正确的参数后,它也不正确。我已经更新了我的问题。您的SQl查询是什么?在我看来,这似乎是一个SQL问题。2不在1和1的有效值之间,这是正确的。即使在通过其他问题传递了正确的参数后,它也不正确。我已经更新了我的问题,我不太明白。您的意思是我需要用Get row from result创建一个转换,然后用scope[在父作业中有效]设置变量吗。那么,包含表输入的转换呢?我需要为这个转换设置什么吗?我不太明白。您的意思是我需要用Get row from result创建一个转换,然后用scope[在父作业中有效]设置变量吗。那么,包含表输入的转换呢?我需要为此转换设置任何内容吗?