[小ネタ]dbt Projects on Snowflakeで--varsフラグを用いてユーザーごとの開発用スキーマを動的に指定してみた

[小ネタ]dbt Projects on Snowflakeで--varsフラグを用いてユーザーごとの開発用スキーマを動的に指定してみた

2025.08.13

さがらです。

dbt Projects on Snowflakeではdbt Coreをベースとしたdbtの開発がSnowflake内で行えますが、チーム開発をしようと考えたときに「環境変数が定義できないWorkspaceの環境で、開発用のスキーマをどうユーザーごとに定義するんだ?」とふと疑問が浮かびました。

この解決策として、--varsフラグを用いてユーザーごとの開発用スキーマを動的に指定してみたので、その内容をまとめてみます。

https://docs.getdbt.com/docs/build/project-variables

--varsフラグを用いてユーザーごとの開発用スキーマを動的に指定

やることは以下の2つだけです!

1つ目として、profiles.ymlで開発用のtargetに対してschema: "{{ var('dev_schema') }}"と定義します。(変数名はdev_schemaでなくても問題ありません。)

これはリポジトリで管理するファイルのため、一度だけ設定すればOKです。

snowflake_sagara:
  target: dev
  outputs:
    dev:
      type: snowflake
      role: SAGARA_ADMIN_ROLE
      warehouse: SAGARA_DBT_DEV_WH
      database: SAGARA_DBT_DEMO_DB
      schema: "{{ var('dev_schema') }}"
      account: ''
      user: ''

2つ目として、各ユーザーのWorkspace内で対象のdbt projectを開いた状態で、再生ボタンの横の設定から、Execute with defaultsのトグルを無効化し、--vars '{"dev_schema": "dbt_ssagara"}'と入力します。このdbt_ssagaraのところに、ユーザー専用のスキーマ名を入れます。

注意点として、RunBuildなど各コマンドごとにこの設定を追加する必要があります。また、こちらの設定はユーザーごとに設定が必要ですのでご注意ください。

2025-08-13_13h53_37

この状態でdbtコマンドを実行すると、--vars \'{"dev_schema": "dbt_ssagara"}というフラグが付いて実行されます。また、出力先のスキーマには指定したdbt_ssagaraが入っていることがわかります。

2025-08-13_14h01_56

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.