2016-08-02 8 views
1

スプレッドシートのヘッダーに値を保存して、後で新しい列値として使用しようとしています。Talend:後で使用できるように変数を保存

このヘッダの値(XYZ)での縮小版である:

original report

ヘッダの値が新しい列CODEに使用されなければならない:これは私の設計である enter image description here

は:

enter image description here

tFilterRow_1 i A列、B列、C列の値を持たない行を拒否するために使用されます。

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

グローバル変数を取得するtMap_1でVarの式は次のとおりです: は、グローバル変数を設定するtJavaRow_1の条件があります

(String)globalMap.get("code") 

ヴァール「コード」マッピングされている欄に「コード「私はこの出力を取得しています:

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

逃したか、このescenarioを達成するために、より良いアプローチがありますされて何? ありがとうございます。

答えて

1

短い答え: 私は、この場合row4というinput_rowまたは実際のrowNを使用します。

長い答え、どうすればいいですか?

私はAS-ISでExcelの流れをさせています。いくつかの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

関連する問題