EXECUTE DBT PROJECT

Führt das angegebene dbt-Projektobjekt oder das dbt-Projekt in einem Snowflake-Arbeitsbereich unter Verwendung des dbt-Befehls und der angegebenen Befehlszeilenoptionen aus.

Siehe auch:

CREATE DBT PROJECT, ALTER DBT PROJECT, DESCRIBE DBT PROJECT, DROP DBT PROJECT, SHOW DBT PROJECTS

Syntax

Führt das dbt-Projektobjekt mit dem angegebenen Namen aus.

EXECUTE DBT PROJECT [ IF EXISTS ] <name>
  [ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] ] [ ... ]' ]
  [ PROJECT_ROOT = '<subdirectory_path>' ]
Copy

Syntaxvariante

Führt das dbt-Projekt aus, das in einem Arbeitsbereich mit dem angegebenen Arbeitsbereichsnamen gespeichert ist. Der Benutzer, dem der Arbeitsbereich gehört, muss der Benutzer sein, der diese Befehlsvariante ausführt.

EXECUTE DBT PROJECT [ IF EXISTS ] [ FROM WORKSPACE <name> ]
  [ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] [ ... ] ]' ]
  [ PROJECT_ROOT = '<subdirectory_path>' ]
Copy

Erforderliche Parameter

name

Gibt bei der Ausführung eines dbt-Projektobjekts den Namen des auszuführenden dbt-Projektobjekts an.

Gibt beim Ausführen eines dbt-Projekts unter Verwendung der FROM WORKSPACE-Option den Namen des Arbeitsbereichs für dbt Projects on Snowflake an. Der Name des Arbeitsbereichs wird immer in Referenz auf das public-Schema in der persönlichen Datenbank des Benutzers angegeben, angegeben durch user$.

Wir empfehlen, den Arbeitsbereichsnamen in doppelte Anführungszeichen zu setzen, da bei Arbeitsbereichsnamen zwischen Groß- und Kleinschreibung unterschieden wird und weil sie Sonderzeichen enthalten können.

Das folgende Beispiel zeigt eine Namensreferenz für einen Arbeitsbereich:

user$.public."My dbt Project Workspace"

Optionale Parameter

ARGS = '[ dbt_command ] [ --dbt_cli_option option_value_1 [ ... ] [ ... ] ]'

Gibt den dbt-Befehl und die unterstützten -Befehlszeilenoptionen an, die ausgeführt werden sollen, wenn das dbt-Projekt ausgeführt wird. Dies ist eine literale Zeichenfolge, die der Syntax und den Anforderungen von dbt entsprechen muss CLI -Befehlen

Wenn kein Wert angegeben ist, wird das dbt-Projekt mit dem dbt-Befehl und den -Befehlszeilenoptionen ausgeführt, die in der dbt-Projektobjektdefinition angegeben sind. Wenn Sie CLI-Optionen für dbt ohne Angabe eines dbt-Befehls angeben, wird der run-Befehl für dbt standardmäßig ausgeführt.

Wichtig

Argumente, die Sie explizit in einem EXECUTE DBT PROJECT-Befehl angeben, überschreiben alle DEFAULT_ARGS, die in der DBT PROJECT-Definition angegeben sind.

Standard: Kein Wert

PROJECT_ROOT = 'subdirectory_path'

Gibt den Pfad zum Unterverzeichnis der dbt_project.yml-Datei innerhalb des dbt-Projektobjekts oder des Arbeitsbereichs an.

Wenn kein Wert angegeben ist, wird das dbt-Projekt mit der dbt_project.yml-Datei im Stammverzeichnis des dbt-Projektobjekts ausgeführt.

Wenn keine dbt_project.yml-Datei im Stammverzeichnis oder im PROJECT_ROOT-Unterverzeichnis existiert, tritt ein Fehler auf.

Standard: Kein Wert

Ausgabe

Spalte

Beschreibung

0|1 Success

TRUE, wenn das dbt-Projekt erfolgreich ausgeführt wurde; andernfalls FALSE. Wenn das dbt-Projekt nicht ausgeführt werden kann, wird eine Ausnahmemeldung zurückgegeben.

EXCEPTION

Jede Ausnahmemeldung, die bei der Ausführung des dbt-Projekts zurückgegeben wird. Wenn das dbt-Projekt erfolgreich ausgeführt wird, wird die Zeichenfolge None zurückgegeben.

STDOUT

Die Standardausgabe, die bei der Ausführung des dbt-Projekts zurückgegeben wird.

OUTPUT_ARCHIVE_URL

