Gestion de dbt Projects on Snowflake à l’aide de Snowflake CLI¶
Note
Les fonctionnalités dbt Projects on Snowflake dans Snowflake CLI ne sont disponibles que dans la version 3.13.0 ou ultérieure.
Vous pouvez utiliser Snowflake CLI pour gérer des projets dbt avec les opérations suivantes :
Déploiement d’un objet de projet dbt¶
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: 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 snow dbt deploy :
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
Répertorier tous les objets de projet dbt disponibles¶
La commande snow dbt list répertorie tous les objets de projet dbt disponibles sur Snowflake.
Les exemples suivants illustrent l’utilisation de la commande snow dbt list :
Dressez la liste de tous les objets de projet dbt disponibles :
snow dbt list
Dressez la liste des objets de projet dbt dans la base de données codenowrap:
productdont le nom commence parJAFFLE:snow dbt list --like JAFFLE% --in database product
Exécuter une commande d’objet de projet dbt¶
La commande snow dbt execute exécute l’une des commandes dbt suivantes sur un objet de projet dbt Snowflake :
Pour plus d’informations sur l’utilisation des commandes dbt, voir Référentiel des commandes dbt.
Les exemples suivants illustrent l’utilisation de la commande snow dbt execute :
Exécutez la commande dbt
test:snow dbt execute jaffle_shop test
Exécutez la commande dbt
runde manière asynchrone :snow dbt execute --run-async jaffle_shop run --select @source:snowplow,tag:nightly models/export
Décrire un objet de projet dbt¶
La commande snow dbt describe décrit un objet de projet dbt sur Snowflake.
L’exemple suivant décrit l’objet de projet dbt nommé my_dbt_project sur Snowflake :
snow dbt describe my_dbt_project
Supprimer un objet de projet dbt¶
La commande snow dbt drop supprime un objet de projet dbt sur Snowflake.
L’exemple suivant supprime l’objet de projet dbt nommé my_dbt_project sur Snowflake :
snow dbt drop my_dbt_project
Utilisation des commandes snow dbt dans un workflow CI/CD¶
Note
Pour créer des workflows CI/CD, vous n’avez besoin que de votre serveur git, tel que Github, et de Snowflake CLI. Un objet de dépôt Git n’est pas nécessaire.
Vous pouvez exécuter des commandes dbt avec Snowflake CLI pour créer des pipelines CI/CD. Ces pipelines sont généralement utilisés pour tester un nouveau code, par exemple de nouvelles pull requests, ou pour mettre à jour les applications de production chaque fois que quelque chose est fusionné avec la branche principale.
Pour créer un workflow CI/CD avec les commandes snow dbt, suivez les étapes ci-dessous :
Préparez votre projet dbt :
Téléchargez votre projet dbt ou démarrez-en un nouveau.
Assurez-vous que le répertoire principal du projet contient les fichiers
dbt_project.ymletprofiles.yml.Vérifiez que le nom de profil référencé dans
dbt_project.ymlest défini dansprofiles.yml.Note
Les objets de projet dbt de Snowflake n’ont pas besoin de mots de passe, donc si
profiles.ymlen contient, le déploiement s’arrête jusqu’à ce qu’ils soient supprimés.
Configurez Snowflake CLI GitHub Action.
Suivez les instructions de configuration de GitHub Action pour Snowflake CLI et vérifiez votre connexion à Snowflake.
Définissez votre workflow.
Déterminez les commandes que votre workflow doit exécuter en fonction des besoins de votre organisation. L’exemple suivant illustre un workflow CI qui met à jour la version de l’objet du projet dbt nommé
product_pipelineavec de nouveaux fichiers, exécute les transformations, et effectue des tests pour finir :- name: Execute Snowflake CLI command run: | snow dbt deploy product_pipeline snow dbt execute product_pipeline run snow dbt execute product_pipeline test