2017-03-10 7 views
0

与えられたフィールドに応じて、行のフローを分割する必要があります。私の行にフィールド1、フィールド2、フィールド3の3つのフィールドがあるとします。フィールド1の各値に対して送信する必要があります。特定のパスの最初のフィールドと別のパスのその他のフィールドに遭遇します。最初の行をある方向にリダイレクトし、2番目の行を別の方向にリダイレクト

どうすれば解決できますか? tFilterRowを使用して最初の行を保持し、その出力をtMapに入力してリダイレクトする必要がありますか?

答えて

1

tMapは1です。ブール値のコンテキスト値をfalseに初期化して最初の行を検出した後、このブール値で出力をマップします。最初の出力では、ブール値をtrueに変更します。

編集:値のメモリ。ジョブのオブジェクト型コンテキスト値を宣言します(field1Values)。

[tJava]
|
| onSubjobOk
|
[あなたの反復成分] - [TMAP] - OUTPUT1 - [tJavaRow]

tJava

context.field1Values =新規HashMapの()において、 OUTPUT1

(!((HashMapの)context.field1Values).containsKey(currentRow.filed1))用のTMAPフィルタで

。 OUTPUT2用TMAPフィルタで

(表示されない)

((HashMapの)context.field1Values).containsKey(currentRow.filed1)。あなたのtJavaRow

((HashMapの)context.field1Values).put(input_row.field1、真)で

+0

フィールド1の個別の値ごとにこれを行う必要があります。より詳細な例を教えてください。 – Edmondo1984

+0

ハム、申し訳ありません私はすべてを理解していませんでした(私は悪い英語があります)。 純粋なJavaの答えです。あなたのコンテキストでHashMapを初期化し、次にcontainsKeyで再生し、初めて値を検出するようにします。 – Guymage

+0

iterationComponentは何ですか? – Edmondo1984

関連する問題