はじめに
以前にTalendを使用して実装を行う機会があったのを思い出したので、どういったことをやっていたのか振り返りを兼ねて書いてみる。
ただし、ずいぶん時間がたっているので、メモ書き程度の内容になる。
Talendとは
・ETLツール:Extract/Transform/Load(略称:ETL)の工程を行う。
・Extract - 外部の情報源からデータを抽出
・Transform - 抽出したデータを必要に応じて変換・加工
・Load - 最終ターゲットに変換
【参考】
http://www.adempiere.com/A_Step_by_Step_Guide_to_Data_Migration_with_Talend_ETL
https://ja.wikipedia.org/wiki/Extract/Transform/Load
実装内容を思い出してみる
何があったか
・talend ファイルで管理実装をしていく。
・Palette と呼ばれるエリアに、DBアクセス、ファイルアクセスや変換など目的毎にコンポーネントが準備されている。
・コンポーネントのアイコンを配置し、処理フローをつなぐことで実装ができる。またGUIベースで作成した処理フローはTalend内部でJavaのコードが自動生成される。
・コンポーネントの連結やプロパティで設定しきれない箇所については、独自にJavaのコードを実装する場合もある。
実装の流れ
・データベース接続を初期化する。
・必要なデータを取得する。
・変換処理(tMap)で項目の紐づけや変換を行う。
・コンポーネント毎の実行結果により、次のステップへの遷移やエラー処理等を行う。
気になった点
・talend の1ファイル内に複数の処理が管理されている場合、複数人で実装を行うとソース管理の手順が煩雑になった記憶がある。
・編集するファイルを手を加える担当者を把握しきれていないプロジェクトで、各チームが何の変更を入れているのか不明になっていた。(プロジェクト内での管理の問題、、スケジュールに追われてその問題まで対応できるリソースが無かったように思われる。。)
・データの取得元(DB等)が多方面にわたる場合、テストのデータ準備等が大変なことになる。(担当したときは、2カ月間の短期実装で、周辺システムの情報が不足している状況で十分な試験を行うことができなかった。
・多様なシステムとのデータ連携が容易であり、1つのフロー(ジョブ)に役割が多方面へのシステムへの連携が発生し、仕様の把握を難しくすることが多いように思われる。