Erläuterungen zu dbt-Projektobjekten

Ein DBT PROJECT ist ein Objekt auf Schemaebene, das versionierte Quelldateien für Ihr dbt-Projekt in Snowflake enthält. Sie können ein dbt-Projektobjekt mit einem Arbeitsbereich verbinden oder das Objekt unabhängig von einem Arbeitsbereich erstellen und verwalten.

Ein dbt-Projektobjekt basiert in der Regel auf einem dbt-Projektverzeichnis, das eine dbt-project.yml-Datei enthält. Dies ist das Muster, das Snowflake verwendet, wenn Sie ein dbt-Projektobjekt aus einem Arbeitsbereich heraus bereitstellen (erstellen).

dbt-Projektobjekte unterstützen die rollenbasierte Zugriffssteuerung (RBAC). Sie können dbt-Projektobjekte wie andere Objekte auf Schemaebene in Snowflake erstellen (CREATE), ändern (ALTER) und löschen (DROP). Sie können den Befehl EXECUTE DBT PROJECT von einem Snowflake-Warehouse aus verwenden, um dbt-Befehle wie test und run auszuführen. Sie haben auch die Möglichkeit, die Ausführung dieser Befehle mithilfe von Aufgaben zu planen.

So werden dbt-Projektobjekte aktualisiert

dbt-Projektobjekte werden nicht automatisch aktualisiert, wenn Sie den Arbeitsbereich bearbeiten; Sie müssen jedes Mal eine neue Version bereitstellen (d. h. eine neue Version hinzufügen), wenn das Objekt Codeänderungen übernehmen soll.

Um eine Produktionspipeline zu erstellen, empfehlen wir die Erstellung eines dbt-Projektobjekts und Planen seiner Ausführung mit einer Aufgabe. Da jede dbt-Projektobjektversion unveränderlich ist, wird dadurch sichergestellt, dass sich zwischen den Ausführungen nichts ändert, es sei denn, jemand fügt explizit eine neue Version hinzu.

Um die Dateien des dbt-Projekts zu aktualisieren, müssen Sie eine neue Version in einem Arbeitsbereich hinzufügen, zum Beispiel:

ALTER DBT PROJECT testdbt.public.my_dbt_project_object
  ADD VERSION FROM 'snow://workspace/user$.public."all_my_dbt_projects"/versions/last';
Copy

Wenn Ihr dbt-Projekt von Git unterstützt wird und Sie Ihre Tests und Bereitstellung automatisieren möchten, führen Sie den Snow-CLI-Befehl snow dbt deploy mit der --force-Option aus, wie im folgenden Beispiel gezeigt:

snow dbt deploy --source 'snow://workspace/user$.public."all_my_dbt_projects"/versions/last'  --force my_dbt_project;
Copy

--force ermöglicht es Ihnen, eine Version hinzuzufügen; ohne wäre es gleichbedeutend mit der Ausführung von CREATE DBT PROJECT für ein bereits erstelltes Objekt, was fehlschlagen würde.

Weitere Informationen zur Versionierung finden Sie unter Versionierung für dbt-Projektobjekte und -Dateien.

Versionierung für dbt-Projektobjekte und -Dateien

Snowflake verwaltet Versionen von dbt-Projektobjekten und den entsprechenden Projektdateien. Sie können diese Versionierung nutzen, um Änderungen während des gesamten Lebenszyklus Ihrer Datenentwicklung und -bereitstellung zu verfolgen und zu verwalten. Snowflake identifiziert dbt-Projektobjekt-Versionen im dbt-Projekt-Stagingbereich, wie im folgenden Beispiel gezeigt.

snow://dbt/my_db.my_schema.my_dbt_project_object/versions/version_id

version_id kann einer der folgenden Bezeichner sein:

  • VERSION$<num>: Gibt einen Versionsbezeichner im Format VERSION$<num> an, wobei <num> is a positive integer, for example, VERSION1 USD.

    Die Versionsnummer beginnt bei 1, wenn Sie ein dbt-Projektobjekt erstellen, und wird mit jeder neuen Version des dbt-Projektobjekts um eins erhöht.

    Der Versionsbezeichner wird von Snowflake erhöht, wenn Sie die folgenden Aufgaben ausführen:

    • Redeploy dbt project von einem Arbeitsbereich aus (führt den ALTER-Befehl mit der ADD VERSION-Option aus).

    • Aktualisieren des Projekts mit dem Befehl ALTER DBT PROJECT.

    • Ausführen des Snowflake-CLI-Befehls snow dbt deploy mit der Option --force.

    Snowflake setzt den Versionsbezeichner auf 1 zurück und entfernt alle Versionsaliasse, wenn Sie die folgenden Befehle ausführen:

    • Befehl CREATE DBT PROJECT mit der Option OR REPLACE in SQL.

  • LAST: Gibt die neueste Version des dbt-Projektobjekts an.

  • FIRST: Gibt die älteste Version des dbt-Projektobjekts an.

  • version_name_alias: Gibt einen benutzerdefinierten Versionsnamensalias an, den Sie für eine bestimmte Version des dbt-Projektobjekts unter Verwendung des Befehls ALTER DBT PROJECT mit der Option ADD VERSION erstellt haben. Ein Versionsnamensalias ist immer einem bestimmten Versionsbezeichner zugeordnet, z. B. VERSION$3.

Die im dbt-Projekt-Stagingbereich gespeicherten Projektdateien sind nach Versionen geordnet, wobei jede Version ein eigenes Unterverzeichnis hat. Zum Beispiel kann ein dbt-Projektobjekt namens my_dbt_project_object mit dem Versionsbezeichner VERSION$3 und eine dbt-Projektdatei namens dbt_project.yml referenziert werden, wie im folgenden Beispiel gezeigt:

snow://dbt/my_db.my_schema/my_dbt_project_object/versions/VERSION$3/dbt_project.yml