ETLとELTの違い――「変換のタイミング」がすべて

ETL(Extract→Transform→Load)とELT(Extract→Load→Transform)の違いは、「変換をデータ格納の前に行うか、後に行うか」の一点に集約されます。ETLは外部の変換サーバーでデータを加工してからDWHに格納し、ELTは生データをそのままDWHにロードしてからDWH上のSQLで変換します。

この順序の差が、アーキテクチャの柔軟性・コスト・スキルセットに大きな影響を与えます。クラウドDWHが普及した現代では、多くのケースでELTが推奨されますが、ETLが適する例外も存在します。

ETL・ELTの処理フロー比較図

【ETL】
ソースDB/SaaS
    │
    ▼ Extract(抽出)
変換サーバー(Informatica / Talend / SSIS)
    │
    ▼ Transform(変換・クレンジング・集計)
DWH(Teradata / Oracle等)
    │
    ▼ Load(格納)
分析・BI

【ELT】
ソースDB/SaaS
    │
    ▼ Extract + Load(抽出・格納)
クラウドDWH(BigQuery / Snowflake / Redshift)
    │
    ▼ Transform(dbt等のSQLで変換)
Marts / BI層

ETLの時代――なぜ「先に変換」していたのか

2000年代まで主流だったETLアーキテクチャには、当時のインフラ制約に根ざした合理的な理由がありました。

  1. ストレージコストが高価: オンプレミスDWH(Teradata・Oracle等)のストレージは高価であり、不要なデータは変換段階で除外して格納量を最小化するのが当然でした。「生データをすべて入れる」という発想自体がコスト的に非現実的でした。
  2. DWHの処理能力が限定的: 変換処理には膨大なCPUが必要でしたが、DWH本体の処理リソースは分析クエリのために温存する必要がありました。外部ETLサーバーで変換を担うことで、DWHへの負荷を抑えました。
  3. バッチウィンドウの制約: 夜間バッチのみで処理できる時間枠が限られており、変換処理を外部に出すことでDWHのバッチ実行を効率化していました。

代表的なETLツールとして、Informatica PowerCenter(エンタープライズ標準)、Talend(OSSベース)、Microsoft SSIS(SQL Server環境)が挙げられます。これらはGUIでのマッピング設計が中心であり、データエンジニアではなく専任のETLエンジニアが担当するのが一般的でした。

ELTの台頭――クラウドDWHが変えたゲームルール

2010年代後半からクラウドDWHが普及し、ETLの前提を覆す3つの変化が起きました。

  1. ストレージが安価になった: AWS S3やGoogle Cloud Storageは1GBあたり数円以下で利用できます。生データをそのまま保存してから変換するコストは、オンプレミス時代とは桁違いに低くなりました。「まず全量入れる」が現実的な選択肢になりました。
  2. コンピュートが弾力的にスケール: BigQueryやSnowflakeはクエリ実行時にコンピュートリソースを自動スケールします。変換処理をDWH上で実行しても分析クエリを圧迫しない構成が可能になりました。
  3. SQLベースの変換がDWH上で高速に実行可能: クラウドDWHのSQLエンジンは数百GBのデータに対しても数秒〜数分でクエリを完了します。Pythonで外部変換するより、DWH上のSQLの方が速い・安い・シンプルというケースが増えました。

この変化を受けて生まれたのが「モダンデータスタック」の概念です。ELTアーキテクチャの典型的な組み合わせは、Fivetran(EL部分) + dbt(T部分)、またはAirbyte(EL部分) + dbt(T部分)です。EL(抽出・格納)はSaaSコネクタに任せ、T(変換)はSQLとバージョン管理で行うという明確な役割分担が特徴です。

ELT vs ETL 徹底比較

比較軸ETLELT
変換のタイミングDWH格納前(外部サーバー)DWH格納後(DWH上でSQL)
スキルセットPython / Java / GUIツール操作SQL中心(dbt)
スケーラビリティ変換サーバーのスペックに依存クラウドDWHが自動スケール
元データの保全性変換後のみ保持(元データ消える)raw層として全量保持可能
開発速度遅い(ETLツールの習熟・テスト工数大)速い(SQLとdbtで短サイクル)
コスト構造ETLサーバー・ライセンスコストDWHのストレージ+クエリコスト
適するデータ量小〜中規模(変換後の圧縮前提)中〜大規模(raw全量保持が前提)
代表ツールInformatica, Talend, SSISFivetran/Airbyte + dbt
適する組織・ユースケース法規制対応・個人情報マスキング必須環境クラウドDWH中心のモダン構成

ELTが「正解」でないケース――ETLを選ぶべき例外

