ETLプロセス

英語名 ETL Process
読み方 イーティーエル プロセス
難易度
所要時間 4〜8時間
提唱者 データウェアハウスの設計手法から発展
目次

ひとことで言うと
#

散在する複数のデータソースから**E(抽出)→ T(変換)→ L(読み込み)**の3ステップでデータを集約し、分析や可視化ができる状態に整えるプロセス。データ分析の「裏方」だが、ここが崩れるとすべてのレポートや意思決定が信頼できなくなる。

押さえておきたい用語
#

押さえておきたい用語
Extract(エクストラクト)
データソースから必要なデータを抽出する工程のこと。API、SQL、ファイル読み込みなどの方法で取り出す。
Transform(トランスフォーム)
抽出したデータを分析に適した形に変換・加工する工程のこと。型変換、統一化、集約、クレンジングなどを含む。
Load(ロード)
変換済みデータを分析用のデータベースやDWHに格納する工程のこと。洗い替えか追記かを選択する。
ELT(イーエルティー)
ETLの変形で、先にデータをDWHにロードしてから変換する方式のこと。BigQueryやSnowflakeの登場で普及し、DWH側の計算力を活かせる。
インクリメンタルロード(Incremental Load)
前回処理以降の差分データだけを取得・処理する方式のこと。データ量が多い場合にフルロードより効率的。

ETLプロセスの全体像
#

ETLの3ステップ:複数ソースから抽出→変換→分析基盤へ格納
DBSQL ServerAPISalesforceCSVExcel出力SaaSGA4E: Extractデータを抽出するフル or 差分取得SQL / API / ファイルT: Transformデータを変換する型統一・集約・結合コードで管理が鉄則L: Loadデータを格納するDWH / データレイク洗い替え or 追記分析基盤BI / ダッシュボードスケジューリング + 監視Airflow / dbt / cron + エラー通知
ETLプロセスの進め方フロー
1
Extract
各ソースからデータを抽出
2
Transform
型変換・統一・集約・結合で加工
3
Load
DWHやBIツールにデータを格納
自動化・監視
スケジュール実行とエラー監視を設定

こんな悩みに効く
#

  • 部署ごとにバラバラなシステムからデータを手作業で集めている
  • 毎週同じ集計作業に何時間もかけている
  • データの鮮度が悪く、レポートがいつも「先週の数字」になっている

基本の使い方
#

ステップ1: E(Extract)— データを抽出する

必要なデータを各ソースシステムから取り出す

主なデータソース:

  • データベース: SQL でクエリを実行して抽出
  • API: Webサービスからデータを取得
  • ファイル: CSV・Excel・ログファイルを読み込む
  • SaaS: Google Analytics、Salesforceなどからエクスポート

ポイント: 抽出の際は**全件取得(フルロード)差分取得(インクリメンタルロード)**かを決める。データ量が多い場合は差分取得が基本。

ステップ2: T(Transform)— データを変換する

抽出したデータを分析に適した形に加工する

主な変換処理:

  • 型変換: 日付文字列を日付型に変換
  • 統一化: 「東京都」「Tokyo」を統一フォーマットに
  • 集約: 明細データを日別・月別に集計
  • 結合: 複数テーブルをキーで結合
  • クレンジング: 欠損値処理、異常値除外

ポイント: 変換ルールはコードまたはドキュメントで管理する。「担当者の頭の中にしかない」状態は最大のリスク。

ステップ3: L(Load)— データを格納する

変換済みデータを分析用のデータベースやデータウェアハウスに読み込む。

格納先の選択肢:

  • データウェアハウス: BigQuery、Redshift、Snowflakeなど
  • データレイク: S3、GCSに生データを保存
  • BIツール: Tableau、Looker、Power BIに直接接続
  • スプレッドシート: 小規模ならGoogle Sheetsでも可

ポイント: **洗い替え(全件入れ替え)追記(差分追加)**かを決める。履歴を残す必要があるデータは追記が基本。

ステップ4: スケジューリングと監視を設定する

ETLプロセスを自動化し、安定運用する

  • 実行スケジュール: 日次・時間ごとなど、データの鮮度要件に合わせる
  • エラー監視: 処理失敗時にSlackやメールで通知
  • データ品質チェック: 件数の急激な増減、NULL率の変化を検知
  • ログ記録: いつ・何件・どれだけの時間で処理したか記録

