Understand dbt project objects¶
A DBT PROJECT is a schema-level object that contains versioned source files for your dbt project in Snowflake. You can connect a dbt project object to a workspace, or you can create and manage the object independently of a workspace.
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';
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;
--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.
For more information about versioning, see Versionen für dbt-Projektobjekte und -Dateien.