Gestion de dbt Projects on Snowflake à l’aide de Snowflake CLI

Note

The dbt Projects on Snowflake features in Snowflake CLI are available only in version 3.13.0 or later.

You can use Snowflake CLI to manage dbt projects with the following operations:

Deploying a dbt project object

The snow dbt deploy command uploads local files to a temporary stage and creates a new dbt project object, updates it by making a new version, or completely recreates it. A valid dbt project must contain two files:

  • dbt_project.yml: A standard dbt configuration file that specifies the profile to use.

  • profiles.yml: A dbt connection profile definition referenced in dbt_project.yml. profiles.yaml must define the database, role, schema, and type.

    • By default, dbt Projects on Snowflake uses your target schema (target.schema) specified from your dbt environment or profile. Unlike dbt Core behavior, the target schema specified in the profiles.yml file must exist before you create your dbt Project in order for it to compile or execute successfully.

    <profile_name>:
    target: dev
    outputs:
      dev:
        database: <database_name>
        role: <role_name>
        schema: <schema_name>
        type: snowflake
    
    Copy

The following examples illustrate how to use the snow dbt deploy command:

  • Déployez un objet de projet dbt nommé jaffle_shop :

    snow dbt deploy jaffle_shop
    
    Copy
  • Deploy a project named jaffle_shop from a specified directory and create or add a new version depending on whether the dbt project object already exists:

    snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --force
    
    Copy
  • Deploy a project named jaffle_shop from a specified directory using a custom profiles directory and enabling external access integrations:

    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
    
    Copy

Listing all available dbt project objects

The snow dbt list command lists all available dbt project objects on Snowflake.

The following examples illustrate how to use the snow dbt list command:

  • 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

Executing a dbt project object command

The snow dbt execute command executes one of the following dbt commands on a Snowflake dbt project object:

Pour plus d’informations sur l’utilisation des commandes dbt, voir Référentiel des commandes dbt.

The following examples illustrate how to use the snow dbt execute command:

  • 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

Describing a dbt project object

The snow dbt describe command describes a dbt project object on Snowflake.

The following example describes the dbt project object named my_dbt_project on Snowflake:

snow dbt describe my_dbt_project
Copy

Dropping a dbt project object

The snow dbt drop command deletes a dbt project object on Snowflake.

The following example deletes the dbt project object named my_dbt_project on Snowflake:

snow dbt drop my_dbt_project
Copy

Use snow dbt commands in a CI/CD workflow

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