Déployer des objets de projet dbt¶
Dans dbt Projects on Snowflake, déployer un objet de projet dbt signifie copier votre code de projet dbt dans Snowflake pour créer l’objet ou le mettre à jour avec une nouvelle version. Pour ce faire, vous devez utiliser l’Snowsight, les commandes SQL CREATE DBT PROJECT ou ALTER DBT PROJECT, ou la commande snow dbt deploy dans la CLI de Snowflake.
Déployer un objet de projet dbt à l’aide de Snowsight¶
Le déploiement d‘un objet de projet dbt dans Snowsight récupère le code dbt dans votre espace de travail et crée un nouveau projet dbt ou met à jour un projet dbt existant.
Pour déployer un objet de projet dbt dans Snowsight, exécutez la commande dbt deps, puis suivez les étapes suivantes :
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez Projects » Workspaces.
Dans le menu Workspaces, sélectionnez l’espace de travail qui contient votre projet dbt.
Vérifiez que vos fichiers dbt sont au bon endroit.
Pour vérifier que tout fonctionne correctement, exécutez la commande
dbt compile,dbt runou dbt build, comme suit :Sous l’éditeur d’espace de travail, ouvrez l’onglet Output pour que vous puissiez voir stdout après avoir exécuté des commandes dbt à partir de l’espace de travail.
Dans la barre de menu au-dessus de l’éditeur d’espace de travail, vérifiez que le bon Project et le bon Profile sont sélectionnés.
Dans la liste de commandes, sélectionnez dbt compile,
dbt runou dbt build, puis cliquez sur le bouton d’exécution. Cette étape analyse votre projet.
Dans le coin supérieur droit de votre espace de travail, sélectionnez Connect, puis sélectionnez l’un des éléments suivants :
Deploy dbt project pour vous connecter à un nouveau projet dbt. Lors du premier déploiement, cela crée un objet de projet dbt au niveau du schéma.
:Existing dbt deployment pour vous connecter à un projet dbt existant. Le déploiement ajoute une nouvelle version à l’objet de projet dbt existant (équivalent à
ALTER DBT PROJECT … ADD VERSION FROM 'snow://workspace/…/versions/last').
Dans la fenêtre contextuelle Deploy dbt project, sélectionnez les éléments suivants :
Sous Select location, sélectionnez votre base de données et votre schéma.
Sous Select or Create dbt projecr, sélectionnez Create dbt project.
Saisissez un nom et une description.
En option, saisissez une cible par défaut pour choisir le profil qui sera utilisé pour la compilation et les exécutions suivantes (par exemple, prod). La cible d‘un projet dbt peut toujours être remplacée par
--targetdansARGS.En option, sélectionnez Run dbt deps, puis sélectionnez votre intégration d’accès externe pour exécuter
dbt depsautomatiquement pendant le déploiement.
Sélectionnez Deploy.
L’onglet Output affiche la commande s’exécutant sur Snowflake, qui est similaire à l’exemple suivant :
CREATE DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project FROM 'snow://workspace/mydb.my_dbt_projects_schema.sales_model/versions/version$2' EXTERNAL_ACCESS_INTEGRATIONS = ();
my_dbt_project successfully created.Le menu Connect affiche maintenant le nom de l’objet de projet dbt que vous avez créé, avec les options suivantes :
Redeploy dbt project : Met à jour l’objet de projet dbt avec la version actuelle de l’espace de travail du projet en utilisant ALTER. Cela incrémente la version de l’objet de projet dbt par un. Pour plus d’informations, voir Gestion des versions pour les objets et fichiers de projet dbt.
Disconnect : Déconnecte l’espace de travail de l’objet de projet dbt, mais ne supprime pas l’objet de projet dbt.
Edit project : Met à jour le commentaire, la cible par défaut et l’intégration d’accès externe pour l‘objet de projet dbt.
View project : Ouvre l’objet de projet dbt dans l’explorateur d’objets, où vous pouvez voir la commande CREATE DBT PROJECT pour l’objet de projet dbt et l’historique d’exécution du projet.
Create schedule : Fournit des options pour vous permettre de créer une tâche qui exécute l’objet de projet dbt selon une planification. Pour plus d’informations, voir Créer une tâche pour planifier l’exécution d’un projet dbt.
View schedules : Ouvre une liste de planifications (tâches) qui exécutent l’objet de projet dbt, avec la possibilité d’afficher les détails des tâches dans l’explorateur d’objets.
En option, confirmez l’existence de votre projet dbt en exécutant la commande SHOW DBT PROJECTS dans une feuille de calcul, par exemple :
SHOW DBT PROJECTS IN DATABASE mydb;
Déployer un objet de projet dbt à l’aide de commandes SQL¶
Les commandes CREATE DBT PROJECT et ALTER DBT PROJECT copient les fichiers spécifiés dans la clause FROM de l’instruction pour créer et ajouter de nouvelles versions à un objet de projet dbt, respectivement.
La commande CREATE DBT PROJECT crée un nouvel objet avec une seule version initiale (par exemple, VERSION$1), comme illustré ci-dessous.
CREATE DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project
FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main'
DEFAULT_TARGET = 'prod'
EXTERNAL_ACCESS_INTEGRATIONS = my_dbt_ext_access
COMMENT = 'Generates sales data models.';
La commande ALTER DBT PROJECT crée une nouvelle version dans l’objet existant avec un numéro de version unique et incrémenté (par exemple, VERSION$2, VERSION$3, etc.).
-- Update the Git repository object to fetch the latest code
ALTER GIT REPOSITORY sales_db.integrations_schema.sales_dbt_git_stage FETCH;
-- Add a new version to the dbt project object based on the updated Git repository object
ALTER DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project
ADD VERSION
FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_project';
Déployer un objet de projet dbt à l’aide de Snowflake CLI¶
La commande snow dbt deploy charge des fichiers locaux dans une zone de préparation temporaire et crée un nouvel objet de projet dbt, le met à jour en produisant une nouvelle version, ou le recrée complètement. Un projet dbt valide doit contenir deux fichiers :
dbt_project.yml: Un fichier de configuration dbt standard qui spécifie le profil à utiliser.profiles.yml: Une définition du profil de connexion dbt référencée dansdbt_project.yml.profiles.yamldoit définir la base de données, le rôle, le schéma et le type.Par défaut, dbt Projects on Snowflake utilise votre schéma cible (
target.schema) spécifié à partir de votre environnement dbt ou de votre profil dbt. Contrairement au comportement dbt Core, le schéma cible spécifié dans le fichierprofiles.ymldoit exister avant que vous ne créiez votre projet dbt pour qu’il puisse être correctement compilé ou exécuté.
<profile_name>: target: dev outputs: dev: database: <database_name> role: <role_name> schema: <schema_name> type: snowflake
Les exemples suivants montrent comment utiliser la commande déploiement snow dbt :
Déployez un objet de projet dbt nommé
jaffle_shop:snow dbt deploy jaffle_shop
Déployez un projet nommé
jaffle_shopà partir d’un répertoire spécifié et créez ou ajoutez une nouvelle version selon que l’objet de projet dbt existe déjà ou non :snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --force
Déployez un projet nommé
jaffle_shopà partir d’un répertoire spécifié en utilisant un répertoire de profils personnalisés et en activant des intégrations d’accès externes :snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --default-target dev --external-access-integration dbthub-integration --external-access-integration github-integration --force
Emplacements des fichiers sources¶
Les fichiers sources du projet dbt peuvent se trouver à l’un des emplacements suivants :
Une zone de préparation de référentiel Git, par exemple :
'@my_db.my_schema.my_git_repository_stage/branches/my_branch/path/to/dbt_project_or_projects_parent'Pour plus d’informations sur la création d’un objet de référentiel Git dans Snowflake qui connecte un référentiel Git à un espace de travail pour dbt Projects on Snowflake, voir Créer un espace de travail connecté à votre dépôt Git. Pour plus d’informations sur la création et la gestion d’un objet de référentiel Git et d’une zone de préparation sans utiliser d’espace de travail, voir Utilisation d’un référentiel Git dans Snowflake et CREATE GIT REPOSITORY.
Une zone de préparation de projet dbt existante, par exemple :
'snow://dbt/my_db.my_schema.my_existing_dbt_project_object/versions/last'Le spécificateur de version est obligatoire et peut être
last(comme dans l’exemple précédent),firstou le spécificateur de toute version existante sous la formeversion$<nb>. Pour plus d’informations, voir Gestion des versions pour les objets et fichiers de projet dbt.Une zone de préparation interne nommée, par exemple :
'@my_db.my_schema.my_internal_named_stage/path/to/dbt_projects_or_projects_parent'Les zones de préparation d’utilisateur internes et les zones de préparation de table ne sont pas prises en charge.
Un espace de travail pour dbt sur Snowflake, par exemple :
'snow://workspace/user$.public."my_workspace_name"/versions/live/path/to/dbt_projects_or_projects_parent'Il est recommandé de mettre le nom de l’espace de travail entre guillemets doubles, car les noms d’espace de travail sont sensibles à la casse et peuvent contenir des caractères spéciaux.
Le spécificateur de version est obligatoire et peut être
last,first,liveou le spécificateur de toute version existante sous la formeversion$<nb>. Pour plus d’informations, voir Gestion des versions pour les objets et fichiers de projet dbt.