Verwalten von dbt Projects on Snowflake mit Snowflake CLI

Installieren von Snowflake CLI mit dbt Projects on Snowflake-Features

Um die öffentliche Vorschau von Snowflake CLI zu installieren, die die snow dbt-Befehle enthält, müssen Sie zuerst Snowflake CLI ab Version 3.9.0 installieren. Weitere Informationen dazu finden Sie unter Installieren von Snowflake CLI.

Aktivieren des dbt Projects on Snowflake-Features in Snowflake CLI

Während der Vorschau müssen Sie die neuen snow dbt-Befehle mit einer der folgenden Methoden aktivieren:

  • Legen Sie die Umgebungsvariable SNOWFLAKE_CLI_FEATURES_ENABLE_DBT fest:

    export SNOWFLAKE_CLI_FEATURES_ENABLE_DBT=true
    
    Copy
  • Aktivieren Sie die Befehle in Ihren config.toml-Konfigurationsdateien:

    [cli.features]
    enable_dbt = true
    
    Copy
  • Welche Befehle verfügbar sind, können Sie mit dem Befehl snow --help ermitteln:

     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     │
    │ ...                                                │
    ╰─────────────────────────────────────────────────────
    

Verbindungsmanagement

Die Snowflake-CLI erfordert eine funktionierende -Verbindung für die Interaktion mit Snowflake. Informationen zum Verwalten von Verbindungen finden Sie unter Verwalten von Snowflake-Verbindungen.

Snowflake CLI-Befehle, die dbt-Projekte unterstützen

Snowflake CLI bietet die folgenden Befehle für dbt-Projekte:

  • snow dbt deploy

  • snow dbt list

  • snow dbt execute

Bereitstellen eines dbt-Projektobjekts

Mit dem Befehl snow dbt deploy werden lokale Dateien in einen temporären Stagingbereich hochgeladen. Es wird ein neues dbt-Projektobjekt erstellt, ein vorhandenes durch Erstellen einer neuen Version aktualisiert oder ein Objekt vollständig neu erstellt. Ein gültiges dbt-Projekt muss zwei Dateien enthalten:

  • dbt_project.yml: Standard-dbt-Konfigurationsdatei, die das zu verwendende Profil angeben muss.

  • profiles.yml: Eine Definition des dbt-Verbindungsprofils, auf die in dbt_project.yml verwiesen wird. In profiles.yaml müssen die Datenbank, die Rolle, das Warehouse und das Schema definiert werden. Sie können die restlichen Werte leer lassen, wie im folgenden Beispiel:

    <profile_name>:
    outputs:
      dev:
        account: ''
        database: <database_name>
        role: <role_name>
        schema: <schema_name>
        type: snowflake
        user: ''
        warehouse: <warehouse_name>
    target: dev
    
    Copy

Verwendung

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

