2017-04-27 57 views
0

我需要從修改Java腳本值傳遞變量,並傳遞給表輸入查詢Pentaho的傳遞變量從修改Java腳本值表輸入

這是我 enter image description here

如果我點擊預覽輸出

initator_reference | a | '' | 
1     | a | null | 
2     | a | null | 
3     | a | null | 
4     | a | null | 

它不應該是零,但對第三場 「測試」字符串,不要問我爲什麼我把在選擇變量,它只是爲了測試我把之前in「where condition = variable」

回答

1

表輸入支持兩種不同的動態SQL方法:變量替換和從傳入流中插入數據。

變量替換

這是你目前已在表輸入配置:你把$ {}變量的地方,並在步驟初始化,該值作爲文本進行粘貼到SQL。

由於所有步驟在轉換中同時初始化,因此您的Javascript步驟沒有時間設置值。在PDI中,無法在同一轉換中設置和使用變量。從步驟

插入數據的第二種方法是用於通過選擇在表輸入「插入數據從步驟」選項的源極步驟。在這種模式下,表格輸入從選定的步驟中取一行,並將字段(按順序)插入插入問號(?)的SQL中。通常它需要一行,但您可以選擇執行每行。

這種方式應該爲您的方案工作:

  1. 將一個生成行的開始步驟,並將其設置產生1行。
  2. 連接到Javascript步驟。
  3. 在Javascript步驟中,將返回變量指定爲底部網格中的輸出字段,它將被添加到流中。
  4. 在表輸入,選擇在「從步驟插入數據」
  5. 在SQL的JavaScript的步驟,插入?在變量的位置。如果值是字符串,則可能需要單引號:WHERE column ='?'。
  6. 預覽轉換以查看結果,表輸入的預覽由於依賴關係而被禁用。

注:

  • 步驟1和可能不需要如圖2所示,我不知道,如果JS步驟由自身產生的行。我喜歡明確這一點,通常將生成行命名爲「生成1行」。
  • 如果你有一個現有的流或多個字段中插入,您可以使用選擇值步驟把字段需要將它們插入SQL命令。
+0

已經有點不同做你的一步,但其對錶輸入 錯誤,請參閱圖(第二張圖片) –

+0

@AlexanderChandra我的回答部分:在你的第二張照片,我看到周圍的沒有引號?在你的表格中輸入。您可能會收到錯誤「未知列......」。嘗試單引號。 – Cyrus

0

嗯,我找到了解決辦法自己 的第一步是修改Java腳本值 - >設置變量 然後拿到可變>表輸入(檢查替換腳本變量),你只需要放置「?」你的查詢(這個「?」字符串爲您的變量,我不知道是否有任何其他方式來調用變量) enter image description here

和提醒的JavaScript上的Pentaho是真正的JavaScript enter image description here

+0

也許他們已經改變了一些在以後的版本中,BU從我的經驗來看,這不應該工作。據我所知,如果沒有輸入,JS步驟根本就不應該被處理。並且獲取變量步驟應該與JS和Set Variables步驟並行處理。你確定,這個價值是JS步驟中設定的價值嗎?它不僅僅是一個默認值,在Get Variables步驟或ktr屬性中設置? JS的價值是在Spoon重新啓動後第一次運行ktr時獲得的? – user4637357

+0

以及我剛剛發現的問題,我第一次運行預覽它顯示今天日期 - 10(我的javascript),那麼我我的JavaScript更改到今天-8和其仍顯示今天-10。你有解決方案嗎? –

+0

的方法,通過@Cyrus建議應該工作。基本上,你需要把一個單行輸入JS步驟(可以使用檢測空流一步吧:它不會產生列,所以你不會需要將其刪除),然後把你的表輸入,而不是您所設定的變量步驟並替換'從步驟輸入數據'指向JS步驟。最後刪除Set/Get變量步驟。它應該工作。 – user4637357