GRANVALLEY
データであなたの「ミチ」をてらす

GRANVALLEY

ブログBlog

自動ETLと手動コーディングをした場合の比較

最初の自動ETLツールが登場して以来、データサイエンス業界では、SQL、Python、その他のプログラミング言語やスクリプト言語による手動コーディングと比較して自動ETLツールを使用するメリットについて議論されてきました。今回は、自動ETLの活用事例とともに、データアナリストやデータサイエンティスト、および開発者がETLツールを使用することによって得られるメリット、およびETL機能を内蔵したBIツールを使用することによるメリットをご紹介します。

ETLとは何か

まずは、ETL(Extract-Transform-Load)の概念について説明します。ETLは、データを準備する際にデータベースから正確な情報を取得することを保証するために非常に重要なプロセスとなります。

ETLは以下の3つの段階で構成されています。

  1. Extract(抽出):さまざまなシステム(ファイル、クラウドやRDBなど)からデータを抽出する
  2. Transform (変換):データが同じ言語に統一されるよう、特定のフィールドやカラムの削除や異なるテーブルの、データが同じ言語に統一されるよう変換する等、データを変換する
  3. Load (書き出し):変換されたデータを再度一元化されたデータリポジトリ、もしくはデータウェアハウスへ書き出しをする

ELTとETLの違いについて

同じようなデータ準備の用語としてELTという用語が使われることがあります。すなわちExtract(抽出)-Load(書き出し)-変換(Transform)です。ETLとの違いは処理を行う順番です。こちらは、データが抽出された後、書き出され、次に変換されます。(補足として、これはSisenseがデータを変換するために使用するプロセスです)ただしこの記事にとってこの違いは重要ではないので、両方ともETLと呼ぶことにします。

前置きはここまでにして、ここから手動コーディングやスクリプト作成の代わりに、自動ETLツールを使用することについての考察をしていきます。

性能と安定性

商用ツールは、大規模なデータセットや異なるデータセットを扱う際に、パフォーマンスや安定性を常に向上させるため、専門のエンジニアチームによって構築されています。必要に応じて、並列処理やSIMD等の計算リソースを使用して、データをコンピュータのメモリやCPUキャッシュのさまざまな層にマッピングする操作など、OSに対しての命令も行います。

技術的には手動のコーディングで同じものを作成することは可能ですが、開発リソースは莫大となります。そして、高性能システムを思いついたとしても、データとユースケースが複雑になったとき、そのシステムが大きな負荷に耐えられる保証はありません。単純なデータや小さいデータを扱う場合は、それほど大きな問題にはなりませんが、そもそも自動ETLツールの一般的な使用例ではありません。

サンプルデータからアジャイル分析へ

かつて数十億行のデータの扱いに苦しんでいる大規模な電子商取引会社と出会いました。その企業は自前で開発したシステムを持っており、それは問題なく動作していました。しかし、結果をより早く見ようとしたとき、サンプルを分析して結果をエクスポートすることによって生データを「縮小」しなければなりませんでした。この方法は実用的でしたが、サンプルデータに頼っていたので、正確ではありませんでした。そこで、マネージドビジネスインテリジェンス及び、ETLソリューションを導入したところ、高いパフォーマンスによって、すべてのデータを取り込んで分析が行えるようになりました。

管理とスケール

自動ETLツールは通常、ETLプロセスの大部分(データ出入り、計算の実行等)を視覚的に把握できるようになっています。それは丁寧に可視化されていて、決して複製されることはありません。
Sisense Elasticube Manager
ソース元:Sisense Elasticube Manager

このような視覚的表現は、ETLとデータモデリングを長期的に管理しやすくします。複雑な構造化データや非構造化データを扱うとき手作業で作成したETLは大概、何行ものコードに変換されます。その方法はその時うまくいったとしても、複雑な連携になったとき、トラブルにつながる可能性が高くなることは否定できません。

例えば、スキーマの変更を行うケースを考えてみてください。新しいデータソースを追加し、データモデルを更新する必要があります。手動ETLの場合、描画ボードに戻ってソースに必要な変更を加え、テストを実行し、問題ないことを確認する必要があります。そのため、簡単な修正を行う場合であっても大規模なデータチームやデプロイを行う際には、コーディングに精通した技術者が複数人必要になります。

