Gestion de dbt Projects on Snowflake à l’aide de Snowflake CLI¶
Installer Snowflake CLI avec les fonctions dbt Projects on Snowflake¶
Pour pouvoir installer la version d’avant-première publique de Snowflake CLI qui contient les commandes snow dbt
, vous devez d’abord installer la version 3.9.0 de Snowflake CLI ou une version ultérieure. Pour plus d’informations, voir Installation de Snowflake CLI.
Activer la fonctionnalité dbt Projects on Snowflake dans Snowflake CLI¶
Lors de l’avant-première, vous devez activer les nouvelles commandes snow dbt
à l’aide de l’une des méthodes suivantes :
Définissez la variable d’environnement
SNOWFLAKE_CLI_FEATURES_ENABLE_DBT
:export SNOWFLAKE_CLI_FEATURES_ENABLE_DBT=true
Activez les commandes dans vos fichiers de configuration
config.toml
:[cli.features] enable_dbt = true
Pour vérifier que les commandes sont disponibles, exécutez la commande
snow --help
:snow --help dbt should appear in the list of commands, as shown:
Usage: snow [OPTIONS] COMMAND [ARGS]... Snowflake CLI tool for developers [v3.9.0] ... ╭─ Commands ────────────────────────────────────────── │ app Manages a Snowflake Native App │ │ connection Manages connections to Snowflake. │ │ cortex Provides access to Snowflake Cortex │ │ dbt Manages dbt on Snowflake projects │ │ ... │ ╰─────────────────────────────────────────────────────
Gestion des connexions¶
Snowflake CLI nécessite une connexion opérationnelle pour interagir avec Snowflake. Pour plus d’informations sur la gestion des connexions, voir Gestion des connexions Snowflake.
Commandes Snowflake CLI qui prennent en charge les projets dbt¶
Snowflake CLI fournit les commandes suivantes pour les projets dbt :
snow dbt deploy
snow dbt list
snow dbt execute
Déployer 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 doit spécifier le profil à utiliser.profiles.yml
: Définition de profil de connexion dbt référencée dansdbt_project.yml
.profiles.yaml
doit définir la base de données, le rôle, l’entrepôt et le schéma. Vous pouvez ne pas renseigner les valeurs restantes, comme dans l’exemple suivant :<profile_name>: outputs: dev: account: '' database: <database_name> role: <role_name> schema: <schema_name> type: snowflake user: '' warehouse: <warehouse_name> target: dev
Utilisation¶
snow dbt deploy [--source <path>] [--profiles-dir <path>] [--force] NAME
où :
NAME
est le nom de l’objet du projet dbt.[--source path>
est le chemin du fichierdbt_project.yml
du projet. La valeur par défaut est le répertoire de travail actuel.[--profiles-dir path>
est le chemin du fichier:file:profiles.yml
. S’il n’est pas spécifié, la valeur par défaut est le chemin résolu comme--source
.[--force]
crée un nouvel objet de projet dbt ou met à jour et ajoute une nouvelle version à un objet existant.
Exemples¶
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 remplacez l’objet de projet dbt s’il existe déjà :snow dbt deploy jaffle_shop --force --source /path/to/dbt/directory --profiles-dir ~/.dbt/
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.
Utilisation¶
snow dbt list [--like <string>] [--in <string>]
où :
[--like string]
est un modèle SQL LIKE permettant d’effectuer un filtrage par nom d’objet.[--in string]
spécifie le champ d’application de cette commande.
Exemples¶
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:
product
dont 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.
Utilisation¶
snow dbt execute [snowflake-cli-options] NAME [dbt-command-and-options]
où :
NAME
est le nom de l’objet du projet dbt.[snowflake-cli-options]
représente une liste des options Snowflake CLI, dont les suivantes :--run-async
, qui exécute la commande dbt de manière asynchrone et renvoie immédiatement une requête que vous pouvez utiliser pour suivre sa progressionToute option Snowflake CLI globale, par exemple
--help
ou--connection
[dbt-command-and-options]
est le nom d’une commande dbt et de ses options, telle querun --target dev
.
Exemples¶
Exécutez la commande dbt
test
:snow dbt execute jaffle_shop test
Exécutez la commande dbt
run
de manière asynchrone :snow dbt execute --run-async jaffle_shop run --select @source:snowplow,tag:nightly models/export
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.yml
etprofiles.yml
.Vérifiez que le nom de profil référencé dans
dbt_project.yml
est défini dansprofiles.yml
.Note
Les objets de projet dbt de Snowflake n’ont pas besoin de mots de passe, donc si
profiles.yml
en 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_pipeline
avec 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