Wobei:

  • NAME ist der Name des dbt-Projektobjekts.

  • [--source path> ist der Pfad zur dbt_project.yml-Datei des Projekts. Standardmäßig wird das aktuelle Verzeichnis als Arbeitsverzeichnis verwendet.

  • [--profiles-dir path> ist der Pfad der profiles.yml-Datei Wenn nicht angegeben, wird standardmäßig der Pfad verwendet, der als --source aufgelöst wird.

  • [--force] Erstellt ein neues dbt-Projektobjekt oder aktualisiert eine bestehende Version und fügt damit eine neue Version hinzu.

Beispiele

  • Stellen Sie das dbt-Projektobjekt jaffle_shop bereit:

    snow dbt deploy jaffle_shop
    
    Copy
  • Stellen Sie das Projekt jaffle_shop aus einem bestimmten Verzeichnis bereit und überschreiben Sie ein eventuell bereits vorhandenes dbt-Projektobjekt:

    snow dbt deploy jaffle_shop --force --source /path/to/dbt/directory --profiles-dir ~/.dbt/
    
    Copy

Auflisten aller verfügbaren dbt-Projektobjekte

Der Befehl snow dbt list listet alle verfügbaren dbt-Projektobjekte in Snowflake auf.

Verwendung

snow dbt list [--like <string>] [--in <string>]
Copy

Wobei:

  • [--like string] ist ein SQL-LIKE-Muster zum Filtern nach Objektnamen.

  • [--in string] gibt den Geltungsbereich dieses Befehls an.

Beispiele

  • So listen Sie alle verfügbaren dbt-Projektobjekte auf:

    snow dbt list
    
    Copy
  • So listen Sie dbt-Projektobjekte in der product-Datenbank auf, deren Namen mit JAFFLE beginnen:

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

Ausführen eines Befehls für dbt-Projektobjekte

Mit dem Befehl snow dbt execute wird einer der folgenden dbt-Befehle für ein Snowflake-dbt-Projektobjekt ausgeführt:

Weitere Informationen zur Verwendung von dbt-Befehlen finden Sie in der dbt-Befehlsreferenz.

Verwendung

snow dbt execute [snowflake-cli-options] NAME [dbt-command-and-options]
Copy

Wobei:

  • NAME ist der Name des dbt-Projektobjekts.

  • [snowflake-cli-options] ist eine Liste von Snowflake CLI-Optionen, einschließlich der folgenden:

    • --run-async, die den dbt-Befehl asynchron ausführt und sofort eine Abfrage zurückgibt, mit der Sie den Fortschritt verfolgen können

    • Eine beliebige globale Snowflake CLI-Option, z. B. --help oder --connection

  • [dbt-command-and-options] ist der Name eines dbt-Befehls und seiner Optionen, wie z. B. run --target dev.

Beispiele

  • Ausführen des dbt-Befehls test:

    snow dbt execute jaffle_shop test
    
    Copy
  • Asynchrones Ausführen des dbt-Befehls run:

    snow dbt execute --run-async jaffle_shop run --select @source:snowplow,tag:nightly models/export
    
    Copy

Verwendung von snow dbt-Befehlen in einem CI/CD-Workflow

Bemerkung

Beim Erstellen von CI/CD-Workflows benötigen Sie nur Ihren Git-Server, wie z. B. Github, und Snowflake CLI. Ein Git-Repository-Objekt ist nicht erforderlich.

Sie können dbt-Befehle mit Snowflake CLI zum Erstellen von CI/CD-Pipelines ausführen. Diese Pipelines werden häufig verwendet, um neuen Code zu testen, z. B. neue Pull-Anforderungen, oder um Produktionsanwendungen bei einer Zusammenführung mit dem Hauptzweig zu aktualisieren.

Zur Erstellung eines CI/CD-Workflows mit snow dbt-Befehlen gehen Sie wie folgt vor:

  1. Bereiten Sie Ihr dbt-Projekt vor:

    1. Laden Sie Ihr dbt-Projekt herunter, oder starten Sie ein neues.

      • Stellen Sie sicher, dass das Hauptverzeichnis des Projekts die Dateien dbt_project.yml und profiles.yml enthält.

      • Überprüfen Sie, ob der in dbt_project.yml angegebene Profilname in profiles.yml definiert ist.

        Bemerkung

        Die dbt-Projektobjekte von Snowflake benötigen keine Kennwörter. Wenn profiles.yml Kennwörter enthält, wird die Bereitstellung ausgesetzt, bis sie entfernt werden.

  2. Richten Sie eine Snowflake-CLI-GitHub-Aktion ein.

    Befolgen Sie die Richtlinien für die -Einrichtung einer GitHub-Aktion für die Snowflake-CLI und überprüfen Sie Ihre Verbindung zu Snowflake.

  3. Definieren Sie Ihren Workflow.

    Bestimmen Sie, welche Befehle Ihr Workflow ausführen muss, basierend auf den Anforderungen Ihrer Organisation. Im folgenden Beispiel wird ein CI-Workflow gezeigt, der die Version des dbt-Projektobjekts namens product_pipeline mit neuen Dateien aktualisiert und die Transformationen sowie schließlich die Tests durchführt:

    - name: Execute Snowflake CLI command
      run: |
        snow dbt deploy product_pipeline
        snow dbt execute product_pipeline run
        snow dbt execute product_pipeline test
    
    Copy