CREATE DBT PROJECT

Creates a new dbt project object or replaces an existing dbt project object. Running CREATE DBT PROJECT with the OR REPLACE option resets the version identifier to version$1 and removes all version name aliases. For more information, see Versions 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>' ]
  [ DBT_VERSION = <version_number> ]
  [ DEFAULT_TARGET = <default_target> ]
  [ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]

Parameter

name

String that specifies the name of the dbt project object. Must be unique within the schema in which the dbt project object is created.

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'

Required. A string that specifies the location of the dbt project source files.

The source location must point to a directory that contains a single dbt_project.yml file at its root. Although workspaces support working with repositories that contain multiple dbt projects, you must select a specific project directory when deploying a dbt project object.

The dbt project object source files can be in any one of the following locations:

  • 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'

    Für weitere Informationen zum Erstellen eines Git-Repository-Objekts in Snowflake, das ein Git-Repository mit einem Arbeitsbereich für dbt Projects on Snowflake verbindet, siehe Erstellen eines Arbeitsbereichs, der mit Ihrem Git-Repository verbunden ist. Für weitere Informationen zum Erstellen und Verwalten eines Git-Repository-Objekts und Stagingbereichs ohne Verwendung eines Arbeitsbereichs finden Sie unter Verwenden eines Git-Repositorys in Snowflake und CREATE GIT REPOSITORY.

  • In einem vorhandenen dbt-Projekt-Stagingbereich, zum Beispiel:

    'snow://dbt/my_db.my_schema.my_existing_dbt_project_object/versions/last'

    The version specifier is required and can be last (as shown in the previous example), first, or the specifier for any existing version in the form version$<num>. For more information, see Versions 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.

    The version specifier is required and can be last, first, live, or the specifier for any existing version in the form version$<num>. For more information, see Versions for dbt project objects and files.

COMMENT = 'string_literal'

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

Standard: Kein Wert

DBT_VERSION = version_number

Specifies a version for the dbt project object.

If no value is specified, the system defaults to the version set by the DEFAULT_DBT_VERSION account parameter. For more information, see Standardversion auf Kontoebene festlegen.

DEFAULT_TARGET = default_target

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

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 deps wä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 Sie ein dbt-Projektobjekt namens sales_dbt_model aus dbt-Projektdateien in einem Git-Repository-Stagingbereich. Dieses Beispiel referenziert den main-Zweig eines Git-Repositorys mit dem Namen sales_dbt_git_stage in Snowflake, in dem die dbt_project.yml-Datei des Projekts im Repository-Unterverzeichnis gespeichert ist. Der Befehl legt auch das Standardziel fest, das bei der Ausführung von dbt-Befehlen verwendet wird, und gibt die für das Projekt erforderlichen Integrationen für den externen Zugriff an.

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

Erstellen Sie ein dbt-Projekt mit dem Namen sw_region_sales_model aus einem Unterverzeichnis in einem Git-Repository-Stagingbereich, der mehrere dbt-Projekte enthält. Das Beispiel referenziert den main-Zweit eines Git-Repositorys mit dem Namen sales_dbt_git_stage in Snowflake, in dem die dbt_project.yml-Datei des Projekts im Unterverzeichnis sw_region_dbt_project des Verzeichnisses sales_dbt_projects_parent gespeichert ist.

In diesem Beispiel werden auch die folgenden Eigenschaften festgelegt:

  • dbt-Version

  • Das Standard-Ausführungsziel (z. B. prod oder dev), das von dbt-Befehlen verwendet wird, die über Snowflake ausgeführt werden.

  • External access integrations the dbt project object is permitted to use to pull remote dependencies from dbt package hub or Github.

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'
  DBT_VERSION = '1.10.15'
  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 object.

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';