[小ネタ]dbt Projects on Snowflakeでスキーマの作成は自動で行ってくれるかを確かめてみた
さがらです。
小ネタなのですが、dbt Projects on Snowflakeでスキーマの作成は自動で行ってくれるかを確かめてみたのでその内容についてまとめてみます。
背景
dbt Projects on Snowflakeではセットアップ時に下図のように使用するロール・ウェアハウス・データベース・スキーマを選択する必要があり、ここで設定した内容がprofiles.ymlのdevのtargetとして登録されます。


ただ、この方法だと事前にdbtの開発用のスキーマを作成しておかねばならず、dbtでは開発者ごとに専用のスキーマを用意することが一般的であるため、開発者ごとに事前に専用のスキーマを用意するのが手間に感じます。(私はdbt Cloudの経験が長く、dbt Cloudではスキーマ作成権限をロールに付与しておけば自動で開発者ごとのスキーマを作成してくれるため楽に感じていました。)
そのため、「dbt Projects on Snowflakeでも最初は適当なスキーマを設定して、後でprofiles.ymlで指定したスキーマでdbt runなど実行した時に自動でスキーマも作成してくれないかな…」と感じたので、本記事の検証に至りました。
やってみた
まず、対象のデータベースにスキーマ作成権限を持つロールを指定した上で、対象のデータベースと、適当なスキーマを選択してdbt Projectをセットアップします。

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

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

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

最後に
簡素ではありますが、dbt Projects on Snowflakeでスキーマの作成は自動で行ってくれるかを確かめてみたのでその内容についてまとめてみました。
dbt Projects on Snowflakeで使用するスキーマは事前に作成しておこう!ということがよくわかりました。






