Understand dbt project objects

A DBT PROJECT is a schema-level object that contains versioned source files for your dbt project in Snowflake. You can connect a dbt project object to a workspace, or you can create and manage the object independently of a workspace.

Un objet de projet dbt est généralement basé sur un répertoire de projet dbt qui contient un fichier dbt-project.yml. C’est le modèle que Snowflake utilise lorsque vous déployez (créez) un objet de projet dbt à partir d’un espace de travail.

Les objets de projet dbt prennent en charge le contrôle d’accès basé sur les rôles (RBAC). Vous pouvez CREATE, ALTER et DROP des objets de projet dbt comme les autres objets de niveau schéma dans Snowflake. Vous pouvez utiliser la commande EXECUTE DBT PROJECT à partir d’un entrepôt Snowflake pour exécuter des commandes dbt comme test et run. Vous pouvez également utiliser tâches pour planifier l’exécution de ces commandes.

Comment les objets du projet dbt sont mis à jour

Les objets de projet dbt ne se mettent pas automatiquement à jour lorsque vous modifiez l’espace de travail ; vous devez déployer (c’est-à-dire ajouter une nouvelle version) chaque fois que vous voulez que l’objet prenne en compte les modifications de code.

Pour créer un pipeline de production, nous vous recommandons de créer un objet de projet dbt et de planifier son exécution avec une tâche. Comme chaque version d’objet d’un projet dbt est immuable, cela garantit qu’aucun changement ne sera apporté entre les exécutions, à moins que quelqu’un n’ajoute explicitement une nouvelle version.

Pour mettre à jour les fichiers du projet dbt, vous devez ajouter une nouvelle version dans un espace de travail, par exemple :

ALTER DBT PROJECT testdbt.public.my_dbt_project_object
  ADD VERSION FROM 'snow://workspace/user$.public."all_my_dbt_projects"/versions/last';
Copy

Si votre projet dbt est soutenu par Git et que vous souhaitez automatiser vos tests et votre déploiement, exécutez la commande Snow CLI snow dbt deploy avec l’option --force, comme indiqué dans l’exemple suivant :

snow dbt deploy --source 'snow://workspace/user$.public."all_my_dbt_projects"/versions/last'  --force my_dbt_project;
Copy

--force vous permet d’ajouter une version ; sans celle-ci, ce serait l’équivalent de l’exécution de CREATE DBT PROJECT sur un objet déjà créé, ce qui échouerait.

For more information about versioning, see Gestion des versions pour les objets et fichiers de projet dbt.