0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

dbtAdvent Calendar 2024

Day 24

Snowflake×dbt×dagsterをサクッと試す

Posted at

スクリーンショット 2024-10-24 19.37.40.png

はじめに

データパイプラインの構築において、SnowflakedbtDagsterを組み合わせることで、効率的なワークフローを実現できます。本記事では、jaffle_shopというサンプルプロジェクトを使用して、dbtのセットアップからDagsterを使ったオーケストレーションのプロセスまでを簡単に解説します。dbt環境は既にDocker上に立ち上げられている前提です。

ステップ1:jaffle_shopプロジェクトをクローン

まず、サンプルプロジェクトjaffle_shopをクローンします。
jaffle_shopのリポジトリ

git clone https://github.com/dbt-labs/jaffle_shop.git
cd jaffle_shop

このプロジェクトには、dbtを使用した基本的なデータモデルが含まれています。本来のプロジェクトでは実際にSQLなどを記述してデータ変換を定義しますが、今回はすでに記述済みのもので実行します。

ステップ2:Snowflakeへの接続

プロジェクトをクローンしたら、次に接続設定を確認します。ルートの.dbt配下のprofile.ymlに接続情報を入れるとdbt側が情報を認識してくれます。

jaffle_shop:
  outputs:
    dev:
      account: 'アカウント情報'
      database: '使用するデータベース'
      password: 'パスワード'
      role: '使用するロール'
      schema: '使用するスキーマ'
      threads: 1  # 同時実行するスレッド数
      type: snowflake
      user: 'Snowflakeユーザー'
      warehouse: '使用するウェアハウス'
  target: dev

スクリーンショット 2024-10-24 19.25.01.png

dbt環境が正しく設定されているかを確認するために、次のコマンドを実行します。

dbt debug

dbt debugにより、Snowflakeとの接続が正しく確立されているかが確認できます。すべてのテストがパスすれば、dbtプロジェクトは正常に動作していることが確認できます。

ステップ3:Dagsterプロジェクトの作成

次に、jaffle_shopプロジェクト内でDagsterプロジェクトを設定し、データパイプラインのオーケストレーションを行います。

まず、dbtのプロジェクトディレクトリに移動し、Dagsterプロジェクトを作成します。

cd jaffle_shop
dagster-dbt project scaffold --project-name dbt_dagster

このコマンドにより、Dagsterの構成とdbtの設定が組み合わされ、dbtモデルを実行するためのDagsterプロジェクトが作成されます。
スクリーンショット 2024-10-24 19.28.27.png

ステップ4:Dagsterでの実行

次に、Dagsterを開発モードで起動し、Webインターフェースを通じてパイプラインを管理・実行します。
作成したDagsterプロジェクトディレクトリdbt_dagsterに移動します。

cd dbt_dagster

まず、DAGSTER_DBT_PARSE_PROJECT_ON_LOADという環境変数を設定します。これにより、Dagsterdbtプロジェクトをロード時に解析します。

export DAGSTER_DBT_PARSE_PROJECT_ON_LOAD=1

次に、Dagsterを開発モードで起動します。

dagster dev

ブラウザでlocalhost:3000にアクセスすると、DagsterのUIが開きます。UI上でMaterialize allボタンをクリックすることで、すべてのdbtモデルをビルドしてマテリアライズします。これによりseedに入っているcsvがsnowflakeへロードされ、modelsで記述された実行順序に基づいてデータの変換及びテーブル作成が行われます。
スクリーンショット 2024-10-24 18.53.55.png
マテリアライズが全て成功すると✅がつきます。
Snowflake側でも、テーブルが作られていることが確認できます。
スクリーンショット 2024-10-24 19.19.38.png

まとめ

この手順により、SnowflakedbtDagsterを組み合わせて、データパイプラインのオーケストレーションを素早く試すことができました。jaffle_shopプロジェクトを利用することで、シンプルかつ実用的なデータモデルの操作を行い、Dagsterのパイプライン管理を通じて一連の処理を自動化できました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?