Talend Open Studio Data Integration でのエラー処理の基本

Talend Data Integration でのエラー処理の基本

なぜエラー処理を実装する必要があるのか

Talend Open Studio Data Integration で、基本的なエラー処理をどう実装するか解説していきます。どのようなプログラムや処理であれ、全てにおいてエラー処理は実装すべきです。エラー処理のないプログラムはとてもマナーが悪いと言えるでしょう。

例えば Windows でエラーが発生すると必ずエラーメッセージが表示されて何が起きたのかユーザーに知らせてくれます。しかしもしエラー処理がないと、エラーが発生しても何もメッセージが表示されず、突然 Windows が動かなくなってしまうなんてことになってしまいます。エラー処理を実装すれば、エラーが発生しても結果的に問題が何だったのかを知ることができ、今後の問題の解決に役立ちます。エラー処理は必ず実装しましょう。

[関連記事]
Talend Data Integration で処理を迅速かつ効率良く開発する (ETL ツール)
Talend Open Studio for Data Integration (Version 6.4.1) のインストール
Talend Open Studio for Data Integration の拡張機能インストール
Talend Open Studio for Data Integration でのジョブ作成方法Talend Open Studio for Data Integration で Oracle 接続が失敗あるいは遅い
Talend Open Studio Data Integration でのエラー処理の基本
Talend Open Studio Data Integration のジョブで発生したエラー情報をメールで送信する



サンプルアプリケーションを作成する

Talend でのエラー処理の基本を知るために、単純なサンプルアプリケーションを作成します。"test" というジョブを作成し、CSV ファイルを読み込んで画面に表示するというアプリケーションを通してエラー処理について見ていきます。

下の図のように tFileInputDelimited というコンポーネント(部品)を使って CSV ファイルを読み込んで、その内容を tLogRow を使って画面に表示するという動作を実装します。

tFileInputDelimited コンポーネントの設定は次の通りで、 "C:/Talend/testdata/test.csv" という CSV ファイルを読み込むようにしています。

"C:/Talend/testdata/test.csv" ファイルの内容は次の通りです。
abc,def,ghi
123,456,789

tFileInputDelimited コンポーネントが読み込むファイルの定義を行うために、"Edit schema" というボタンの隣の "・・・" というボタンを押して、下図のように3つの列を追加して OK ボタンを押します。

では早速アプリケーションを実行してみましょう。tFileInputDelimited コンポーネントが2行のデータを読み込み、画面下部の表示領域にファイルの内容が出力されていますので問題なく処理が実行できることを確認します。

tFileInputDelimited コンポーネントでエラーを発生させてみる

今度はエラーが発生した場合にどのような動作になるのか、tFileInputDelimited コンポーネントで読み込むファイル名を適当なファイル名にしてみます。ここでは "C:/Talend/testdata/test.csv" というファイル名を "C:/Talend/testdata/test.csvv" というファイル名に変更して実行してみます。

すると以下のようにファイルは全く読み込まれず、画面下部のメッセージ欄には「C:\Talend\testdata\test.csvv (指定されたファイルが見つかりません。)」というエラーメッセージが表示されています。

この結果から分かることは、ファイルを読み込む際にエラーが発生しても、そのまま tLogRow コンポーネントに0行の結果が送られて tLogRow が呼び出されてしまっています (0 rows という緑色の表示部分)。

また画面にエラーメッセージが表示されているだけですので、エラーが発生していることは分かりますがこのままではメッセージが表示されて処理が終わってしまっています。

これらの問題を解決するために、tFileInputDelimited コンポーネントの設定で "Die on error" というチェックを ON にしてみましょう (下の図の緑枠)。これを ON にすると、何らかのエラーが発生した際に後続の処理を行わずにそのままエラーとする挙動に変わります。


"Die on error" という設定を ON にした状態で、ジョブを実行してみましょう。下の図のように tLogRow コンポーネントは呼び出されず、後続の処理が実行されずにエラーによって処理が終了したことが分かります。また先程より詳細なエラーメッセージが画面に表示されていることが分かります (Java の Exception メッセージが表示されています)。


tLogCatcher コンポーネントでエラーを捕捉する

次にエラーをどうにかして捕捉し、エラーメッセージを捕まえられるようにしてみます。このようなエラーメッセージを捕まえる処理の為に用意されたコンポーネントが tLogCatcher です。

tLogCatcher は捕捉したエラーメッセージを何らかのコンポーネントに出力する必要があるため、ここでは tLogRow を使ってみます。ジョブは次のようになります。

tFileInputDelimited コンポーネントと tLogCatcher コンポーネントがつながっていませんが、これでも問題ないのです。tLogCatcher はジョブで発生したエラー全てを捕捉してくれるからです。



ではこの状態でジョブを実行してみましょう。すると tFileInputDelimited コンポーネントに接続された tLogRow は実行されず、発生したエラーが tLogCatcher で補足されます。そのまま tLogCatcher コンポーネントが実行され、接続された tLogRow が実行されてエラーメッセージが表示されます。

tLogCatcher 経由で出力されたエラーメッセージ (上の図の緑枠で囲まれた部分) には、エラー発生日時やエラーが発生したジョブの名前 (test)、エラーが発生したコンポーネントの名前 (ここでは tFileInputDelimited_1)、Java Exception の内容、エラーメッセージ等が表示されています。

こうして捕捉したエラーの内容は、ファイルに出力したり必要に応じてメールで送ったりすることでエラーが起きたことを知ることが出来ます。

今回は Talend Open Studio Data Integration の基本的なエラー処理について見てきました。次回以降、様々なエラー処理の方法を解説していきます。

Talend Open Studio Data Integration のジョブで発生したエラー情報をメールで送信する