2016-08-02 113 views
1

我試圖在電子表格的標題中保存一個值,以便以後用作新的列值。Talend:保存變量供以後使用

這與值(XYZ)在報頭中的縮減版本:

original report

在報頭中的值必須被用於新的列代碼: enter image description here

這是我的設計:

enter image description here

tFilterRow_1我用於拒絕A,B,C列中沒有值的行。 有在tJavaRow_1條件設置全局變量:

if(String.valueOf(row1.col_a).equals("CODE:")){ 
    globalMap.putIfAbsent("code", row1.col_b); 
} 

在tMap_1瓦爾表達,以獲得全局變量是:

(String)globalMap.get("code") 

的VAR「代碼」被映射到列「代碼「但我得到這個輸出:

a1|b1|c1| 
a2|b2|c2| 
a3|b3|c3| 

什麼是錯過或有更好的方法來完成這個情景? 在此先感謝。

回答

1

簡短回答: 我tJavaRow使用input_row或實際rowN在這種情況下row4。

更長的答案,我該怎麼做。

我會做的就是讓Excel以AS-IS流動。通過使用一些Java技巧,我們可以簡單地跳過前幾行,然後讓其餘的流程通過。 所以filter + tjavarow組合可以用tJavaFlex替換。

tJavaFlex我會怎麼做:

開始:

boolean contentFound = false; 

主要

if(input_row.col1 != null && input_row.col1.equalsIgnoreCase("Code:")) { 
    globalMap.put("code",input_row.col2); 
} 
if(input_row.col1 != null && input_row.col1.equalsIgnoreCase("Column A:")) { 
    contentFound = true; 
} else { 
    if(false == contentFound) continue; 
} 

這樣你就直接跳過前幾個記錄(即頭)只在乎實際的數據。

+0

我發現我的(愚蠢的)錯誤,列在原始的xlsx文件中合併,然後tFilterRow的條件引用了錯誤的列。我只是測試你的方法和完美的作品,謝謝! – Leonardo

相關問題