みなさん、こんにちは!
キャスレーコンサルティング、LS(リーディング・サービス)部の若林です。

はじめに

今回は、「ETL」と「ETLツール」について、ご紹介いたします。
また、ETLツール「talend」を使用して、「DB to FILE」の処理を作成してみようと思います。
本ブログの目的としては、この記事を読んでくださった方に「ETLとは何か?」をある程度ご理解していただくことです。

今回紹介しようと思った経緯としては、若手の人で「ETLが何か知らない」という人が多かったことと、
私自身データ分析に興味があり、自身の勉強も兼ねて紹介しようと決めました。

目次

・ETLとは
・データ分析の価値や、今後の予想について
・ETLツールで「DB to FILE」処理を作成
・おわりに

ETLとは

ETLの意味

ETLとは、抽出(Extract)・変換(Transform)・書き出し(Load)の3要素のことです。
「必要とするデータを抽出して、分析用に加工後、ファイルやDBに情報を書き込む」という
一連の処理をイメージ してください。

具体的な機能・使用用途

ETLによって、分析対象とする情報(Data source)を、DWH(データウェアハウス)にまとめます。

また、ETLというプロセスを通ることにより、洗礼された分析用データを取得し、
そこから、企業が必要とする情報を取得して、生産性の向上などに活かすことができます。
他にもデータの傾向から、市場の今後の流れを予想することもでき、
分析データは、ビジネスに大きく役立てることができます。

ETLの全体の処理の流れや、ETLツールで簡略化できる部分については、下記の画像のようなイメージになります。
※細かい処理については、省略しています。
キャプチャ2

ETLツールを使用することによって

上記画像の黄色の部分が、ツールによって簡略化できる処理であり、
工数で考えみると大幅に削減できることが、 予想できると思います。
ツールによって処理の簡略化可能であることは、ある程度イメージできたとは思いますが、
もう少し詳しくツールを使用するメリットについて、ご紹介したいと思います。

データ抽出

ETLツールでは、様々な形式のデータ抽出が可能です。
また、処理もGUIで、簡単に組むことができます。

例えば、ETLツールを使用しない場合、データ取得は全てSQLで行う必要があり、
どの処理を作成するにも専門的な知識が必要になります。

しかし、ETLツールを使用することで、多少DB知識は必要なものの、複雑なSQLを組むことなく、 処理が作成できます。
また、他にも便利な理由として「分析したい管理システムが、XMLやCSVファイル形式のみ対応している」など、
ファイル形式が固定されている場合でも、SQL Loader などを使用せずに、
指定したファイル形式からデータが取得できます。

データ加工

分析用データは、取得するデータごとにそれぞれ加工が必要となります。
また、分析するデータのイメージとして、
最初は「ただ分析対象のデータをテーブルに集める」と、イメージされる人も多いと思います。(※私もその一人でした。)

しかし、実際には分析用にデータを加工した上で、専用のテーブルに挿入します。
例えば、考えられる処理としては、取得したデータ内容によって、加工内容を変更したい場合「分岐処理」があります。
他にも出力ファイル名に、実行時の日付情報を自動で付与したい場合や、
データに対してシーケンス番号を自動で、付与したいなども考えられます。

このような処理を、ツールを使って簡単に作成できます。
加工処理についても、各ツールに対応していないオプションなど、
特殊なロジックでない限りは、 簡単に作成することが できます。

書き込み

加工後のデータを、テーブルやファイルに書き込みます。
ETLツールでは、管理したいシステム定義に合うように、設定変更ができます。
・取り込み先DBの種類「Oracle, MySQL, PostgreSQL … etc」
・出力ファイルの種類 「csv, text …etc」

ETLツールはかなり便利ですが…

ツールとしては、とても便利で機能も豊富ですが、
実際の現場では「全てのデータ移行処理をETLツールだけで作成する」 というのは、困難であり少ないと思います。

ETLツールにも得意不得意があり、全部が全部可能というわけではありません。
処理内容によって、「どのように処理を作成するのが適切であるか」を見極める必要があります。

また、不得意な部分ではJavaプログラムやPL/SQLなどを組み合わせることで、
ETLツールで作成するよりも処理を簡潔に 作成することができて、工数が減らせる場合もあります。
作成する各処理に対して、何が適切であるかを見極めたうえで、 設計する必要があります。

データ分析の価値や、今後の予想について

データ分析の仕組み構築の容易化

最近では、IoTなどのハードウェアが小型化・高性能化・安価になったため、
以前より容易にデータ分析が可能になりました。

また、データ分析は今後大きく発展すると予想されている、「AI」にも有効であると考えられます。
どのように有効であるかというと、AIで使用されるディープランニングは、データ量が多ければ多いほど賢くなるからです。

このように、AIにとってもデータ分析は重要な要素であると考えられます。
次はデータ分析で、関連する「ビッグデータ」と「クラウド」についても考えてみたいと思います。

ビッグデータ

現在は、幅広い範囲のデータを対象にして、分析することが可能になりました。
分析できる範囲が広くなったことで、今までにない価値のある情報に、気がつくことができるようになりました。

また、他にもデータから将来の予測が可能であったり、データからその企業が改善すべきポイントが発見できるなど、
活用方法は多くあります。
企業が必要とする分析データは、世に出回っている情報より、多くの価値があると考えられます。

