
こんにちは。アプリケーションサービス本部の山田です。
今回は、私が普段開発で使用しているETLツールについてご紹介します。
ETLツールとは
ETLとは、企業の基幹系システムなどに蓄積されたデータを抽出(Extract)し、加工(Transform)して、対象となる
データベースに書き出す(Load)こと、また、これら一連の処理を支援するソフトウェアのことを指します。
ETLツールには、GUIを使ってデータの流れをビジュアル的に構築するツールや、データ形式の変換機能等が搭載されており、
私はお客様先にて日立の「DataStage」という製品を使ってETL開発を行っています。


こんなことに活用できる
①データ連携のシンプル化(疎結合化の促進)
- ETLはデータ連携基盤のツールとして活用できます。
- 下の(図A)のようにサーバーごとにそれぞれが通信をしていると、それぞれのデータのやりとりが 非常にわかりにくいですが、(図B)のようにデータ連携基盤にデータ連携を集約することで、 データ連携を一元管理できるようになり、シンプルなアーキテクチャになります。
- また、(図B)のようにデータのやりとりをデータ連携基盤に集約することで、障害対応や改修開発の影響度合い調査などの負荷を減らすことができます。
- データの連携と更新処理をアプリケーションから切り離すことにより、 それぞれのサーバー同士が通信して煩雑になっているスパゲッティ状態を脱して疎結合なシステム構造を実現することができます。
②開発生産性の向上
- ETLはGUIを使っての開発のため、一定のプログラミング知識・オープン系開発知識があれば容易に開発が可能です。
- 処理をフローとして視覚的に把握できるので処理内容の理解がしやすいです。

ETLツールの特徴
①開発が容易
- 基本は処理に合わせたアイコン(ステージと呼びます)を並べて、フローを作成。内部で細かい処理を作ります。
- DataStageの場合、内部はC言語で動いていますが、意識せずに開発をすることができます。
- そのため、一定のプログラミング知識・オープン系開発知識があれば簡単に開発することができます。
※私自身はそれまでCOBOLしか開発していなかった、かつお客様先において初めて導入・開発するシステムだったため、
スキル習得に苦労しましたが、オープン系開発経験者の方はスムーズに開発スキルを身に着けていました。
②GUIにより、処理の流れを視覚的に捉えることができる
- ソートやマッチングの処理ごとにアイコンを並べてフローを作るので、処理の流れが通常のプログラムよりもわかりやすいです。
- そのため、作ったプログラムを読み解くときも理解しやすいです。
ETLツールの得意不得意
※他製品を使用したことがないため、ここでは私が使用しているDataStageの特徴を記載します。
①得意とする機能(例)
- 振分
- マッチング(n:1や差分抽出)
- 文字コード変換
- csv・tsv・固定長変換
⇒特定項目のIDで振り分ける、マッチングする、固定長ファイルをCSVにする、等のちょっとした加工変換は
通常のプログラミング言語での開発よりもスピーディーに開発できます。
また、INPUT・OUTPUTのアイコンでそれぞれ文字コードを選択するだけで、文字コード変換が可能です。
②不得意な機能(例)
- 配列
- マルチフォーマットデータを扱う処理
- ファイル構成チェック(ヘッダー・データ・トレーラーの整合性チェック等)
⇒ファイルごとに定義を決めて編集するため、同一ファイル内でレコードによってフォーマットが異なるものは
あまり得意でないです。また、1項目ごとに定義するためテーブルが含まれるファイルは配列の数が多ければ
多いほど開発・テストの手間が増加します。
開発イメージ
(例)固定長ファイルを特定条件でデータ抽出し、その後マスタデータとマッチングしてCSV出力する。

①INPUTファイルのアイコン
⇒アイコンをクリックして文字コード、レコード形式などを選択します。
②レコード抽出用のアイコン
⇒IF文のような条件を記載して特定条件でレコードを抽出。
③マスタファイルのアイコン
④マッチングのアイコン
⇒詳細は下画像を参照。
⑤固定長から可変長に加工変換
⑥OUTPUTファイルのアイコン

開発してみて…。
◎よかったこと
- COBOLしか開発してこなかったため、全く違う形式の開発スキルを身に着けることができて、よかったです。
- GUIでの開発のため、視覚的にわかりやすく、開発していて楽しいです。
◎苦労したこと
- COBOL開発経験のみでオープン系の開発知識が全くなかった、かつ、お客様先で初めてのETL開発担当であったため周りに有識者がおらず、スキル習得に非常に苦労しました。
- 今後の保守性や開発効率を高めるための標準化ルールを定めることに苦労しました。
- お客様先でETLとはそもそも何か、ということから、どのように活用できるのか等を浸透させることに苦労しました。
まとめ
画面キャプチャで開発イメージをご紹介しましたが、通常の言語開発より処理内容が視覚的に理解しやすいことが
伝わったでしょうか。
勿論、簡単なことばかりではありませんが、視覚的に理解しやすく組めるので、開発自体は非常に楽しいと思います。