ETL

データベース・ストレージ | IT用語集

この用語をシェア

ETLとは

ETL(イーティーエル)は、Extract(抽出)、Transform(変換)、Load(読み込み)の略語で、異なるデータソースからデータを収集し、統一された形式でデータウェアハウスやデータレイクに格納するプロセスを指します。ビジネスインテリジェンス(BI)やデータ分析プロジェクトの基盤となる重要な技術です。

ETLの3つのステップ

1. Extract(抽出)

様々なデータソースからデータを抽出するステップです。データソースには以下のようなものがあります:

  • データベース:MySQL、PostgreSQL、Oracle、SQL Serverなど
  • ファイルシステム:CSV、JSON、XML、Excelファイルなど
  • API:REST API、GraphQL、Webサービスからのデータ取得
  • クラウドサービス:Salesforce、Google Analytics、SNSなど
  • ストリーミングデータ:IoTセンサー、ログファイル、リアルタイムデータ

2. Transform(変換)

抽出したデータを分析に適した形式に変換するステップです。主な変換処理には以下があります:

  • データクレンジング:重複データの除去、欠損値の処理、異常値の修正
  • データ統合:複数ソースからのデータをマージ、結合
  • データ標準化:フォーマット統一、単位変換、コード変換
  • データ集計:合計、平均、カウントなどの集計処理
  • ビジネスルール適用:計算フィールドの追加、条件による分類

3. Load(読み込み)

変換されたデータを最終的な格納先に読み込むステップです。格納先には以下があります:

  • データウェアハウス:Amazon Redshift、Snowflake、BigQueryなど
  • データレイク:Amazon S3、Azure Data Lake、Google Cloud Storageなど
  • 分析用データベース:分析に最適化されたデータベース
  • ビジネス機能:BIツール、ダッシュボード、レポートシステム

ETLの種類

バッチETL

定期的に(日次、週次、月次など)大量のデータを一括処理する方式です。従来の主流な方法で、夜間バッチ処理として実行されることが多いです。

リアルタイムETL(ストリーミングETL)

データが発生と同時に継続的に処理する方式です。Apache Kafka、Amazon Kinesis、Azure Event Hubsなどの技術を使用して実装されます。

マイクロバッチETL

小さな単位で頻繁にバッチ処理を実行する方式です。リアルタイムほどではないが、比較的新鮮なデータを提供できます。

代替アプローチ:ELT

近年、クラウドデータウェアハウスの処理能力向上により、ELT(Extract、Load、Transform)というアプローチも注目されています。データを先に読み込んでから変換を行う手法で、以下のメリットがあります:

  • 生データの保持が可能
  • スケーラブルな変換処理
  • 柔軟な分析要件への対応

主要なETLツール

オープンソース

  • Apache Airflow:ワークフロー管理とスケジューリング
  • Apache NiFi:データフロー自動化
  • Pentaho Data Integration:包括的なETL機能
  • Talend Open Studio:グラフィカルなETL設計

商用ツール

  • Informatica PowerCenter:エンタープライズレベルのETL
  • IBM DataStage:大規模データ統合
  • Microsoft SSIS:SQL Server統合サービス
  • Talend Data Integration:商用版ETLプラットフォーム

クラウドサービス

  • AWS Glue:サーバーレスETLサービス
  • Azure Data Factory:クラウドデータ統合
  • Google Cloud Dataflow:統合データ処理
  • Fivetran:自動化されたデータパイプライン

ETL設計のベストプラクティス

データ品質管理

データの整合性、完全性、正確性を確保するための検証ルールとモニタリングを実装します。

エラーハンドリング

処理エラーの検出、ログ記録、通知機能を組み込み、データ処理の信頼性を向上させます。

パフォーマンス最適化

並列処理、インクリメンタル処理、インデックス活用により、処理時間を短縮します。

スケーラビリティ

データ量の増加に対応できるアーキテクチャを設計し、将来の拡張性を確保します。

DB運用視点で見るETL:DWHロード戦略とCDC

データベース運用の観点では、ETLは「どのようにソースDBの変更を検知し、DWH(データウェアハウス)へ反映するか」という設計が中心的な課題になります。ここでは実務でよく用いられる手法を解説します。

ロード方式の種類

  • フルロード(Full Load):ソーステーブルの全件を毎回抽出し、DWH側のテーブルを洗い替える方式。実装がシンプルですが、データ量が大きいと処理時間・DB負荷が増大します。
  • 差分ロード(Incremental Load):更新日時カラムや連番ID(ウォーターマーク)を基準に、前回実行以降に追加・更新された行のみを抽出する方式。DBへの負荷を抑えられますが、物理削除された行を検知できないという弱点があります。
  • CDC(Change Data Capture/変更データキャプチャ):DBのトランザクションログ(MySQLのbinlog、PostgreSQLのWAL等)を読み取り、INSERT/UPDATE/DELETEの変更をリアルタイムに近い形で検知・反映する方式。ソーステーブルへの追加クエリ負荷が少なく、削除も検知できるのが特徴です。

DWHへの反映(Upsert / Merge)