Die URL des Ausgabearchivs, das die Ausgabedateien von der Ausführung des dbt-Projekts enthält. Dazu gehören Protokolldateien und Artefakte, die dbt in das /target-Verzeichnis schreibt. Weitere Informationen dazu finden Sie unter Über dbt-Artefakte in der dbt-Dokumentation. Die direkte Auswahl dieses Links führt zu einem Fehler; Sie können jedoch diese URL zum Abrufen von dbt-Projektdateien und -Ausgaben verwenden. Weitere Informationen dazu finden Sie unter Programmgesteuert auf dbt-Artefakte und -Protokolle zugreifen.

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieses SQL-Befehls verwendet wird, muss mindestens eine der folgenden Berechtigungen haben:

Berechtigung

Objekt

USAGE

dbt-Projekt

USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen.

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Bemerkung

Der in EXECUTE DBT PROJECT angegebene dbt-Befehl wird mit den Berechtigungen der role ausgeführt, die im outputs-Block der Datei profiles.yml des Projekts angegeben ist. Außerdem sind Vorgänge auf die Berechtigungen beschränkt, die dem Snowflake-Benutzer gewährt werden, der EXECUTE DBT PROJECT aufruft. Sowohl der Benutzer als auch die angegebene Rolle müssen über die erforderlichen Berechtigungen verfügen, um das warehouse verwenden zu können, Vorgänge für database und schema auszuführen, die in der Datei profiles.yml des Projekts angegeben sind, und Vorgänge für alle anderen Snowflake-Objekten auszuführen, die das dbt-Modell angibt.

Beispiele

Standardausführungsbefehl mit Angabe von Ziel und Modellen

Führen Sie einen dbt run aus mit dem dev-Profil in der dbt_project.yml-Datei als Ziel, die sich im Stammverzeichnis des dbt-Projektobjekts befindet. Wählen Sie dafür drei Modelle aus dem Projekt DAG aus. Es ist kein run-Befehl explizit angegeben und wird standardmäßig ausgeführt.

EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
  ARGS = '--select simple_customers combined_bookings prepped_data --target dev';
Copy

Expliziter Testbefehl mit Angabe von Ziel und Modellen

Führen Sie einen dbt test-Befehl aus mit dem prod-Profil in der dbt_project.yml-Datei als Ziel, die sich im Stammverzeichnis des dbt-Projektobjekts befindet. Wählen Sie dafür drei Modelle aus dem Projekt DAG aus.

EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
  ARGS = '--select simple_customers combined_bookings prepped_data --target prod';
Copy

Expliziter Ausführungsbefehl mit Angabe der nachgelagerten Modelle

Führen Sie einen dbt run-Befehl aus mit dem dev-Profil in der dbt_project.yml-Datei als Ziel, und wählen Sie alle dem simple_customers-Modell nachgelagerten Modelle unter Verwendung der dbt +-Notation aus.

EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
  ARGS = 'run --select simple_customers+ --target dev';
Copy

Standardausführungsbefehl, der ein Unterverzeichnis-Projekt mit Standardausführung und DEFAULT ARGS aus der Definition des dbt-Projektobjekts angibt

Für ein dbt-Projektobjekt, das Unterverzeichnisse für drei dbt-Projekte enthält, führen Sie einen dbt run-Befehl für das dbt-Projekt im project2-Unterverzeichnis aus. Der Ausführungsbefehl wird angenommen, und der Befehl zielt auf das dev-Profil, das mit DEFAULT ARGS in der DBT PROJECT-Definition angegeben wurde.

EXECUTE DBT PROJECT my_database.my_schema.my_parent_dbt_project PROJECT_ROOT = 'project2';
Copy

Ausführen und Testen von dbt-Projekten mithilfe von Produktionsaufgaben

Erstellen Sie eine Aufgabe für ein dbt-Produktionsziel, die einen dbt run-Befehl in einem Intervall von sechs Stunden ausführt. Erstellen Sie dann eine Aufgabe, die den dbt test-Befehl ausführt, nachdem jede dbt run-Aufgabe abgeschlossen ist. Der Befehl EXECUTE DBT PROJECT für jede Aufgabe zielt auf das prod-Profil in der dbt_project.yml-Datei im Stammverzeichnis des dbt-Projektobjekts.

CREATE OR ALTER TASK my_database.my_schema.run_dbt_project
  WAREHOUSE = my_warehouse
  SCHEDULE = '6 hours'
AS
  EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='run --target prod';


CREATE OR ALTER TASK change_this.public.test_dbt_project
        WAREHOUSE = my_warehouse
        AFTER run_dbt_project
AS
  EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='test --target prod';
Copy