我正在爲Pentaho Kettle進行轉換步驟。它選擇幾個輸入列,並基於它在轉換過程中添加兩個新列。我無法理解(基於來自其他插件的代碼),我如何添加兩個新列,以便1)下游步驟知道這些列,以及2)我可以將轉換後的數據推送到這些列中。添加兩個額外的列輸入數據 - Pentaho Kettle
在此先感謝。
我正在爲Pentaho Kettle進行轉換步驟。它選擇幾個輸入列,並基於它在轉換過程中添加兩個新列。我無法理解(基於來自其他插件的代碼),我如何添加兩個新列,以便1)下游步驟知道這些列,以及2)我可以將轉換後的數據推送到這些列中。添加兩個額外的列輸入數據 - Pentaho Kettle
在此先感謝。
您可能需要重寫meta.getStepFields()來將新的ValueMetaInterface對象添加到傳入的RowMetaInterface中。這是在運行時添加列的標準方式;但是,該行的元數據(即ValueMetaInterface對象列表)必須在行與行之間相同,否則轉換中的下一步將發生抱怨。
通常在執行數據驅動的自定義插件時,需要使用盡可能多的行(使用getRow())以確定傳出行格式/元數據的內容,然後可以構造RowMetaInterface(通常使用meta.getStepFields())將被傳遞給putRow()調用。如果您打算通過傳入字段,請執行以下操作:
RowMetaInterface outputRowMeta = getInputRowMeta()。clone();
如果您要創建新行使用:
RowMetaInterface outputRowMeta =新RowMeta();
無論哪種方式,當您調用meta.getStepFields(outputRowMeta,...)時,它應該使用相應的字段填充outputRowMeta,方法是從outputRowMeta添加/更改/刪除ValueMetaInterface對象。
我使用Groovy來這裏傳入行添加/替換領域得到了一個博客帖子:
http://funpdi.blogspot.com/2014/10/flatten-json-to-key-value-pairs-in-pdi.html
不知道這類似於你的使用情況或沒有。如果您有更多問題,請隨時在## pentaho的IRC上找到我(我的暱稱通常是mburgess_pdi)
如果我已經正確理解你的問題,我想你正嘗試創建一個帶有動態列的輸出文件。因此,您可以通過在文本文件輸出步驟中檢查「快速轉儲」選項來完成此操作。雖然這樣做,DONOT在「字段」選項卡中定義的任何列名 檢查我下面的圖片:
希望它能幫助:)
您可以編輯您的問題以包含您的轉換的屏幕快照嗎? – 2014-10-30 18:04:08
http://abhi.am/wp-content/uploads/2014/10/tstepkettle11.png – 2014-10-30 18:35:10
我的步驟是我正在處理的自定義插件,我需要從上游收集行,處理它,添加兩列併發送到下游。 – 2014-10-30 18:36:14