今さら聞けない「ETL」ってなんのこと?

今さら聞けない「ETL」ってなんのこと?

ETLとは?

近年では、企業が保有する蓄積されたデータの量は膨大な量となっています。サービスが多様化し、ビジネスが複雑化する環境において、企業は保有しているデータをうまく活用してビジネスを成功させることが求められています。このことをデータドリブン経営などと呼びます。

そういった状況の中、これまで保有してきた大量のデータ(ビックデータ)をいざ活用しようと考えた時、それは意外と簡単なことではありません。企業がデータビジネスに活用するためには以下の4つの一連のプロセスが重要になります。

  1. 顧客から必要なデータを収集する
  2. 収集した様々な形式のデータを分析可能となるように加工する
  3. 加工して分析可能となったデータを実際に分析する
  4. 分析結果を視覚的に分かりやすく表示する

データを活用する際、まずは1.のデータの収集において、例えばWEBサイトを訪問してくれたユーザーの、「名前」「住所」「年齢」「性別」などのパーソナルデータを集めることがよくあるケースになります。収集するデータの量が少量のうちはそれほど大きな問題は起こりません。しかし、この収集するデータが膨大になると以下のような問題が発生します。

  • どのデータをどのように活用すれば良いのか
  • どのシステムでどのようなデータを収集しているのか
  • 複数システムから収集したデータには互換性があるのか、関連づけられるのか

これらの問題を解決するため、収集したデータを実際に分析可能な状態にするためには、2.一手間加える必要が発生します。この一手間加えることをETLと呼びます。

ETLは、「Extract:抽出」「Transform:変換」「Load:書き込み」の略語であり、さまざまデータベースやシステムからデータを抽出し、扱いやすいフォーマットに変換して、分析可能となるように書き出す一連のプロセスのこと指します。

ETLを構成する3つのプロセス

ETLの概要が掴めたところで、それぞれどのような処理が必要なのか詳しく解説していきます。

抽出「Extract」

データの抽出の際には以下のことを検討する必要があります。

どのデータを抽出するのか

収集したデータが保存されているデータベースからデータの抽出を行います。抽出したデータを利用する人やどのような目的でデータを分析するかによって抽出するデータの種類は変わってきますので、あらかじめ検討しておく必要があります。

例えば小売業界の場合、各店舗の現場社員が次の日の発注数を予測するためにデータを抽出する場合、前日の売上品数や前年の売上品数、天気予報など重要なデータになるかもしれません。

一方で上層部が経営判断をするためにデータを抽出する場合、そのような細かいデータよりも、年の売上高や毎年の推移、売残り率などが重要になってくるかもしれません。

いつ・どのシステムから抽出するのか

データの一次保管先は、顧客が実際に触るWEBサイトなどのフロントシステムになります。これらは一般的には利用者の使い勝手やパフォーマンスを重視して作られるため、必要なデータが1箇所にまとまっていないケースがほとんどです。

また、分析用にデータを抽出する場合、処理の種類によっては抽出している間に各システムのパフォーマンスに影響を与えます。

そのため、どのようなタイミングで、どのシステムから持ってくるかは十分に検討する必要があります。

変換「Transform」

データを抽出した後は、分析しやすいようにデータの変換を行います。変換といっても一つ一つは大袈裟なものではありません。よくある例としては「0埋め処理」、「型変換」、「重複排除」、「外れ値の除去」などがあります。個人レベルでもExcelを操作して、データを計算したりグラフにする際には上記のような操作をすると思います。

上記を正しく行わない場合、最終的に分析ができなかったり、一番悪い場合には間違った分析結果が出てしまう場合もあるため非常に重要なプロセスになります。一方で、データを抽出した際にすでに必要なデータ形式になっている場合は、このプロセスを省略可能です。

非常に地味な作業ですが、抽出するデータが大量にある場合、変換に膨大な時間がかかる場合もあります。そのため、あらかじめ収集するデータの規格などを統一して、なるべくこのプロセスは簡単な処理で完了するように設計することが望ましいです。

書き込み「Load 」

変換のプロセスを経たデータを書き出します。変換「Transform」処理を終えているため、書き出すデータは分析に活用できる状態になっていることになります。この書き出し先をDWH(Data Ware House:データウェアハウス)と呼びます。通常の(Relational Database:リレーショナルデータベース)と同様にデータベースではあることは同じなのですが、リアルタイム性よりもより、集計や分析処理が得意な製品を利用することが多いです。

