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
Aktivieren Sie die Befehle in Ihren
config.toml
-Konfigurationsdateien:[cli.features] enable_dbt = true
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:
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 indbt_project.yml
verwiesen wird. Inprofiles.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
Verwendung¶
snow dbt deploy [--source <path>] [--profiles-dir <path>] [--force] NAME
Wobei:
NAME
ist der Name des dbt-Projektobjekts.[--source path>
ist der Pfad zurdbt_project.yml
-Datei des Projekts. Standardmäßig wird das aktuelle Verzeichnis als Arbeitsverzeichnis verwendet.[--profiles-dir path>
ist der Pfad derprofiles.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
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/
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>]
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
So listen Sie dbt-Projektobjekte in der
product
-Datenbank auf, deren Namen mitJAFFLE
beginnen:snow dbt list --like JAFFLE% --in database product
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]
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önnenEine 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
Asynchrones Ausführen des dbt-Befehls
run
:snow dbt execute --run-async jaffle_shop run --select @source:snowplow,tag:nightly models/export
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:
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.yml
undprofiles.yml
enthält.Überprüfen Sie, ob der in
dbt_project.yml
angegebene Profilname inprofiles.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.
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_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