[小ネタ]dbt Projects on Snowflakeでスキーマの作成は自動で行ってくれるかを確かめてみた

[小ネタ]dbt Projects on Snowflakeでスキーマの作成は自動で行ってくれるかを確かめてみた

2025.11.05

さがらです。

小ネタなのですが、dbt Projects on Snowflakeでスキーマの作成は自動で行ってくれるかを確かめてみたのでその内容についてまとめてみます。

背景

dbt Projects on Snowflakeではセットアップ時に下図のように使用するロール・ウェアハウス・データベース・スキーマを選択する必要があり、ここで設定した内容がprofiles.ymldevのtargetとして登録されます。

2025-11-05_11h00_15

2025-11-05_11h10_50

ただ、この方法だと事前にdbtの開発用のスキーマを作成しておかねばならず、dbtでは開発者ごとに専用のスキーマを用意することが一般的であるため、開発者ごとに事前に専用のスキーマを用意するのが手間に感じます。(私はdbt Cloudの経験が長く、dbt Cloudではスキーマ作成権限をロールに付与しておけば自動で開発者ごとのスキーマを作成してくれるため楽に感じていました。)

そのため、「dbt Projects on Snowflakeでも最初は適当なスキーマを設定して、後でprofiles.ymlで指定したスキーマでdbt runなど実行した時に自動でスキーマも作成してくれないかな…」と感じたので、本記事の検証に至りました。

やってみた

まず、対象のデータベースにスキーマ作成権限を持つロールを指定した上で、対象のデータベースと、適当なスキーマを選択してdbt Projectをセットアップします。

2025-11-05_11h08_35

このあと、profiles.ymlを開き、schema名をまだ存在していないdev_created_by_dbtとします。

2025-11-05_11h14_58

この上で、dbt runを実行してサンプルの.sqlファイルからテーブルとビューを生成を試みます。

2025-11-05_11h16_14

すると、スキーマが見つからず、エラーとなりました。 つまり、現時点でのdbt Projects on Snowflakeでは存在しないスキーマをprofiles.ymlで指定して自動でスキーマを作ることはできないということになります。

2025-11-05_11h27_03

最後に

簡素ではありますが、dbt Projects on Snowflakeでスキーマの作成は自動で行ってくれるかを確かめてみたのでその内容についてまとめてみました。

dbt Projects on Snowflakeで使用するスキーマは事前に作成しておこう!ということがよくわかりました。

この記事をシェアする

FacebookHatena blogX

関連記事