2013-10-08 155 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變換時的可變錯誤。 –