差分ロードやCDCで取得した変更データをDWHに反映する際は、単純なINSERTではなく、既存行を更新するか新規行を追加するかを判定するUpsert(Merge)処理が必要になります。また、ディメンションテーブルの過去の値を保持したい場合は、SCD(Slowly Changing Dimension)という設計パターンがよく使われます。

コード例

SQLによるUpsert(MERGE文)

-- ステージングテーブルの差分データをDWHのディメンションテーブルへUpsert
MERGE INTO dwh.dim_customers AS target
USING staging.customers_delta AS source
ON target.customer_id = source.customer_id
WHEN MATCHED THEN
  UPDATE SET
    target.name = source.name,
    target.email = source.email,
    target.updated_at = source.updated_at
WHEN NOT MATCHED THEN
  INSERT (customer_id, name, email, updated_at)
  VALUES (source.customer_id, source.name, source.email, source.updated_at);

差分ロードの抽出クエリ例

-- 前回実行時刻(ウォーターマーク)以降に更新された行のみを抽出
SELECT customer_id, name, email, updated_at
FROM orders_db.customers
WHERE updated_at > :last_watermark
ORDER BY updated_at ASC;

CDCを本格的に導入する場合は、Debezium、AWS DMS(Database Migration Service)、Fivetranなどのツールを使い、DBのトランザクションログから変更イベントをApache Kafka等のストリームに流し込む構成が一般的です。

メリット・デメリット

観点 内容
メリット 変換ロジックをDWHに投入する前に整理できるため、格納先のデータ品質を高く保てる。処理内容が明確なため監査・トレーサビリティを確保しやすい。
デメリット 変換サーバー(ETLサーバー)がボトルネックになりやすい。フルロードはソースDBへの負荷が大きく、差分ロードは削除検知が困難。CDCは実装・運用の技術的難易度が高い。

類似用語との違い(ETL vs ELT vs CDC)

用語 処理順序・特徴 DB運用上のポイント
ETL 抽出→変換→格納。変換専用サーバー・ツール上でデータを加工してからDWHへロード ソースDBへの接続・抽出クエリの負荷設計が重要
ELT 抽出→格納→変換。生データを先にDWH/データレイクへロードし、DWH側の計算資源で変換 DWH(BigQuery、Snowflake等)のクエリエンジンに変換負荷がかかる
CDC DBのトランザクションログから変更差分のみを検知・配信する仕組み ETL/ELTの「抽出(Extract)」フェーズを効率化する手段として組み合わせて使われる

ETLとELTは「変換をどこで行うか」という設計思想の違いであり、CDCはそのどちらとも組み合わせて使える「変更検知の手法」です。DB運用の現場では、負荷の高いフルロードを避けるためにCDCで差分検知を行い、その結果をETL/ELTパイプラインでDWHに反映する構成がよく採用されます。

実務での導入時の注意点

  • ソースDBへの影響を最小化する:抽出クエリはレプリカ(読み取り専用インスタンス)に対して実行し、本番DBへの負荷を避けるのが基本です。
  • べき等性の確保:ETLジョブが途中で失敗して再実行された場合でも、重複データが発生しないようUpsert処理やトランザクション制御を設計します。
  • スキーマ変更への対応:ソースDB側のテーブル定義変更(カラム追加等)がETLパイプラインを壊さないよう、スキーマ検証やバージョン管理を行います。

現代のデータエンジニアリング

現代では、ETLはより広義のデータエンジニアリングの一部として捉えられ、データパイプライン、データレイクハウス、DataOpsといった概念と統合されて活用されています。機械学習やAI プロジェクトにおいても、データの準備段階としてETLプロセスは不可欠な技術となっています。

関連用語

  • BigQuery: ELTアプローチでよく使われるクラウドDWH。変換処理をSQLエンジン側で実行する。
  • Snowflake: ETL/ELTパイプラインのロード先として広く使われるクラウドDWH。
  • Apache Spark: 大規模データのTransform(変換)処理に用いられる分散処理エンジン。
  • PostgreSQL / MySQL: CDCの対象となる代表的なトランザクションDB。
  • ETL(データ分析カテゴリ): BI・データ分析の観点からETLを解説したページ。本ページはDB運用(DWHロード・CDC)の観点を中心に解説しています。

参考リンク

この用語についてもっと詳しく

ETLに関するご質問や、システム導入のご相談など、お気軽にお問い合わせください。

よくある質問(FAQ)

Q. ETLとは何ですか

ETLは、Extract(抽出)、Transform(変換)、Load(読み込み)の略で、データウェアハウスやデータレイクにデータを統合するプロセスです。ビジネスインテリジェンス、データ分析の基盤技術です。

Q. ETLの主な用途・メリットは

ETLはデータベース分野で広く活用されており、業務効率化、システム最適化、生産性向上に貢献しています。企業規模を問わず導入が進んでいます。

Q. 2025-2026年のETLの最新動向は

ETLは2025-2026年にかけてAI統合、自動化、クラウドネイティブ対応、セキュリティ強化などの進化が進んでいます。