2013-10-08 73 views
1

我正在使用pdi 4.3.0。我遇到了使用命名参数的问题。 我有三个转型。 1.Transformation1Pentaho命名参数错误

select name from master..sysdatabases WHERE NAME LIKE '%C%'; 

2. Transformation2

use ${name} 
select id, date from database1; 

3. 转型3

use ${name} 
select item from db2 where id = ${id} and date = ${date}; 

现在我使用的作业执行这些转变。

总是错误出现在T3 未知列“名”

+2

在Transformation1中,您是否将“name”值传递给了“Set Variables”步骤? –

+0

谢谢@ Brian.D.Myers是的,我使用复制行导致转换1并在第二次和第三次转换中以及job中定义参数。但是也出现错误 –

+1

您正在Transformation1中使用“LIKE”子句。显然,(数据库)名称可能会导致多个值。它是否正确? PDI中的“行结果”与Job变量不同。行结果可以有很多值;作业变量只能有1个。如果有几个数据库正在执行此操作,则需要采取不同的方法。 –

回答

0

我不会用“使用”选择数据库名称。这通常来自连接中的模式。在连接中你可以使用一个变量,如果你在那里做的话,它会起作用吗?事实上,我很惊讶你可以用这种方式进行参数化 - jdbc中的一些内容不是可参数化的!

另外检查T2和T3之间的差异。是否在变换参数选项卡中定义了它,而不是其他变量参数?

或者检查你是如何调用转换的。如果它在一个而不是另一个中起作用,那么肯定会有一些差异,也许你是用一个而不是另一个来传递变量。

+0

谢谢@Codek,“使用”效果很好,如果只有T1和T2。我也使用'$ {name} .dbo.dbname',但也错误。需要转换2数据库 –

+0

好酷 - 至少如果你有它在某些情况下工作,你知道它确实有效。所以你需要弄清楚有什么不同。 – Codek

+0

我觉得错误或东西,因为使用超过2变换时的可变错误。 –