はじめに
データ変換ツールであるdbtには、SaaS製品のdbtCloudとOSS製品のdbtCoreがあります。
dbtCloudにはコマンドを定期実行するデプロイ機能がありますが、dbtCoreにはありません。
ワークフローツールの選択肢の一つであるDagsterでdbtCoreのコマンドをワークフロー実行するまでの手順を紹介します。
環境
- Dockerコンテナ(python3.9.10 burst)
- Snowflake
- dbtCore
- Dagster
環境構築
先に以下の記事に従ってdbtCoreを使用できるコンテナ環境を構築してください。
https://knowledge.insight-lab.co.jp/bi/-dbtcore-simple-start
Dagster
インストール
dagsterをインストールします。
pip install dagster-dbt dagster-webserver
Pythonバージョンが異なっていたりするとpendulumモジュールが起因となってインストールできないことがあります。3.9以外で行う場合はバージョンを確認してください。 |
dbt用リポジトリのあるフォルダに移動
cd ~/{dbt_project.ymlのあるディレクトリ}
dagsterプロジェクトを作成
dagster-dbt project scaffold --project-name 任意のプロジェクト名
実行するとdagster用のフォルダとファイル群が作成されます。
dagsterプロジェクトに移動します。
cd 任意のプロジェクト名
dagster UIを起動します。
DAGSTER_DBT_PARSE_PROJECT_ON_LOAD=1 dagster dev
|
起動が完了したら、http://127.0.0.1:3000にアクセスできるようになります。
右上の「Materalize all」をクリックすると、dbtプロジェクトがビルドされクエリが実行されます。
※dbtプロジェクト内にある全てのモデルが反映されます。
SnowflakeにはDagsterからの命令で実行されたクエリが実行されています。
おわりに
本記事では、dbt環境にDagsterをインストールし、dbtCoreで作成したモデルをDagsterから実行しました。
DagsterはAssetやOpといった独自の概念を持ち、初めて触る人にとっては学習コストがやや高めですが、公式に様々な学習コンテンツが用意されているので、焦らず学んでいきましょう。