クラウドとの関係性について

ETLもオンプレミスとクラウドの接続が可能など、様々システムと連携できます。

また、ETLは仕組みの構築がとても大変ですが、
「AWS Glue」では、手間のかかる ETL ジョブの構築、管理、実行が、 ほとんどなくデータ分析が可能です。
※「AWS Glue」については、以前ブログでご紹介しています。
こちら⇒AWS Glueを使って簡単にETL

このように、データ分析の仕組み構築がクラウド上でも可能です。

ETLツールで「DB to FILE」処理を作成

使用環境の情報

本ブログでは、環境構築についての手順は割愛させいただきます。
今回使用した環境情報については、下記になります。
ETLツール「talend」ですが、最新のJDKやDBのバージョンでは繋がりませんでした。
インストール前に対応している、 バージョン情報を確認する必要があります。

OS : Windows10 ETLツール 「talend」:Ver 7.0.1 JDK : Ver 8 MySQL : Ver 5.5.60

今回は、簡単でシンプルな「DB to FILE」の処理を、ご紹介したいと思います。
処理内容は、テーブルからデータを読み込み、読み込んだデータをCSVファイルに出力します。
最初に、ジョブを新規作成します。
次に、「メタデータ → DB接続定義」を開きます。
下記画像のように、DBの接続設定を行います。
今回の例では、MySQLに接続しています。
必要な情報を入力後、テスト接続を行い、接続されていることが確認できれば完了になります。

ここで注意が必要なのは、DBのバージョンがツールに対応しているかを、必ずチェックしておく必要があります。
バージョンが対応していないと、DBには繋がりません。

DBtoFile1

作成したDB情報上で、右クリック「スキーマの取得」をクリックします。

DBtoFile2

接続したDBに定義されている、テーブル情報が全て取得されます。今回は、テスト用として2テーブル用意しています。 DBtoFile3

テーブル情報取得後、対象とするテーブルアイコンを選択して、ジョブ画面にドラッグします。
DBtoFile4

次に、出力に必要なアイコンを、追加します。
画面右側の「palette」から、「tMap」と「tFileOutputDelimited」を追加します。
DBtoFile5

接続したいアイコンを右クリックしながら、接続先の処理アイコン上で離すことで、処理の流れを設定できます。
「tMap」アイコンから、「tFileOutputDelimited_1」についても同様に処理を繋ぎます。
接続ができると下記の画像のように、アイコン同士で線が引かれた状態になります。

DBtoFile6

次に、マッピングの設定をします。
「tMap」アイコンを、ダブルクリックします。
出力テーブルに対して、CSVに出力する情報を定義します。
必ずテーブルのカラムに対して、出力先ファイルのデータ型が、一致するように設定する必要があります。
もし一致していない場合は、エラーになるのでご注意ください。

次に、マッピングを 行います。
テーブルのカラムと出力先のカラムを、線で繋ぎます。
これでマッピングの設定は、完了になります。

DBtoFile7

次に、出力先のファイルを設定します。
ファイル出力アイコンを、クリックします。
出力先のパスとファイル名を、設定します。
今回は、CSVファイルを作成するので、拡張子をCSVに設定します。

また、フィールド区切りについてもカンマ「,」に 変更します。

DBtoFile8

今回は、OSがWindowsのため、文字化けを防ぐためにエンコーディング設定が必要になります。
Customの「”windows-31j”」を、設定します。
設定していない場合、windows上では文字化けしてしまいます。

DBtoFile9

これで処理が完成しました。
次に、作成した処理を実行してみます。
実行後、コンソールに「~に終了しました」と出力されたら、処理が完了したことになります。

DBtoFile10

出力先のPathに、指定したファイルが作成されていることを確認します。
中身を確認すると、テーブルデータに対する、カンマ区切りのCSVファイルが出力されていることが確認できました。

DBtoFile11

また、タブ「code」から実際に組まれている、Javaのソースコードも確認できます。
ETLの中では簡単な処理ですが、Javaだけでコーディングした場合、簡単ではないことがわかります。

DBtoFile12

実行ログについては、下記パス上に存在するファイルから確認が可能です。
「~/TOS_DI-20180411_1414-V7.0.1/workspace\/.metadata」
※「talend」のバージョンによって、パスが異なる。 上記パスのフォルダに存在する、
テキストファイル「.log」に実行ログ情報が出力されています。

ツールによる処理の作成については、以上になります。

最後に

今回は、「ETL」と「ETLツール」についてご紹介いたしました。
少しは「ETL」について、ご理解いただけたでしょうか。
以前より、ビッグデータの流行りの勢いは減少していますが、どの企業でもデータ分析は必要であり、
ビジネスを活性化させる ためには有効な手段になるので、今後も導入する企業が増える可能性は、高いと考えられます。

また、今回紹介したツールは無料で使用できる「talend」ですが、ETLツールは他にも多くの種類があります。
私は、DataSpiderを使用したことがありますが、同じETLツールでもまた違った特徴がありました。
ETLツールの導入を検討する場合は、各ツールの特徴を比較した上で、選択するのが良いと思います。

最後までお読みいただき、ありがとうございました。