[Talend]tFlowToIterateを利用してFlowをIterateに変換する

今回はTalendのコンポーネント「tFlowToIterate」を利用したFlowのIterateへの変換を紹介したいと思います。
2019.01.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

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

今回はTalendのコンポーネント「tFlowToIterate」を利用したFlowのIterateへの変換を紹介したいと思います。

前提条件

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

tFlowToIterateについて

「tFlowToIterate」を利用するとFlowをIterateへ変換することができます。

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

tFlowToIterate

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

ジョブの説明

ジョブとしては「tFixedFlowInput」でサンプルレコードを生成し、「tFlowToIterate」でFlowをIterateへ変換して「tJava」で標準出力に反復して結果を出力しています。

「tFixedFlowInput」コンポーネントの設定

「tFixedFlowInput」は以下のように設定しました。サンプルレコードとしてYearNameの2カラムを持つ3レコードを用意しています。

「tFlowToIterate」コンポーネントの設定

「tFlowToIterate」は実は設定することはほぼありません。以下のようにデフォルトでは「グローバル変数にデフォルト(キー、値)を使用」が有効になっているのでそのまま利用します。

なお、デフォルトを利用したくない場合には、無効にして以下のようにカスタマイズすることも可能です。

「tJava」コンポーネントの設定

「tJava」コンポーネントでは、以下のようにtFlowToIterate.XXXXXを指定してIterateに変換されたカラムを標準出力に表示させます。以下のようにデフォルトの場合にはrowの名前とカラム名をドットで区切ったものがキーとなります。

System.out.println("Year: " + ((Integer)globalMap.get("row1.Year")));
System.out.println("Name: " + ((String)globalMap.get("row1.Name")));

なお、コードは以下のようにtFlowなどと入力してCtrl+Spaceを入力するとダイアログが表示されるのでtFlowToIterate.Yearなどを選択すると自動入力されます。

実行結果

設定は以上です。実際にこのジョブを実行すると以下のように出力されます。

[statistics] connecting to socket on port 4034
[statistics] connected
Year: 2016
Name: Ex-Aid
Year: 2017
Name: Build
Year: 2018
Name: ZI-O
[statistics] disconnected

サンプルレコードが反復して出力されていますね。

まとめ

以上、「tFlowToIterate」コンポーネントの紹介でした。

各レコードの情報を利用して反復処理をさせたいということは割とあると思いますので、よく利用するコンポーネントだと思います。

それでは。