一方視覚的なETLレイヤを使用すると、プロセスがはるかに簡素化され変更が容易になるため、トラブルシューティングも可能になります。さらに重要なことは、すべての変更が記録されているため、すぐに追跡できることです。休暇中の技術者が行った変更を調査するのに数時間または数日を費やすといったことが無くなります。

OLAPの損失

これは、従来のOLAP実装に依存している組織でよく見られます。例えば、ETLのプロセスは時間が経過するとともに複雑になります。顧客は何年もそのようなシステムで作業し続けていて、それは手に負えないほどに複雑になっていました。この時、組織全体の習慣を変えることは困難でしたが、視覚的な環境でスキーマの変更や追跡を行うことがどれほど簡単なのかを知ると、二度と前のやり方に戻ることはありませんでした。

単純化

自動ETLを利用すると、手動で行わなければならない多くのプロセスを自動化できるため、時間の節約になります。その非常に簡単な例として、スケジュール化されたアップデートがあります。これは基本的で面倒な作業ですが、重要なタスクです。この自動化に加えて、問題が発生した場合に通知を行うツールがあれば、心配事が一つなくなります。

さらに、ETL機能を備えたビジネスインテリジェンスツールには、豊富なライブラリが付属しており、データソースに接続してデータを抽出できるため、APIの呼び出しや手動エクスポートに苦労する必要がありません。そして、特定のプロセスは保存して新しいプロジェクトやデータモデルに簡単に再利用できます。また、データの単純な結合は、ドラッグアンドドロップで行うことができます。これらまとめると、使いやすく構築することに苦労するのではなく、実際のデータを見つけることに時間を費やすことが可能になるということです。

自動ETLは、さらに一歩進んだ効果をもたらします。それは、非常に単純なユースケースにおいて自動ETLを使用すると、ユーザーは2つのテーブル間で共通のフィールドを接続するだけで独自のデータモデリングを実行できるようになるということです。開発者やデータアナリストにとって、これは手作業が少なくなるということを意味します。ユーザーが自由に、そして非常に簡単に加工を行うことができるので、時間とエネルギーをもっと複雑で興味深いプロジェクトに費やすことができます。

「3日」 が 「3分」になる

エネルギー分野の顧客企業は、データ加工にExcelを用いて手動で作業していました。同社は約20の地域をカバーしており、各地域で膨大なExcelファイルが作成されていました。分析の前段階であるすべてのテーブルを結合するために、3人の社員が毎週3日を費やしていました。同社は、BIソリューションを実装するべきであることを認識し、自動ETLツールを導入、その結果、今まで3日かかっていたテーブル結合が数分で完了することになりました。

手動コーディング論者の反論として

自動ETLは、考えられるすべてのユースケースと組織に対応できるとは限りません。大規模なデータサイエンスチームを抱える企業は、新しいツールを導入するよりすでに実装済みの手動コーティングによるプロセスを使い続けるほうが楽だと感じるかもしれません。ここには明らかに習熟曲線があり、コーティングの慣れがキーになります。コードを考えることに慣れている開発者は、勝手にコードが作られる視覚的なインターフェースに拒絶反応を示すかもしれません。さらに、自動ETLツールにはそれぞれの独自のワークフローとロジックがあるので、手動で作成した場合と比較して制限があるように思われる場合もあります。

結論:自動化する時間について

コーディングが好きな人は、手動コーディングを単純化するためのツールのことを常に考えていることでしょう。しかし多くの場合、作業自体を単純化する利点は欠点を上回ります。例えばC++はJavaScriptより確実に強力ですが、多くの場合ほとんどの人が後者の方が望ましいと回答するでしょう。大規模なデータ準備が必要とされるほとんどの場合、自動ETLは手動コーディングよりも明確で透明性が高く、より直感的な操作を提供します。特に、量が膨大で、データの変化が激しい場合にそのメリットを感じることでしょう。

 

この投稿に記載されているすべてのデータは情報提供のみを目的としており、正確ではありません。前もってご了承ください。
本記事は、Sisense社の許諾のもと弊社独自で記事化しました。
https://www.sisense.com/blog/the-case-for-automated-etl-vs-manual-coding/

Sisense は、Sisense Inc の商標または登録商標です。
※ その他の会社名、製品名は各社の登録商標または商標です。
※ 記事の内容は記事公開時点での情報です。閲覧頂いた時点では異なる可能性がございます。