ELTはクラウド時代のデファクトですが、以下のケースではETLの方が適します。安易なELT一択は禁物です。

  1. 個人情報のマスキングが必要な場合: GDPRやPIPA等の規制により、氏名・メールアドレス等の個人情報をDWHに格納する前に匿名化・仮名化が義務づけられるケースがあります。この場合、DWHに生データを入れるELTはそもそも規制違反になりえます。
  2. データ量が極端に多くコストが問題になる場合: IoTセンサーデータや高頻度ログデータは1日で数百GBに達することがあります。全量をDWHにロードすると、ストレージ・クエリコストが問題になります。ストリーミング層での前処理(Kafka + Flink等)でサマリーに絞ってからロードするアプローチが有効です。
  3. 非構造化データの前処理が必要な場合: 画像・動画・音声ファイルのメタデータ抽出、PDFからのテキスト抽出など、SQLで処理できない非構造化データの変換はETL(外部処理)が必要です。
  4. レガシーシステムとの連携: 独自バイナリフォーマットや特殊なエンコーディングを持つレガシーシステムとの連携では、標準コネクタが存在せず、カスタム変換ロジック(Python/Java)が必要なケースがあります。

ETL/ELT 選定判断マトリクス

条件ETL推奨ELT推奨
個人情報をDWH格納前に匿名化する必要がある
クラウドDWH(BigQuery/Snowflake)を使用している
データエンジニアがSQLを主なスキルとしている
画像・音声・動画等の非構造化データが主体
データ量が1日1TB以上でコスト最適化が必須△(前段フィルタ)△(集計後ロード)
元データをすべて保持して後で再変換したい
レガシーDWH(オンプレ)環境を維持している

モダンデータスタックにおけるELTの実装

ELTの典型的な実装構成は以下の通りです。EL(抽出・格納)はFivetran or Airbyteがコネクタを担当し、T(変換)はdbtがSQL+バージョン管理で担当します。オーケストレーションにはAirflowまたはDagsterが使われます。

Airbyte接続設定例(YAML)

source:
  name: PostgreSQL本番DB
  type: postgres
  host: db.example.com
  port: 5432
  database: mydb
  username: airbyte_user

dbtによる変換処理例(staging → marts)

-- models/staging/stg_orders.sql
SELECT
    id            AS order_id,
    customer_id,
    created_at,
    status,
    amount
FROM {{ source('raw', 'orders') }}
WHERE status NOT IN ('test', 'cancelled_before_process')

dbtはこのSQLをBigQuery/Snowflake上で実行し、stg_ordersビュー/テーブルを生成します。さらにintermediate層でJOINや集計を行い、最終的にmarts層でBI向けのファクト・ディメンションテーブルを生成するレイヤー構造(staging → intermediate → marts)を取ります。変換ロジックはすべてSQLファイルとしてGitで管理され、テスト・ドキュメント生成もdbtが担います。

オーケストレーション(Airflow/Dagster)は、Fivetranの同期完了後にdbt runを実行するDAGを管理します。これにより、ELTパイプライン全体が自動・スケジュール化されます。

まとめ――「まずELT、必要ならETLを追加」が現代のセオリー

クラウドDWH時代のデータ統合では、ELTをデフォルト選択肢とし、ETLが必要な例外ケースを見極める判断力が重要です。

  • ETLとELTの違いは「変換のタイミング」の一点に集約される
  • クラウドDWHの普及により、ELT(Fivetran/Airbyte + dbt)がモダン構成の標準となった
  • 個人情報マスキング・非構造化データ処理・超大量データにはETLが適する
  • ELTはSQLスキルで変換でき、元データをraw層に保持できる柔軟性が強み
  • 「まずELTで構築し、ETLが必要な処理だけ手前に追加」が現実的なアプローチ

次に読むべき関連記事: dbt入門(B-01) / Airbyte vs Fivetran(B-06) / CDC(A-19)

よくある質問(FAQ)

Q. ELTとETLのどちらを選ぶべきですか?

A. クラウドDWH(BigQuery/Snowflake等)を使うなら、まずELTが推奨です。ただし、DWH格納前に個人情報のマスキングが必要な場合や、非構造化データの前処理が必要な場合など、ETLが適するケースもあります。「条件によって使い分ける」が正確な答えです。

Q. ELTの「T」にはどのツールを使いますか?

A. dbtが最も普及しています。SQLでデータ変換を定義し、テスト・ドキュメント・バージョン管理を一体で行えるため、ELTアーキテクチャの標準ツールとなっています。クラウドDWH(BigQuery/Snowflake/Redshift)にネイティブ対応しており、学習コストも比較的低いのが特徴です。

Q. ETLからELTに移行する際の注意点は?

A. 既存のETL処理をそのままELTに移植するのではなく、「変換ロジックの整理」から始めることが重要です。不要な変換の排除、dbtでのモデル再設計(staging → intermediate → marts)を行うことで、移行後の保守性が大きく向上します。また、元データ(raw層)の保持ポリシーとストレージコストの試算も事前に行うことを推奨します。