Understand schema generation and customization¶
dbtはデフォルトのマクロ generate_schema_name を使用して、モデルが構築される場所を決定します。
By default, it uses your target schema (target.schema) specified from your dbt environment or profile. Unlike dbt Core behavior, the
target schema specified in the profiles.yml file must already exist in Snowflake before you
deploy your dbt project object.
Otherwise, the project fails to compile or execute.
通常、各開発者は独自のターゲットスキーマ(例: analytics_dev)を持っています。大規模なプロジェクトの場合、カスタムスキーマを設定してモデルをグループ化し、 dbt_project.yml ファイルでスキーマ設定キーを指定することができます。dbtはそれをターゲットスキーマに追加し(例: <target_schema>_<custom_schema>)、中間モデルとユーザー向けモデルを分離されたままにします。
モデルのカスタムスキーマがターゲットスキーマを置き換えることはありません。代わりに、dbtはそれらを組み合わせて競合を回避します。例: analytics_dev_staging。これは、dbtがターゲットスキーマを無視してカスタムスキーマ(このケースでは staging )のみを使用する場合、すべての開発者が同じスキーマに書き込んで、相互に上書きすることになります。
異なる動作(例: カスタムスキーマのみを使用する、先頭にユーザー名を追加する、環境プレフィックスを追加するなど)が必要な場合は、/macros/ の generate_schema_name をオーバーライドして、最終的なスキーマ名の構築方法を変更します。詳細と例については、dbtのドキュメントの Changing the way dbt generates a schema name をご参照ください。