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
    
    Copy
  • Activez les commandes dans vos fichiers de configuration config.toml :

    [cli.features]
    enable_dbt = true
    
    Copy
  • 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:
    
    Copy
    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 dans dbt_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
    
    Copy

Utilisation

snow dbt deploy [--source <path>] [--profiles-dir <path>] [--force] NAME
Copy

où :

  • NAME est le nom de l’objet du projet dbt.

  • [--source path> est le chemin du fichier dbt_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
    
    Copy
  • 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/
    
    Copy

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>]
Copy

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
    
    Copy
  • Dressez la liste des objets de projet dbt dans la base de données codenowrap:product dont le nom commence par JAFFLE :

    snow dbt list --like JAFFLE% --in database product
    
    Copy

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]
Copy

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 progression

    • Toute 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 que run --target dev.

Exemples

  • Exécutez la commande dbt test :

    snow dbt execute jaffle_shop test
    
    Copy
  • 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
    
    Copy

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 :

  1. Préparez votre projet dbt :

    1. 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 et profiles.yml.

      • Vérifiez que le nom de profil référencé dans dbt_project.yml est défini dans profiles.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.

  2. Configurez Snowflake CLI GitHub Action.

    Suivez les instructions de configuration de GitHub Action pour Snowflake CLI et vérifiez votre connexion à Snowflake.

  3. 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
    
    Copy