Talend 処理された行数を知る NB_LINE

メモ:  Category:oss

あるコンポーネントで処理された行数を取得したい場合、 globalMap.get() を使用することで処理された行数を取得することができます。 例えば、データベースから取得したレコード数が 0 の場合は、Aの処理を行い1以上の場合はBの処理を行うようなジョブを作りたい場合に使用できます。

行数の取得方法を確認するために、「テストデータが生成できる tRowGenerator とちょっと便利なTalendDataGeneratorルーチン」で作成したジョブを修正していきます。

処理された行数の取得

テストデータが生成できる tRowGenerator とちょっと便利なTalendDataGeneratorルーチン」では、100行のデータが生成されるようにしていましたが、行数を確認したいというサンプルとしては面白くないので、生成する行数を次のように修正します。

生成する行数に(int)Mathematical.RND(100)を指定

デフォルトでは「生成する行数」に100と入っているのですが、この100を削除し「Ctrlキー+スペースキー」(入力補完)を押して表示されるリストの中から「random」(Numeric.random(0,100))を選択します。この関数により、0から100までの値がランダムに設定されるようになります。

次に tMsgBox コンポーネントを配置し tRowGenerator によるデータの生成が完了(SubjobOk)したらメッセージボックスを表示するよう繋いでいきます。

tMsgBox の配置

tMsgBox コンポーネントをダブルクリックしメッセージを次のように変更します。

((Integer)globalMap.get("tRowGenerator_1_NB_LINE")) + "行処理されました。"
メッセージの設定

((Integer)globalMap.get(“tRowGenerator_1_NB_LINE”))の部分は、「Ctrlキー+スペースキー」で表示されるリストから選択することができます。

処理された行数に関しては、「コンポーネント名 + NB_LINE」というキーで保持されるためglobalMap.getを使用して取得することができます。

作成したジョブを実行すると次のようなメッセージボックスが表示され、行数が取得できることを確認することができます。

ジョブを実行して tMsgBox コンポーネントで行数を表示

bluenote by BBB