ETLメモ

前処理
Author

Ryo Nakagami

Published

2025-11-15

Modified

2025-11-26

ETLとは?

Definition 1 ETL

  • Extract(抽出)・Transform(変換)・Load(格納) の略
  • 要件として
    • 自動化されていること
    • 再現性があること
    • データがどのように加工されか追跡しやすいこと

PythonでETL toolを作成する場面

  • ETL要件がシンプルなとき
  • 既存ツールでは満たせない特殊要件があるとき

ETL作業フロー

作業フロー

  1. 構造化されていないケースが多いファイル群からデータを抽出する
  2. データクレンジングを実施
  3. あるべきデータフォーマットに従うように型を付与する
  4. データをDBなどに格納する

代表的なETL tool

項目 Apache Airflow Luigi pandas petl Bonobo Bubbles
種類 ワークフローオーケストレーション パイプラインのタスクオーケストレーション データ分析・変換ライブラリ 軽量ETLフレームワーク 軽量ETLフレームワーク メタデータ駆動型ETLフレームワーク
変換機能 Pythonオペレーター経由で間接的 あり(カスタムタスク) 豊富なDataFrame変換 基本的な行単位変換 あり(ノードによる変換) 限定的
リアルタイム対応 なし なし なし なし なし なし
コネクタ Python/コミュニティ製プラグイン ファイルシステム、DB(拡張可能) CSV, Excel, SQL, JSON など CSV, Excel, JSON, SQL, XML ファイル、API、DB CSV, SQL, JSON, HTTP
スケジューリング あり(リトライ・アラート対応) あり(内部スケジューラ) なし なし なし なし
並列処理 あり(Celery, Kubernetes など) あり Pandas の並列オプション程度 なし あり(マルチスレッド) 限定的
適している用途 複雑なパイプラインのオーケストレーション 依存関係のあるタスク管理 データクリーニング・分析・整形 軽量のETL作業 小規模ETL・パイプライン可視化 学術用途・プロトタイプETL
制限 学習コスト高い、リアルタイム不可 UIが基本的、スケールに制限 メモリ内のみで大規模データは難しい スケジューラ・オーケストレーションなし エコシステム小、コミュニティ少 メンテナンスされておらず更新ほぼなし
サポート 活発なコミュニティ、商用サポートあり コミュニティサポート 大規模コミュニティ、豊富なエコシステム 小規模コミュニティ ニッチなコミュニティ 最小限のコミュニティ、更新もほぼなし