[Talend]tLoopを利用して繰り返し処理を実行する
はじめに
こんにちは。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」コンポーネントの紹介でした。
同じ処理を何度か繰り返す場合には、このコンポーネントの存在を思い出して頂ければと思います。
それでは。