😸
Astronomer Cosmosを活用したETL処理とデータマート構築の一元管理
概要
本記事では、ETL(Extract, Transform, Load)プロセスと、それに続くデータマート構築を一元管理する構成を紹介します。
当初Airflowとdbtを組み合わせた環境を検討しましたが、設定が煩雑で使いづらい構成になっていました。Astronomerが提供するCosmosというパッケージを使うとAirflow と dbt を統合管理してくれるため、より効率的な構成で作成することができます。
リポジトリには以下のURLでアクセスできます。一部セキュリティの観点でpushできていないファイルがありますが、airflowとdbtの設定をそのままディレクトリにコピーし処理を作成することで動作させることができます。
構成
それぞれの役割を模したシーケンス図は次のようになっています。Airflowが各種ETL処理からDBへのインサートまでを、dbtがマートを作成を担当します(sqldefは実装中ですが、本記事に関係ないのでpushしないかもしれません)
プロセス
READMEにも書いてありますが、次の通りです。
- バッチファイルを使用してDockerイメージをビルド、コンテナを起動
- init.shとstart.shスクリプトを実行し、Airflow Webサーバーを起動
- Airflowの管理画面から、定期的なバッチ処理をスケジュールします。各ジョブや依存関係はairflowで実行するのと同じように
airflow-cosmos/airflow/dags
で設定でき、例えば、データベースへのインサート処理は次のようにDAGを作成できます。
Discussion