Understand schema generation and customization

dbt utilise la macro par défaut generate_schema_name pour décider où un modèle est créé.

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.

En règle générale, chaque développeur dispose de son propre schéma cible, par exemple analytics_dev. Pour les projets plus importants, vous pouvez définir un schéma personnalisé pour regrouper les modèles et spécifier la clé de configuration du schéma dans votre fichier dbt_project.yml. dbt l’ajoute au schéma cible (par exemple, <target_schema>_<custom_schema>) pour séparer les modèles intermédiaires et orientés utilisateur.

--Models in `models/tasty_bytes/ will be built in the "*_staging" schema
models:
  tasty_bytes:
      +schema: staging

Le schéma personnalisé d’un modèle ne remplace pas le schéma cible ; dbt les combine plutôt pour éviter les collisions. Par exemple, analytics_dev_staging. En effet, si dbt ignorait le schéma cible et n’utilisait que le schéma personnalisé (dans ce cas, staging), tous les développeurs écriront dans le même schéma et écraseront les modifications les uns des autres.

Si vous souhaitez un comportement différent (par exemple, utiliser uniquement le schéma personnalisé, ajouter des noms d’utilisateurs, ajouter des préfixes d’environnement, etc.), remplacez generate_schema_name dans /macros/ pour modifier la façon dont le nom final du schéma est construit. Pour plus d’informations et d’exemples, voir Modification de la façon dont dbt génère un nom de schéma dans la documentation dbt.