書き込みの処理は、DWHやETLツールが得意とする「データの一括インポート処理」を利用することが望ましいです。RDBが得意とする「行追加命令」よりも、一度に大量のデータを高速で取り込むことが可能です。

ETLツールについて

ETLはデータ分析にとって必須な処理である反面、実装する場合に非常に手間がかかる場合が多いです。その場合はETL処理に特化したツールを利用することが好ましいです。

昨今のシステムアーキテクチャのメガトレンドとしてクラウドの積極的な活用が挙げられます。そのため、ETLツールとクラウドとの互換性は非常に重要です。そのため、ETLツールはあらゆるクラウドプロバイダーで十分に機能することが求められます。特に3大メガクラウドプロバイダー間(AWS、Azure、GCP)で容易に利用できることが重要になります。

更に、プロバイダーの変更に応じて簡単に移行できることが必要となります。クラウドプラットフォームを変更したからといって、ETL処理を全て書き換えるのは望ましいことではありません。ETL処理が柔軟に設計されていれば、クラウドプラットフォーム、ストレージ、データベースなどの変更の自由度が増します。

ETLツールは、上記のプロセスを大幅に簡略化する可能性があります。ETLツールを選定する際、特に考慮すべき機能は以下です。

  • 接続容易性:長期的な視点では、ETLツールは、多数のシステムを接続するHUBとなる存在になります。世界中で多くのシステム(SaaSやIaaS)が提供される中、これらを簡単に接続できることがETLツールに求められる最も重要な要件になります。そのため、各システムとの接続を容易にするコネクターがどの程度準備されているかが重要な要素になります。ETLツールに組み込まれているコネクターが多ければ多いほど、開発時間の節約につながります。
  • 開発容易性:ETLツールは、GUIインターフェイスにより習得しやすく使いやすいものであり、ETLの処理状況をより簡単に視覚化できる必要があります。
  • 移植容易性:複数のクラウドプラットフォームを活用するハイブリッドクラウドアーキテクチャの実現、ベンダーロックインを回避するため、ETLを一度構築してどこでも実行できることは非常に重要になります。ETLツールは、単一のクラウドでも、マルチクラウドでも、ハイブリッドクラウド環境でも、柔軟に動作する必要があります。また、多くの場合、オープンソースのアーキテクチャーは、ベンダーロックインを回避しながら柔軟性を提供します。
  • 価格:ETLツールプロバイダーのコストは、コネクターやデータボリュームの増加に応じて増加しない価格モデルであることが望ましいです。

ETLツール利用のメリット

以下ではETLツールを導入するメリットについて解説します。

メリット1:開発工数の削減

基幹システムなどに点在したデータをETL処理してDWHへ統合させるには、それを実行するシステムが必要です。そのようなシステムを構築するには、高度なプログラミング知識が必要です。さらに、統合するデータベースの種類が多くなればなるほど、指数関数的に開発工数が増加します。

ETLツールは各システムの接続に必要なコネクタを提供しており、それを活用することで容易に開発可能です。また、直感的な操作でシステムを開発できるため、1からプログラミングをする必要はなく開発工数を削減できます。

メリット2:長期的な保守コストの軽減

ETL活用の初期段階においては、新たにETLツールを導入するよりもコーディングした方が低コストで開発できるのではないかと考える場合もあるかと思います。ETLの機能のプログラミングでの実装は面倒ですが、専門性は低く、ほとんどは実装可能です。しかし、ほとんどの場合、ETLプロセス用ツールを使用する方が長期的にはスケーラブルで安価です。

ETLの機能のプログラミングでの実装は、管理、サポート、再利用が複雑になります。ETLツールの場合は、データフローが視覚的に示され、理解しやすくなります。そのため長期的に見て保守コストの軽減につながります。

メリット3:データ品質の向上

ETLツールはデータ抽出や変換・加工、書き出しに必要な機能が搭載されおり、その品質が保証されています。これらを1から実装を試みる場合、バグが発生する可能性が高く、動作テストに非常に手間がかかります。

メリット4:豊富な機能

さらに、ETLツールには、並列化、監視、フェイルオーバーなどの高度な機能がすべて自動的に組み込まれています。これらを1から実装を試みる場合、必要な技術をすべて習得した開発者が必要となります。

サーバ・クラウドカテゴリの最新記事