😸

Astronomer Cosmosを活用したETL処理とデータマート構築の一元管理

2024/07/28に公開

概要

本記事では、ETL(Extract, Transform, Load)プロセスと、それに続くデータマート構築を一元管理する構成を紹介します。
当初Airflowとdbtを組み合わせた環境を検討しましたが、設定が煩雑で使いづらい構成になっていました。Astronomerが提供するCosmosというパッケージを使うとAirflow と dbt を統合管理してくれるため、より効率的な構成で作成することができます。

リポジトリには以下のURLでアクセスできます。一部セキュリティの観点でpushできていないファイルがありますが、airflowとdbtの設定をそのままディレクトリにコピーし処理を作成することで動作させることができます。

https://github.com/hayato540101/airflow-cosmos

構成

それぞれの役割を模したシーケンス図は次のようになっています。Airflowが各種ETL処理からDBへのインサートまでを、dbtがマートを作成を担当します(sqldefは実装中ですが、本記事に関係ないのでpushしないかもしれません)

プロセス

READMEにも書いてありますが、次の通りです。

  • バッチファイルを使用してDockerイメージをビルド、コンテナを起動
  • init.shとstart.shスクリプトを実行し、Airflow Webサーバーを起動
  • Airflowの管理画面から、定期的なバッチ処理をスケジュールします。各ジョブや依存関係はairflowで実行するのと同じようにairflow-cosmos/airflow/dagsで設定でき、例えば、データベースへのインサート処理は次のようにDAGを作成できます。

Discussion