CREATE DBT PROJECT¶
Erstellt ein neues dbt-Projektobjekt oder ersetzt ein bestehendes dbt-Projekt. Durch das Ausführen von CREATE DBT PROJECT mit der OR REPLACE-Option wird der Versionsbezeichner auf version$1 zurückgesetzt und alle Versionsnamen-Aliasse entfernt. Weitere Informationen dazu finden Sie unter Versionierung für dbt-Projektobjekte und -Dateien.
- Siehe auch:
ALTER DBT PROJECT, DESCRIBE DBT PROJECT, EXECUTE DBT PROJECT, SHOW DBT PROJECTS, DROP DBT PROJECT
Syntax¶
CREATE [ OR REPLACE ] DBT PROJECT [ IF NOT EXISTS ] <name>
[ FROM '<source_location>' ]
[ COMMENT = '<string_literal>' ]
[ DEFAULT_TARGET = <default_target> ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]
Parameters¶
nameZeichenfolge, die den Bezeichner (d. h. den Namen) für das dbt-Projektobjekt in Snowflake angibt. Der Wert muss für das Schema, in dem das dbt-Projekt erstellt wird, eindeutig sein.
Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B.
"My object"). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.
FROM 'source_location'Eine Zeichenfolge, die den Speicherort der Quelldateien für das dbt-Projektobjekt in Snowflake angibt. Dies kann ein übergeordnetes Verzeichnis sein, das mehrere dbt-Projekte enthält, oder ein bestimmtes Unterverzeichnis, das ein dbt-Projekt und eine
dbt_project.yml-Datei enthält.Wenn der angegebene Speicherort keine
dbt_project.yml-Datei enthält, muss der EXECUTE DBT PROJECT-Befehl den PROJECT_ROOT-Parameter verwenden, um den Unterverzeichnis-Pfad zu einerdbt_project.yml-Datei anzugeben.Wenn kein Wert angegeben wird, erstellt Snowflake ein leeres dbt-Projekt.
Die Quelldateien des dbt-Projekts können sich an einem der folgenden Speicherorte befinden:
In einem Git-Repository-Stagingbereich, zum Beispiel:
'@my_db.my_schema.my_git_repository_stage/branches/my_branch/path/to/dbt_project_or_projects_parent'For more information about creating a Git repository object in Snowflake that connects a Git repository to a workspace for dbt Projects on Snowflake, see Erstellen eines Arbeitsbereichs, der mit Ihrem Git-Repository verbunden ist. For more information about creating and managing a Git repository object and stage without using a workspace, see Verwenden eines Git-Repositorys in Snowflake and CREATE GIT REPOSITORY.
In einem vorhandenen dbt-Projekt-Stagingbereich, zum Beispiel:
'snow://dbt/my_db.my_schema.my_existing_dbt_project_object/versions/last'Der Versionsbezeichner ist erforderlich und kann
last(wie im vorherigen Beispiel gezeigt),firstoder der Bezeichner für eine bestehende Version im Formatversion$<num>sein. Weitere Informationen dazu finden Sie unter Versionierung für dbt-Projektobjekte und -Dateien.In einem internen benannten Stagingbereich, zum Beispiel:
'@my_db.my_schema.my_internal_named_stage/path/to/dbt_projects_or_projects_parent'Interne Benutzer-Stagingbereiche und Tabellen-Stagingbereiche werden nicht unterstützt.
In einem Arbeitsbereich für dbt auf Snowflake, zum Beispiel:
'snow://workspace/user$.public."my_workspace_name"/versions/live/path/to/dbt_projects_or_projects_parent'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.
Der Versionsbezeichner ist erforderlich und kann
last,first,liveoder der Bezeichner für eine bestehende Version im Formatversion$<num>sein. Weitere Informationen dazu finden Sie unter Versionierung für dbt-Projektobjekte und -Dateien.
Standard: Kein Wert
COMMENT = 'string_literal'Gibt einen Kommentar für das dbt-Projektobjekt an.
Standard: Kein Wert
DEFAULT_TARGET = default_targetGibt das Profil an, das für die Kompilierung und die nachfolgenden Läufe des dbt-Projektobjekts verwendet wird (z. B.
prod). Sie können diesen Parameter mit dem Befehl EXECUTE DBT PROJECT mitARGS = --targetüberschreiben.Standard: Kein Wert
EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )Gibt die Integration für externen Zugriff an, die verwendet wird, um Berechtigungen zum Abrufen externer Abhängigkeiten von dbt-Paket-Hub oder Github zu gewähren. Bei der Deklaration für ein Objekt wird
dbt depswährend der Bereitstellung automatisch ausgeführt. Weitere Informationen dazu finden Sie unter Erläuterungen zu den Abhängigkeiten von dbt-Projekten auf Snowflake.
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
|---|---|
CREATE DBT PROJECT |
Schema |
Für das Ausführen von Operationen auf einem Objekt in einem Schema ist mindestens eine Berechtigung für die übergeordnete Datenbank und mindestens eine Berechtigung für das übergeordnete Schema erforderlich.
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.
Nutzungshinweise¶
Die Klauseln OR REPLACE und IF NOT EXISTS schließen sich gegenseitig aus. Sie können nicht beide in der gleichen Anweisung verwendet werden.
CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.
Metadaten:
Achtung
Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „User“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.
Beispiele¶
Erstellen eines dbt-Projektobjekts aus einem Git-Repository-Stagingbereich in Snowflake
Erstellen eines dbt-Projektobjekts aus einer bestimmten Version eines vorhandenen dbt-Projektobjekts
Erstellen eines dbt-Projektobjekts aus einem Arbeitsbereich, der mehrere dbt-Projekte enthält
Erstellen eines dbt-Projektobjekts aus einem Git-Repository-Stagingbereich in Snowflake¶
Create a dbt project object named sales_dbt_model from dbt project files in a Git repository stage. This example references the main branch of a Git repository stage named sales_dbt_git_stage in Snowflake, where the project’s dbt_project.yml file is saved in the repository root. The command also sets the default target used when executing dbt commands and specifies the external access integrations required by the project.
CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model
FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main'
DEFAULT_TARGET = 'prod'
EXTERNAL_ACCESS_INTEGRATIONS = 'my_external_access_integration'
COMMENT = 'Generates sales data models.';
Erstellen eines dbt-Projektobjekts aus einem Unterverzeichnis innerhalb eines Git-Repository-Stagingbereichs in Snowflake¶
Create a dbt project object named sw_region_sales_model from a subdirectory inside a Git repository stage that contains multiple dbt projects. The example references the main branch of a Git repository stage named sales_dbt_git_stage in Snowflake, where the project’s dbt_project.yml file is saved in the sw_region_dbt_project subdirectory of the sales_dbt_projects_parent directory.
In diesem Beispiel werden auch die folgenden Eigenschaften festgelegt:
Das Standard-Ausführungsziel (z. B.
prododerdev), das von dbt-Befehlen verwendet wird, die über Snowflake ausgeführt werden.Integrationen für den externen Zugriff, die das dbt-Projekt verwenden darf, um externe Abhängigkeiten aus dem dbt-Paket-Hub oder Github abzurufen.
CREATE DBT PROJECT sales_db.dbt_projects_schema.sw_region_sales_model
FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_projects_parent/sw_region_dbt_project'
DEFAULT_TARGET = 'prod'
EXTERNAL_ACCESS_INTEGRATIONS = 'my_external_access_integration'
COMMENT = 'Generates data models for SW sales region.';
Erstellen eines dbt-Projektobjekts aus einer bestimmten Version eines vorhandenen dbt-Projektobjekts¶
Create a new dbt project object named sales_model_nw_region from version$2 of the existing sales_model dbt project.
In diesem Beispiel wird auch ein Standard-Ausführungsziel mit DEFAULT_TARGET festgelegt, und es gibt zulässige Integrationen für den externen Zugriff mit EXTERNAL_ACCESS_INTEGRATIONS an.
CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model_nw_region
FROM 'snow://dbt/sales_db.dbt_projects_schema.sales_model/versions/version$2'
DEFAULT_TARGET = 'prod'
EXTERNAL_ACCESS_INTEGRATIONS = (my_ext_integration_1, my_ext_integration_2)
COMMENT = 'Generates data models for the NW sales region.';
Erstellen eines dbt-Projektobjekts aus einem Arbeitsbereich, der mehrere dbt-Projekte enthält¶
Erstellen Sie ein neues dbt-Projektobjekt namens sales_model_from_workspace aus der Live-Version eines Arbeitsbereichs, der mehrere dbt-Projektverzeichnisse enthält. „My dbt Project Workspace“ innerhalb der persönlichen Datenbank des Benutzers. Dies ist nützlich, wenn der Arbeitsbereich mehrere Unterprojekte hat und Sie ein dbt-Projektobjekt aus einem bestimmten Unterverzeichnis erstellen möchten. Bei Arbeitsbereichen wird zwischen Groß- und Kleinschreibung unterschieden, und sie können Sonderzeichen enthalten. Daher empfehlen wir, den Namen des Arbeitsbereichs in doppelte Anführungszeichen zu setzen.
CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model_from_workspace
FROM 'snow://workspace/user$.public."My dbt Project Workspace"/versions/live/project2'
EXECUTE DBT PROJECT sales_db.dbt_projects_schema.sales_model_from_workspace
ARGS = 'run --target prod';