スキーマ生成とカスタマイズについて¶
dbtはデフォルトのマクロ generate_schema_name を使用して、モデルが構築される場所を決定します。
デフォルトでは、dbt環境またはプロファイルから指定されたターゲットスキーマ(target.schema)を使用します。dbt Coreの動作とは異なり、 profiles.yml ファイルで指定されたターゲットスキーマは、正常にコンパイルまたは実行するためには、dbtプロジェクトを作成する前に存在している必要があります。
通常、各開発者は独自のターゲットスキーマ(例: analytics_dev)を持っています。大規模なプロジェクトの場合、カスタムスキーマを設定してモデルをグループ化し、 dbt_project.yml ファイルでスキーマ設定キーを指定することができます。dbtはそれをターゲットスキーマに追加し(例: <target_schema>_<custom_schema>)、中間モデルとユーザー向けモデルを分離されたままにします。
--Models in `models/tasty_bytes/ will be built in the "*_staging" schema
models:
tasty_bytes:
+schema: staging
モデルのカスタムスキーマがターゲットスキーマを置き換えることはありません。代わりに、dbtはそれらを組み合わせて競合を回避します。例: analytics_dev_staging。これは、dbtがターゲットスキーマを無視してカスタムスキーマ(このケースでは staging )のみを使用する場合、すべての開発者が同じスキーマに書き込んで、相互に上書きすることになります。
異なる動作(例: カスタムスキーマのみを使用する、先頭にユーザー名を追加する、環境プレフィックスを追加するなど)が必要な場合は、/macros/ の generate_schema_name をオーバーライドして、最終的なスキーマ名の構築方法を変更します。詳細と例については、dbtのドキュメントの Changing the way dbt generates a schema name をご参照ください。