Comprendre les objets du projet dbt

Un DBT PROJECT est un objet de niveau schéma qui contient des fichiers sources versionnés pour votre projet dbt dans Snowflake. Vous pouvez connecter un objet de projet dbt à un espace de travail, ou vous pouvez créer et gérer l’objet indépendamment d’un espace de travail.

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.

Pour plus d’informations sur la gestion des versions, consultez Gestion des versions pour les objets et fichiers de projet dbt.

Gestion des versions pour les objets et fichiers de projet dbt

Snowflake conserve les versions des objets de projet dbt et des fichiers de projet correspondants. Vous pouvez utiliser cette gestion des versions pour suivre et gérer les modifications tout au long de votre cycle de vie du développement des données et du déploiement. Snowflake identifie les versions des objets de projet dbt dans la zone de préparation du projet dbt comme indiqué dans l’exemple suivant.

snow://dbt/my_db.my_schema.my_dbt_project_object/versions/version_id

version_id peut être l’un des identificateurs suivants :

  • VERSION$<num> – spécifie un identificateur de version sous la forme VERSION$<num>, où <num> is a positive integer, for example, VERSION$1.

    Le numéro de version commence à 1 lorsque vous créez un objet de projet dbt et augmente de un à chaque nouvelle version de l’objet de projet dbt.

    Snowflake incrémente l’identificateur de version lorsque vous effectuez les tâches suivantes :

    • Redeploy dbt project à partir d’un espace de travail (exécute la commande ALTER avec l’option ADD VERSION).

    • Mettre à jour le projet en utilisant la commande ALTER DBT PROJECT.

    • Exécutez la commande Snow CLI snow dbt deploy avec l’option --force.

    Snowflake réinitialise l’identificateur de version sur 1 et suppriment tous les alias de version lorsque vous exécutez les commandes suivantes :

    • La commande CREATE DBT PROJECT dans SQL avec l’option OR REPLACE.

  • LAST – Indique la version la plus récente de l’objet du projet dbt.

  • FIRST – Indique la version la plus ancienne de l’objet de projet dbt.

  • version_name_alias – Indique un alias de nom de version personnalisée que vous avez créé pour une version spécifique de l’objet de projet dbt en utilisant la commande ALTER DBT PROJECT avec l’option ADD VERSION. Un alias de nom de version correspond toujours à un identificateur de version spécifique, tel que VERSION$3.

Les fichiers de projet stockés dans la zone de préparation de projet dbt sont organisés par version, chaque version ayant son propre sous-répertoire. Par exemple, un objet de projet dbt nommé my_dbt_project_object avec un identificateur de version de VERSION$3 et un fichier de projet dbt nommé dbt_project.yml peut être référencé comme indiqué dans l’exemple suivant :

snow://dbt/my_db.my_schema/my_dbt_project_object/versions/VERSION$3/dbt_project.yml