BI LAB データ活用研究所 - INSIGHT LAB

【dagster】環境構築からモデル実行までをシンプルにやってみる(dbtCore+Snowflake)

作成者: uta|2023年12月29日

はじめに

データ変換ツールである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

 

 
⚠️ 以下のエラーが発生する場合

ERROR: Failed building wheel for pendulum
Failed to build pendulum
ERROR: Could not build wheels for pendulum, which is required to install pyproject.toml-based projects

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


 ⚠️ dagsterディレクトリで実行しないと以下のエラーが発生します。

Error: No arguments given and no [tool.dagster] block in pyproject.toml found.

 

起動が完了したら、http://127.0.0.1:3000にアクセスできるようになります。

 

右上の「Materalize all」をクリックすると、dbtプロジェクトがビルドされクエリが実行されます。

※dbtプロジェクト内にある全てのモデルが反映されます。

 

SnowflakeにはDagsterからの命令で実行されたクエリが実行されています。

 

おわりに

本記事では、dbt環境にDagsterをインストールし、dbtCoreで作成したモデルをDagsterから実行しました。

DagsterはAssetやOpといった独自の概念を持ち、初めて触る人にとっては学習コストがやや高めですが、公式に様々な学習コンテンツが用意されているので、焦らず学んでいきましょう。