AI

オープンソースETL/ELTツール比較:dbt vs Airbyte vs Apache Hop でデータパイプラインを構築する

オープンソースラボ編集部2026年6月13日

オープンソースETL/ELTツール比較:dbt vs Airbyte vs Apache Hop でデータパイプラインを構築する

データウェアハウスにデータを集めて変換・分析する「ETL/ELTパイプライン」はデータエンジニアリングの核心です。dbt(Data Build Tool)・Airbyte・Apache HopはオープンソースでETL/ELTを実現するツールです。データ基盤をSaaSに依存せずセルフホストで構築しましょう。

ETLとELTの違い

  • ETL(Extract→Transform→Load): データ抽出→変換→データウェアハウスに格納。変換がDW外で行われる
  • ELT(Extract→Load→Transform): データ抽出→DWに格納→DW内で変換。クラウドDWの普及で主流になった
  • dbt: ELTの「Transform」に特化(SQL変換・テスト・ドキュメント)
  • Airbyte: ELTの「Extract→Load」に特化(データ収集・同期)
  • Apache Hop: 旧PDI(Pentaho Data Integration)のフォークで、ETL全体をカバー

主要ツールの概要

dbt(Data Build Tool)

データウェアハウス内でのSQL変換・テスト・ドキュメント生成を管理するツールです。データエンジニアがSQLでデータ変換ロジックを書き、Gitで管理し、バージョン管理できます。

# dbt Coreのインストール
pip install dbt-core dbt-postgres  # PostgreSQL用
# または
pip install dbt-core dbt-bigquery  # BigQuery用
pip install dbt-core dbt-snowflake  # Snowflake用

# プロジェクト初期化
dbt init my_project
cd my_project
# dbt_project.yml
name: my_analytics
version: "1.0.0"
profile: my_profile

models:
  my_analytics:
    staging:
      +materialized: view
    marts:
      +materialized: table
-- models/staging/stg_orders.sql
-- ステージングモデル: 生データのクレンジング
WITH source AS (
    SELECT * FROM {{ source('raw', 'orders') }}
),
renamed AS (
    SELECT
        id AS order_id,
        user_id AS customer_id,
        status,
        amount / 100.0 AS amount_jpy,
        created_at
    FROM source
    WHERE status != 'cancelled'
)
SELECT * FROM renamed

-- tests/stg_orders.yml でテストを定義
-- models:
--   - name: stg_orders
--     columns:
--       - name: order_id
--         tests:
--           - unique
--           - not_null
# dbtコマンド
dbt run          # モデルの実行(SQL変換を実行)
dbt test         # テストの実行
dbt docs generate && dbt docs serve  # ドキュメント生成
dbt build        # run + test を一括実行

Airbyte

300以上のデータソースコネクタを持つオープンソースのデータ統合プラットフォームです。データベース・API・SaaSサービスからデータウェアハウスへのデータ同期を管理します。

# AirbyteをDockerで起動
git clone https://github.com/airbytehq/airbyte.git
cd airbyte
docker compose up

# ブラウザで http://localhost:8000 にアクセス

Airbyteの設定はWebUIで行います。コネクタとして次を選べます:

  • Source: PostgreSQL・MySQL・MongoDB・Stripe・Shopify・Salesforce・GitHub・Google Analytics・Hubspot など300+
  • Destination: BigQuery・Snowflake・Redshift・PostgreSQL・S3・ClickHouse など60+
# Airbyte CDK でカスタムコネクタを作成
connector_builder_manifest:
  version: "0.60.0"
  type: DeclarativeSource
  streams:
    - type: DeclarativeStream
      name: products
      primary_key: id
      retriever:
        type: SimpleRetriever
        requester:
          type: HttpRequester
          url_base: https://api.mystore.com
          path: /products
          http_method: GET
          authenticator:
            type: ApiKeyAuthenticator
            header: Authorization
            api_token: "Bearer {{ config['api_key'] }}"

