オープンソース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
機能比較表
| 比較項目 | dbt | Airbyte | Apache Hop |
|---|---|---|---|
| データ収集(E/L) | ❌ | ✅ 300+ コネクタ | ✅ |
| データ変換(T) | ✅ 高機能 | ⚠️ | ✅ |
| SQL変換 | ✅ | ❌ | ✅ |
| ビジュアルUI | ❌ | ✅ | ✅ |
| テスト機能 | ✅ 充実 | ❌ | ⚠️ |
| ドキュメント生成 | ✅ | ❌ | ❌ |
| Gitバージョン管理 | ✅ | ⚠️ | ⚠️ |
| スケジューリング | ⚠️ 別途必要 | ✅ | ✅ |
| クラウドDW統合 | ✅ 深い | ✅ | ✅ |
| セルフホスト | ✅ | ✅ | ✅ |
| 学習コスト | 低(SQLが書ければ) | 低(GUI) | 中(GUI) |
| ライセンス | Apache 2.0 | MIT/ELv2 | Apache 2.0 |
| GitHub Stars | 10k+ | 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 |