ポイント: 小規模なら cron + Python スクリプト、中〜大規模なら Airflow や dbt がおすすめ。

具体例
#

例1:中規模企業の営業レポート自動化

状況: 従業員150名のIT企業。毎週月曜の朝、営業マネージャーが3つのシステムからデータを手動で集めてExcelレポートを作成。作業時間は毎回3時間、年間156時間を費やしていた。

ETLプロセスの設計:

ステップ内容
ExtractSalesforce(商談データ)、会計システム(売上データ)、Google Sheets(目標値)からAPI/CSV で抽出
Transform商談ステージを統一コードに変換、月別に集計、達成率を計算
LoadGoogle BigQuery に格納し、Looker ダッシュボードに接続

自動化の仕組み:

  • 毎週日曜深夜に Airflow が自動実行
  • 処理完了後、Slackに「週次レポート更新完了」と通知
  • データ件数が前週比 ±20% を超えたらアラート

毎週3時間の手作業がゼロに。年間156時間の工数削減と、月曜朝には最新データで営業会議が始まるようになり、意思決定のスピードが格段に向上した。

例2:ECサイトのマーケティングデータ統合

状況: 年商8億円のDtoC EC企業。Google Ads、Meta Ads、LINE公式アカウント、自社ECの4つのデータソースが独立しており、全体の広告ROIを算出するのに毎月2日かかっていた。

ETLプロセスの設計:

ステップ内容
ExtractGoogle Ads API、Meta Marketing API、LINE Messaging API、自社ECのDB からそれぞれ日次データを取得
Transform広告費の通貨を円に統一、チャネル名の正規化、CVアトリビューションの計算、日別×チャネル別に集約
LoadSnowflakeに格納し、Tableauで可視化

導入の効果:

  • 広告ROI算出の所要時間: 2日→リアルタイム(ダッシュボードで常時確認可能)
  • 月間広告費2,500万円の配分を週次で最適化できるように
  • ROI最低のチャネル(LINE: ROI 1.2)の予算をROI最高のチャネル(Google: ROI 3.8)に再配分

4つのデータソースを統合しただけで、広告費配分の最適化が可能になり、全体の広告ROIが2.1→2.8に改善。ETLは「見えないインフラ」だが、その効果は売上に直結する。

例3:地方自治体のオープンデータ基盤構築

状況: 人口25万人の地方自治体。各課が独自のExcelで管理する統計データ(人口動態、観光客数、税収、福祉利用状況など)を横断的に分析したいが、フォーマットがバラバラで統合できていない。

ETLプロセスの設計:

  1. Extract: 12の課から月次Excelファイル(計35ファイル)を共有フォルダに集約
  2. Transform: Pythonスクリプトで年度表記の統一(令和/西暦変換)、地区コードの正規化、欠損値の補完
  3. Load: PostgreSQLに格納し、Metabaseで職員向けダッシュボードを構築

導入の効果:

  • データ統合にかかる時間: 手作業で月20時間 → 自動で30分
  • 横断分析が可能に: 「観光客数が多い月は地元商店の売上も増える」という相関を初めて定量的に把握
  • 政策立案の根拠として議会で活用(観光振興予算を前年比25%増で獲得)

自治体のような「Excelが散在する」環境こそETLの効果が大きい。シンプルなPython+PostgreSQLでも、データを統合するだけで組織の意思決定の質が変わる。

やりがちな失敗パターン
#

  1. 変換ロジックを属人化する — 「あの人しかわからない」ETLは最大のリスク。変換ルールをコードとドキュメントで管理し、レビューできる体制を作る
  2. エラーハンドリングを考えない — ソースシステムの仕様変更やネットワーク障害でETLは必ず壊れる。失敗時のリトライ・通知・ロールバックの仕組みを最初から設計する
  3. 最初から完璧を目指す — 大規模なデータ基盤を一気に構築しようとして頓挫するケースが多い。まずは1つのレポートの自動化から始めて、段階的に拡張する
  4. テスト環境なしで本番を更新する — ETLの変更が既存のレポートを壊すリスクがある。ステージング環境でテストしてから本番に適用する習慣をつける

まとめ
#

ETLプロセスは、散在するデータを「抽出→変換→読み込み」の3ステップで分析可能な状態にする基盤技術。手作業の集計を自動化し、データの鮮度と信頼性を向上させる。まずは毎週手作業で行っている1つのレポートをETLで自動化するところから始めよう。