Verwalten von dbt Projects on Snowflake mit Snowflake CLI

Bemerkung

Die dbt Projects on Snowflake-Features in Snowflake CLI sind nur in Version 3.13.0 oder höher verfügbar.

Sie können Snowflake CLI zum Verwalten von dbt-Projekten mit den folgenden Operationen verwenden:

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: Eine Standard-dbt-Konfigurationsdatei, die das zu verwendende Profil angibt.

  • 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 Schema und der Typ definiert werden.

    • Standardmäßig verwendet dbt Projects on Snowflake Ihr Zielschema (target.schema), das in Ihrer dbt-Umgebung oder Ihrem -Profil angegeben wurde. Im Gegensatz zum Verhalten von dbt Core muss das in der Datei profiles.yml angegebene Zielschema vorhanden sein, bevor Sie Ihr dbt-Projekt erstellen, damit es erfolgreich kompiliert oder ausgeführt werden kann.

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

Die folgenden Beispiele veranschaulichen die Verwendung des Befehls snow dbt deploy:

  • 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 erstellen oder fügen Sie eine neue Version hinzu, je nachdem, ob das dbt-Projektobjekt bereits vorhanden ist:

    snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --force
    
    Copy
  • Stellen Sie das Projekt jaaffle_store aus einem bestimmten Verzeichnis unter Verwendung eines kundenspezifischen Profilverzeichnisses und der Aktivierung von Integrationen für den externen Zugriff bereit:

    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

Auflisten aller verfügbaren dbt-Projektobjekte

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

Die folgenden Beispiele veranschaulichen die Verwendung des Befehls snow dbt list:

  • 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.

Die folgenden Beispiele veranschaulichen die Verwendung des Befehls snow dbt execute:

  • 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

Beschreiben eines dbt-Projektobjekts

Der Befehl snow dbt describe beschreibt ein dbt-Projektobjekt in Snowflake.

Das folgende Beispiel beschreibt das dbt-Projektobjekt mit dem Namen my_dbt_project in Snowflake:

snow dbt describe my_dbt_project
Copy

Löschen eines dbt-Projektobjekts

Der Befehl snow dbt drop löscht ein dbt-Projektobjekt in Snowflake.

Das folgende Beispiel löscht das dbt-Projektobjekt mit dem Namen my_dbt_project in Snowflake:

snow dbt drop my_dbt_project
Copy

Verwenden 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