[Talend]tLoopを利用して繰り返し処理を実行する

はじめに

こんにちは。DI部の大高です。

今回はTalendのコンポーネント「tLoop」を紹介したいと思います。

前提条件

Talendのバージョンは「Talend Open Studio for Big Data」の「Version 7.0.1」で検証しています。

tLoopについて

「tLoop」を利用すると後続の処理を繰り返して実行することができます。

「tLoop」コンポーネントのTalend Helpページはこちらです。

tLoop

では、具体的に以下で解説していきます。

ジョブの説明

「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」コンポーネントの紹介でした。

同じ処理を何度か繰り返す場合には、このコンポーネントの存在を思い出して頂ければと思います。

それでは。