Comprendre la génération et la personnalisation des schémas¶
dbt utilise la macro par défaut generate_schema_name pour décider où un modèle est créé.
Par défaut, elle utilise votre schéma cible (target.schema) spécifié à partir de votre environnement ou profil dbt. Contrairement au comportement dbt Core, le schéma cible spécifié dans le fichier profiles.yml doit exister avant que vous ne créiez votre projet dbt pour qu’il puisse être compilé ou exécuté avec succès.
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.