Apache Hop

Apache Hop(旧Pentaho Data Integration)はビジュアルUIでETLパイプラインを設計できるツールです。300以上のコンポーネント・複数のデータベース・ファイル形式に対応しています。

# Apache HopをDockerで起動
docker run -it -p 8080:8080 apache/hop

# Hop Pipeline Runner(コマンドライン実行)
hop-run.sh   --project my-project   --environment dev   --runconfig local   --pipeline pipelines/my-etl.hpl

機能比較表

比較項目dbtAirbyteApache Hop
データ収集(E/L)✅ 300+ コネクタ
データ変換(T)✅ 高機能⚠️
SQL変換
ビジュアルUI
テスト機能✅ 充実⚠️
ドキュメント生成
Gitバージョン管理⚠️⚠️
スケジューリング⚠️ 別途必要
クラウドDW統合✅ 深い
セルフホスト
学習コスト低(SQLが書ければ)低(GUI)中(GUI)
ライセンスApache 2.0MIT/ELv2Apache 2.0
GitHub Stars10k+16k+1k+

dbt + Airbyteの組み合わせ

最も普及しているモダンデータスタック構成は「Airbyte(EL)+ dbt(T)+ データウェアハウス」です。

SaaS API/DB → Airbyte → Snowflake/BigQuery/Redshift → dbt変換 → BIツール
# GitHub Actions でdbt自動実行
name: dbt Run

on:
  schedule:
    - cron: "0 6 * * *"  # 毎日6時に実行

jobs:
  dbt-run:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: "3.11"
      - name: Install dbt
        run: pip install dbt-core dbt-bigquery
      - name: dbt build
        run: dbt build --select +marts
        env:
          DBT_PROFILES_DIR: .

データパイプライン・DevOpsツールはDevOpsカテゴリ(/categories/devops)で一覧でき、BIやデータ可視化ツールはknowledgeカテゴリ(/categories/knowledge)でも探せます。

FAQ

Q. dbtはデータベースそのものですか?

A. いいえ。dbtはデータウェアハウスの上で動くSQL変換ツールです。dbt自体はデータを保存しません。BigQuery・Snowflake・Redshift・PostgreSQLなど既存のデータウェアハウスに接続し、そのコンピューティング上でSQLを実行します。「dbtはあなたのDWのための高機能なSQLランナー」です。

Q. AirbyteのセルフホストとAirbyte Cloudはどちらを使うべきですか?

A. 初期のプロトタイプやデータ量が少ない場合はAirbyte Cloud(無料枠あり)が簡単です。データ量が増える・コストを抑えたい・データを自社環境に保持したいになったタイミングでセルフホストへ移行するのが一般的な流れです。セルフホストはAWS EC2・Kubernetesへのデプロイに対応しています。

Q. dbtのテスト機能とは何ですか?

A. dbtのテストはデータ品質チェックです。設定例: unique(カラムが一意か)・not_null(nullがないか)・accepted_values(指定した値のみか)・relationships(外部キー制約)などをschema.ymlに定義し、dbt testで全テーブルのデータ整合性を自動確認できます。CI/CDパイプラインに組み込んでデータ品質を継続的に保証します。

Q. dbtとSpark(PySpark)はどう違いますか?

A. dbtはSQL変換に特化しており、使い慣れたSQLで記述します。PySparkは大規模なデータ処理(数百GB〜PB)・機械学習・複雑な変換に向いており、Pythonで書きます。データウェアハウスに収まる規模ならdbt、Hadoop/Sparkクラスターが必要な規模ならPySparkが適しています。

まとめ

ユースケース推奨ツール
データウェアハウス内のSQL変換dbt
データソースからDWへの同期Airbyte
ビジュアルETLパイプラインApache Hop
モダンデータスタックAirbyte + dbt + Snowflake/BigQuery

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。