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 Versioning for dbt project objects and files.

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> [ , ... ] ) ]
Copy

Parameters

name

Zeichenfolge, 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 einer dbt_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), first oder der Bezeichner für eine bestehende Version im Format version$<num> sein. Weitere Informationen dazu finden Sie unter Versioning for dbt project objects and files.

  • 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, live oder der Bezeichner für eine bestehende Version im Format version$<num> sein. Weitere Informationen dazu finden Sie unter Versioning for dbt project objects and files.

Standard: Kein Wert

COMMENT = 'string_literal'

Gibt einen Kommentar für das dbt-Projektobjekt an.

Standard: Kein Wert

DEFAULT_TARGET = default_target

Specifies the profile used for compilation and subsequent runs (for example, prod) of the dbt project object. You can override this parameter by using the EXECUTE DBT PROJECT command with ARGS = --target.

Standard: Kein Wert

EXTERNAL_ACCESS_INTEGRATIONS = integration_name

Specifies the external access integration used to grant permissions to pull remote dependences from dbt package hub or Github. When declared on an object, dbt deps will run automatically during deployment. For more information, see Understand dependencies for dbt Projects on 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

USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen. Beachten Sie, dass eine Rolle, die eine beliebige Berechtigung für ein Schema erhalten hat, es dieser Rolle erlaubt, das Schema aufzulösen. Zum Beispiel kann eine Rolle, der die CREATE-Berechtigung für ein Schema gewährt wurde, Objekte in diesem Schema erstellen, ohne auch USAGE für dieses Schema gewährt bekommen zu haben.

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 Sie ein dbt-Projektobjekt namens sales_dbt_model aus dbt-Projektdateien in einem Git-Repository-Stagingbereich. Der Befehl gibt den Zweig main eines Git-Repository-Stagingbereichs namens sales_dbt_git_stage in Snowflake an, wo dbt_project.yml im Stammverzeichnis des Repositorys gespeichert ist.

CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main'
  COMMENT = 'generates sales data models';
Copy

Erstellen eines dbt-Projektobjekts aus einem Unterverzeichnis innerhalb eines Git-Repository-Stagingbereichs in Snowflake

Erstellen Sie ein dbt-Projektobjekt namens sw_region_dbt_project aus einem Git-Repository-Stagingbereich, der mehrere dbt-Projekte enthält. Der Befehl gibt den Zweig main eines Git-Repository-Stagingbereichs namens sales_dbt_git_stage in Snowflake an, wo dbt_project.yml im Unterverzeichnis sw_region_dbt_project des sales_dbt_projects_parent-Verzeichnisses gespeichert ist.

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'
  COMMENT = 'generates data models for sw sales region';
Copy

Erstellen eines dbt-Projektobjekts aus einer bestimmten Version eines vorhandenen dbt-Projektobjekts

Erstellen Sie ein neues dbt-Projektobjekt namens sales_nw_dbt_model_combined_bookings aus version$2 des dbt-Objekt-Stagingbereichs sales_dbt_projects.

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'
  COMMENT = 'generates data models for the NW sales region';
Copy

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 für dbt Projects on Snowflake. Dies ist besonders nützlich bei der Erstellung eines dbt-Projektobjekts aus einem übergeordneten Arbeitsbereich, der mehrere dbt-Projekt-Unterverzeichnisse enthält. 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.

-- Create a dbt project object from a workspace named "My dbt Project Workspace" in the user's personal database.

CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model_from_workspace
  FROM 'snow://workspace/user$.public."My dbt Project Workspace"/versions/live'

-- Execute the dbt project, specifying a subdirectory path for a dbt project within the workspace

EXECUTE DBT PROJECT sales_db.dbt_projects_schema.sales_model_from_workspace
  PROJECT_ROOT = 'project2'
  ARGS = 'run --target prod';
Copy