[Talend] 構築済みの tMap から入力コンポーネントを削除する際の注意点

2014.08.22

tMap からの入力コンポーネント削除

複数の入力コンポーネント(tMysqlInput など)を tMap で結合するようなジョブを別のジョブで再利用するというケースはままあるものと思います。そんな時「これから作成するジョブでは〜テーブルの入力コンポーネントは必要無いので削除しよう。」といった場合に問題が発生します。

問題点

スクリーンショット 2014-08-22 11.30.36

このジョブで「item_types」を削除してみます。

スクリーンショット 2014-08-22 11.33.38

一見問題なく削除できているようですがジョブを実行してみると……

スクリーンショット 2014-08-22 11.36.58

コードビューで見てみると……

スクリーンショット 2014-08-22 11.39.08

コンパイルエラーが発生しています!
どうやら tMap へ関連付けた入力コンポーネントを削除しても、関連付けられたという情報は残ってしまうようです。

対応

もしこのようになってしまった場合は、落ち着いて一旦「削除」をアンドゥします。

スクリーンショット 2014-08-22 11.48.02

不要な入力コンポーネントを削除する前に、その入力コンポーネントの「関連」をマップエディタ上で全て削除します。

スクリーンショット 2014-08-22 11.53.11

スクリーンショット 2014-08-22 11.56.48

マップエディタでの変更を反映させ不要入力コンポーネントを削除、ジョブを保存します。

スクリーンショット 2014-08-22 12.00.45

これでジョブが正しくコンパイルされるようになります。

入力コンポーネント削除後の保存

ここでもう一点、入力コンポーネントを削除後に一旦ジョブを保存してからアンドゥした場合……

スクリーンショット 2014-08-22 12.06.28

スクリーンショット 2014-08-22 12.09.09

結合条件の関連線が復元されない挙動にも注意が必要です。

まとめ

今回使用した Talend Open Studio のバージョンは「Version: 5.5.1 Build id: r118616-20140617-1110」となります。
前者のケースでは入力コンポーネントの削除後にジョブ実行かコードビューへの切り替えを行わないと一見エラーが発生しているように見えない為に重症化するおそれがあります。「大丈夫かな?」と思ったらコードビューへ切り替えてコンパイルエラーが発生していないかチェックする癖をつけると良いかもしれませんね。
後者のケースのような可逆ではないアンドゥは他にもあるかもしれません。ジョブの保存タイミングには注意しましょう。