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:
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 indbt_project.yml.profiles.yamlmust define the database, role, schema, and type.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 Dateiprofiles.ymlangegebene 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
Die folgenden Beispiele veranschaulichen die Verwendung des Befehls snow dbt deploy:
Stellen Sie das dbt-Projektobjekt
jaffle_shopbereit:snow dbt deploy jaffle_shop
Deploy a project named
jaffle_shopfrom 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
Stellen Sie das Projekt
jaaffle_storeaus 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
Listing all available dbt project objects¶
The snow dbt list command lists all available dbt project objects on Snowflake.
Die folgenden Beispiele veranschaulichen die Verwendung des Befehls snow dbt list:
So listen Sie alle verfügbaren dbt-Projektobjekte auf:
snow dbt list
So listen Sie dbt-Projektobjekte in der
product-Datenbank auf, deren Namen mitJAFFLEbeginnen:snow dbt list --like JAFFLE% --in database product
Executing a dbt project object command¶
The snow dbt execute command executes one of the following dbt commands on a Snowflake dbt project object:
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
Asynchrones Ausführen des dbt-Befehls
run:snow dbt execute --run-async jaffle_shop run --select @source:snowplow,tag:nightly models/export
Describing a dbt project object¶
The snow dbt describe command describes a dbt project object on Snowflake.
Das folgende Beispiel beschreibt das dbt-Projektobjekt mit dem Namen my_dbt_project in Snowflake:
snow dbt describe my_dbt_project
Dropping a dbt project object¶
The snow dbt drop command deletes a dbt project object on Snowflake.
Das folgende Beispiel löscht das dbt-Projektobjekt mit dem Namen my_dbt_project in Snowflake:
snow dbt drop my_dbt_project
Use snow dbt commands in a 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:
Bereiten Sie Ihr dbt-Projekt vor:
Laden Sie Ihr dbt-Projekt herunter, oder starten Sie ein neues.
Stellen Sie sicher, dass das Hauptverzeichnis des Projekts die Dateien
dbt_project.ymlundprofiles.ymlenthält.Überprüfen Sie, ob der in
dbt_project.ymlangegebene Profilname inprofiles.ymldefiniert ist.Bemerkung
Die dbt-Projektobjekte von Snowflake benötigen keine Kennwörter. Wenn
profiles.ymlKennwörter enthält, wird die Bereitstellung ausgesetzt, bis sie entfernt werden.
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.
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_pipelinemit 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