「データを分析しよう!」って言われたのに、いざ始めてみたらデータがバラバラのファイルに入ってたり、フォーマットが全部違ったりして、「え、これどうやって使えばいいの?」ってなった経験、ない?そういうときに登場するのがETLという仕組みなんだ。この記事を読めば、ETLが何をしているのか、なぜ必要なのか、バッチリわかるようになるよ。
- ETLとはExtract・Transform・Loadの略で、データを「取り出す・整える・しまう」3ステップの仕組みのこと
- バラバラなシステムのデータを統一したフォーマットに変換することで、分析や活用がしやすくなる
- ETLがあることで、経営判断やデータドリブンな意思決定(データをもとに物事を決めること)が現実的に可能になる
もうちょっと詳しく
ETLは「データパイプライン」とも呼ばれるよ。パイプラインとはつまり、水道管のようにデータが一方向に流れる経路のことだ。まずExtract(抽出)の段階では、データベース・CSV・APIなど様々な場所からデータを引っ張ってくる。次にTransform(変換)では、日付のフォーマットを統一したり、不要な列を削除したり、複数テーブルを結合したりして「使える形」に加工する。最後にLoad(格納)で、整ったデータを分析用のデータベース(データウェアハウスと呼ばれる場所)に保存する。この3ステップを自動・定期的に動かすことで、常に最新のきれいなデータが分析に使える状態を保つことができるんだ。手動でやると膨大な手間がかかる作業を、ETLツールが自動でこなしてくれるのが最大のメリットだよ。
ETLの「T(Transform)」が一番難しくて時間がかかる。ここをどう設計するかがエンジニアの腕の見せ所!
⚠️ よくある勘違い
→ コピーだけなら変換処理は不要なはず。でも現実のデータは形式・品質・構造がバラバラなので、そのまま使えないことがほとんど。
→ コピーではなく「クレンジング(不正データの除去)」「フォーマット統一」「テーブル結合」など複雑な変換処理を含む。それこそがETLの本質。
[toc]
ETLの「E」=Extractって何をしてるの?
データはいろんな場所に散らばってる
会社や店舗が日々の業務をこなしていくと、いろんなシステムにデータが貯まっていくよ。たとえばネット通販のサイトなら、こんな場所にデータがある。
- 注文管理システム(いつ・誰が・何を買ったか)
- 顧客データベース(会員情報・住所・連絡先)
- 在庫管理システム(倉庫に何個残ってるか)
- マーケティングツール(どの広告をクリックしたか)
- CSVファイル(営業担当が手で入力した売上記録)
これ全部、それぞれ別々のシステムが管理してる。しかも保存形式がバラバラ。MySQLというデータベース・PostgreSQLというデータベース・エクセルのファイル・Googleスプレッドシート……全部作り方が違うんだ。
Extractで「ぜんぶかき集める」
Extractとはつまり、こういったバラバラな場所から必要なデータを引っ張ってくる作業のことだよ。英語で「抽出する」という意味ね。人間が手作業でやると何日もかかるし、コピーミスも起きる。ETLでは専用のツールやプログラムが自動的にそれぞれのシステムに接続して、必要なデータだけを取り出してくれる。スーパーの買い物に例えると、各売り場(お肉・野菜・飲み物)からカゴに商品を入れて集めてくる感じだね。集めただけでは料理(分析)できないけど、まずは全部揃えることが大事なんだ。
APIとバッチ処理
データを取り出す方法は主に2つある。API(つまり「システム同士が会話するための窓口」のこと)を使ってリアルタイムに取り出す方法と、バッチ処理(つまり「まとめて一気に処理する」こと)で定期的に取り出す方法だ。たとえば「毎日夜中の2時にその日のデータをまとめて取り出す」というのがバッチ処理の典型例だよ。夜中に動かすのは、昼間はシステムが忙しくて負荷をかけたくないからというのが多い理由なんだ。
ETLの「T」=Transformが一番大事な理由
生のデータは「使えない」状態のことが多い
Extractで集めてきたデータをそのまま使おうとすると、いろんな問題が起きるよ。実際にどんな問題があるか見てみよう。
- 日付のフォーマットがバラバラ:あるシステムは「2024/04/01」、別のシステムは「April 1, 2024」、また別のは「20240401」という形式で日付が入ってる
- 空白や欠損がある:住所の欄が空っぽだったり、年齢が入ってなかったりする
- 重複データがある:同じ顧客が2回登録されてたり、同じ注文が2行ある
- 単位がバラバラ:金額が「円」のシステムと「ドル」のシステムが混在してる
- コードが違う:性別を「男・女」で保存してるシステムと「M・F」で保存してるシステムがある
こういった問題をそのまま分析に使うと、結果がデタラメになってしまう。「女性の購入者が多い」というグラフを作っても、データの表記が揃ってなければ正確な数字が出ないよね。
Transformでデータをピカピカにする
Transformとはつまり「バラバラなデータを決まった形に変換・整形する」作業のことだよ。料理で例えると、Extract でスーパーから買ってきた食材を、Transformで「洗う・切る・下ごしらえする」段階に当たる。食材(データ)がどんな状態で届いても、料理(分析)に使えるように整えるのがTransformの役割だ。具体的にはこういうことをする。
- 日付を「YYYY-MM-DD」形式に統一する
- 空白・欠損データを「不明」や「0」で埋める、または除外する
- 重複している行を削除する
- 通貨を全部「円」に換算して統一する
- 複数のテーブルを「顧客ID」をキーにして結合する
このTransformのルールをどう設計するかが、ETLエンジニアの腕の見せ所になるんだ。ルールを間違えると後の分析結果もすべて間違いになってしまうから、一番丁寧に考えなければいけない部分だよ。
ETLの「L」=Loadとデータウェアハウス
整ったデータを「専用の倉庫」にしまう
TransformできれいになったデータをLoadする、つまり決まった場所に格納(保存)するのが最後のステップだ。この「決まった場所」として使われるのがデータウェアハウスというものだよ。データウェアハウスとはつまり「分析専用のデータ保管場所」のことで、ウェアハウスは英語で「倉庫」という意味ね。普通のデータベースが「今すぐ使うための作業台」だとすれば、データウェアハウスは「過去のデータも全部きれいに整理して並べてある図書館」みたいなイメージだ。
代表的なデータウェアハウス
有名なデータウェアハウスをいくつか紹介するよ。
- BigQuery(Googleが提供。大量のデータも超高速に検索できる)
- Snowflake(クラウド対応で使いやすさで人気)
- Amazon Redshift(AWSというAmazonのクラウドサービスの一部)
どれもクラウド上で動くサービスで、つまりインターネットを通じて使えるコンピューターの上にデータを保存するサービスのことだよ。自社でサーバーを買って管理する必要がなく、使った分だけ料金を払う仕組みになってる。Loadが完了すれば、データアナリストやBIツールがそのデータウェアハウスにアクセスして分析できるようになるんだ。
ETLツールってどんなものがあるの?
自分でプログラムを書く場合
ETLの処理はPythonというプログラミング言語で自分で書くこともできるよ。Pythonにはデータ処理に便利なライブラリ(つまり「便利な道具のセット」のこと)がたくさんあって、pandasというライブラリが特に有名だ。ただ自分で書くとなると、スケジュール管理・エラー処理・ログ記録なども全部自分で作らないといけないから、それなりに大変だよ。
専用のETLツールを使う場合
世の中にはETLをやるための専用ツールがたくさんある。代表的なものを見てみよう。
- Apache Airflow:ETLのスケジュールや順番を管理する定番ツール。つまり「毎日夜中2時にこの順番で処理を動かして」という指示書を作れるオーケストラの指揮者みたいな役割のソフトだ
- Fivetran:設定するだけで様々なサービスからデータを自動で吸い上げてくれるSaaSツール。つまりあらかじめコネクターが揃っていて、コードを書かなくてもデータを取り込める便利サービスのこと
- dbt(data build tool):主にTransformの部分に特化したツールで、SQLを使ってデータ変換のルールを書ける。最近のデータエンジニアリングで大人気のツールだよ
- Talend:GUI(つまり画面をマウスで操作できるインターフェースのこと)で視覚的にETLのフローを作れるツール
ELTという新しい考え方
最近はELTという順番で行う方法も増えてきたよ。ETLが「Extract→Transform→Load」の順だったのに対して、ELTは「Extract→Load→Transform」、つまり「まず全部データウェアハウスに突っ込んでから、ウェアハウスの中で変換する」という考え方だ。BigQueryやSnowflakeが超高性能になったおかげで、ウェアハウスの中で変換してもスピードが遅くならなくなったから生まれた手法なんだ。dbtはこのELTのTransform部分を担うツールとして広まったよ。
ETLが実際の仕事でどう使われてるか
小売業での使われ方
コンビニチェーンを例に考えてみよう。全国に1000店舗あるとして、毎日各店舗のレジからPOSデータ(つまり「何がいつ何個売れたか」の販売記録のこと)が送られてくる。それ以外にも、ネットショップの注文データ・会員アプリの行動ログ・仕入れシステムの在庫データが存在する。ETLがこれら全部を毎夜自動で集めて整理して、翌朝には本部の担当者がBIツールで「昨日の全国の売上ランキング」「在庫が少ない商品一覧」「会員アプリのクーポン使用率」をすぐ確認できる状態を作ってくれる。ETLがなければ、担当者が各店舗にメールでデータを送ってもらって、エクセルで手動集計する……という作業に毎朝何時間もかかってしまうんだ。
マーケティングでの使われ方
ウェブサービスの会社なら、Googleアナリティクスのアクセスデータ・メール配信ツールの開封率データ・SNS広告のクリック数データ・自社サービスの課金データをETLで統合して、「どの広告経由で来た人が一番長く使い続けるか」を分析できるよ。これがマーケティングROI分析(つまり「広告費に対してどれだけの効果があったか」を測ること)につながる。こういった分析をするためのデータ準備をETLが全部やってくれてるんだ。
データエンジニアの仕事
ETLを設計・構築・運用する人のことをデータエンジニアと呼ぶよ。データサイエンティストが「このデータを使って予測モデルを作りたい」と言ったとき、そのデータを使えるきれいな状態にして届けるのがデータエンジニアの仕事だ。縁の下の力持ち的な存在で、データエンジニアがしっかりETLを作っておかないとデータアナリストもデータサイエンティストも仕事ができない。それくらい重要な役割なんだよ。求人市場でも需要が高くて、プログラミングとデータベースの知識があれば目指せる職種の一つだね。
