この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは。DI部の大高です。
今回はTalendのコンポーネント「tLoop」を紹介したいと思います。
前提条件
Talendのバージョンは「Talend Open Studio for Big Data」の「Version 7.0.1」で検証しています。
tLoopについて
「tLoop」を利用すると後続の処理を繰り返して実行することができます。
「tLoop」コンポーネントのTalend Helpページはこちらです。
では、具体的に以下で解説していきます。
ジョブの説明
「tLoop」で繰り返し処理を実行し、「tJava」でループ情報を標準出力に表示します。
サブジョブを2つ作成しており、「tLoop」の「ループタイプ」が上から順に「For」、「While」に設定してあります。
Forループ
まずは、Forループからです。
「tLoop」コンポーネントの設定
コンポーネントの設定は以下としました。
単純なforループと同じく、「FROM」で開始値、「ステップ」で増分値、「終了」で終了値を指定します。Javaのコードで表現すると以下のような感じになります。
for(int i=1;i<=3;i=i+1){
// 繰り返し
}
また「値が増加しつつあります(Values are increasing)」というオプションが分かりづらいのですが、これは「ステップ」の値がプラスの値の場合にはチェックを入れて、マイナスの場合にはチェックを外す必要があるオプションです。
例えば、現在の設定のまま、このオプションをOFF(増加ではない)にするとJavaのコードは以下のような感じになります。
for(int i=1;i>=3;i=i+1){
// 繰り返し
}
また、別の例として、
FROM: 3
終了: 1
ステップ: -1
という設定でオプションがOFF(増加ではない)の場合、Javaのコードは以下のような感じになります。
for(int i=3;i>=1;i=i-1){
// 繰り返し
}
このため、オプションをOFF(増加ではない)にすれば3から1までの繰り返し処理が実行され、ON(増加)にしてしまうと何も処理をせずに終わります。
「tJava」コンポーネントの設定
「tJava」コンポーネントのコードには、以下のようにコードを設定してあります。
int currentValue = ((Integer)globalMap.get("tLoop_1_CURRENT_VALUE"));
System.out.println(currentValue);
「tLoop」コンポーネントで「ループタイプ」を「For」にした場合には「tLoop.CURRENT_VALUE」が参照できます。この値は、「FROM」で設定した値が現在どの値になっているかを表します。
Whileループ
つぎに、Whileループです。
「tLoop」コンポーネントの設定
コンポーネントの設定は以下としました。
whileループの設定ではありますが、記載内容はJavaのforループの設定にイメージが近いです。Javaのコードで表現すると以下のような感じです。
int i=0;
while(i<3){
// 繰り返し
i++;
}
「tJava」コンポーネントの設定
「tJava」コンポーネントのコードには、以下のようにコードを設定してあります。
int currentIteration = ((Integer)globalMap.get("tLoop_2_CURRENT_ITERATION"));
System.out.println(currentIteration);
「tLoop」コンポーネントで「ループタイプ」を「While」にした場合には「tLoop.CURRENT_ITERATION」が参照できます。この値は、現在の繰り返しが何度目かを表す値です。
実行結果
設定は以上です。実際にこのジョブを実行すると以下のように出力されます。
[statistics] connecting to socket on port 3679
[statistics] connected
1
2
3
1
2
3
[statistics] disconnected
それぞれの繰り返し設定のとおりに値が表示されました!
まとめ
以上、「tLoop」コンポーネントの紹介でした。
同じ処理を何度か繰り返す場合には、このコンポーネントの存在を思い出して頂ければと思います。
それでは。