与えられたフィールドに応じて、行のフローを分割する必要があります。私の行にフィールド1、フィールド2、フィールド3の3つのフィールドがあるとします。フィールド1の各値に対して送信する必要があります。特定のパスの最初のフィールドと別のパスのその他のフィールドに遭遇します。最初の行をある方向にリダイレクトし、2番目の行を別の方向にリダイレクト
どうすれば解決できますか? tFilterRowを使用して最初の行を保持し、その出力をtMapに入力してリダイレクトする必要がありますか?
与えられたフィールドに応じて、行のフローを分割する必要があります。私の行にフィールド1、フィールド2、フィールド3の3つのフィールドがあるとします。フィールド1の各値に対して送信する必要があります。特定のパスの最初のフィールドと別のパスのその他のフィールドに遭遇します。最初の行をある方向にリダイレクトし、2番目の行を別の方向にリダイレクト
どうすれば解決できますか? tFilterRowを使用して最初の行を保持し、その出力をtMapに入力してリダイレクトする必要がありますか?
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、真)で
。
フィールド1の個別の値ごとにこれを行う必要があります。より詳細な例を教えてください。 – Edmondo1984
ハム、申し訳ありません私はすべてを理解していませんでした(私は悪い英語があります)。 純粋なJavaの答えです。あなたのコンテキストでHashMapを初期化し、次にcontainsKeyで再生し、初めて値を検出するようにします。 – Guymage
iterationComponentは何ですか? – Edmondo1984