Bereitstellen von dbt-Projektobjekten

In dbt Projects on Snowflake bedeutet die Bereitstellung eines dbt-Projektobjekts, dass Sie Ihren dbt-Projektcode in Snowflake kopieren, um das Objekt zu erstellen oder es mit einer neuen Version zu aktualisieren. Sie tun dies mit den Befehlen Snowsight, CREATE DBT PROJECT oder ALTER DBT PROJECT SQL oder mit dem Befehl snow dbt deploy in der Snowflake CLI.

Bereitstellen eines dbt-Projektobjekts mit Snowsight

Beim Bereitstellen eines dbt-Projektobjekts in Snowsight wird der dbt-Code in Ihrem Arbeitsbereich verwendet und ein neues dbt-Projekt erstellt oder ein bestehendes dbt-Projekt aktualisiert.

Um ein dbt-Projektobjekt in Snowsight bereitzustellen, führen Sie den Befehl „dbt deps“ aus. Führen Sie anschließend die folgenden Schritte aus:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü die Option Projects » Workspaces aus.

  3. Wählen Sie im Menü Workspaces den Arbeitsbereich aus, der Ihr dbt-Projekt enthält.

  4. Stellen Sie sicher, dass Ihre dbt-Dateien vorhanden sind.

    Um zu überprüfen, ob alles funktioniert, führen Sie den Befehl dbt compile, dbt run oder dbt build wie folgt aus:

    1. Öffnen Sie unterhalb des Arbeitsbereichs-Editors die Registerkarte Output, sodass Sie die stdout-Standardausgabe sehen können, nachdem Sie dbt-Befehle vom Arbeitsbereich aus ausgeführt haben.

    2. Bestätigen Sie in der Menüleiste oberhalb des Arbeitsbereichseditors, dass die korrekte Einstellung für Project und Profile ausgewählt ist.

    3. Wählen Sie in der Befehlsliste dbt compile, dbt run oder dbt build und dann die Schaltfläche „Ausführen“ aus. In diesem Schritt wird Ihr Projekt analysiert.

  5. Wählen Sie oben rechts in Ihrem Arbeitsbereich die Option Connect und dann eine der folgenden Optionen aus:

    • Deploy dbt project zum Herstellen einer Verbindung mit einem neuen dbt-Projekt. Bei der ersten Bereitstellung wird ein dbt-Projektobjekt auf Schemaebene erstellt.

    • :Existing dbt deployment zum Herstellen einer Verbindung mit einem bestehenden dbt-Projekt. Durch die Bereitstellung wird dem vorhandenen dbt-Projektobjekt eine neue Version hinzugefügt (entspricht ALTER DBT PROJECT ADD VERSION FROM 'snow://workspace/…/versions/last').

  6. Wählen Sie im Popupfenster Deploy dbt project Folgendes aus:

    • Wählen Sie unter Select location Ihre Datenbank und Ihr Schema aus.

    • Wählen Sie unter Select or Create dbt projecr die Option Create dbt project aus.

    • Geben Sie einen Namen und eine Beschreibung ein.

    • Optional können Sie ein Standardziel eingeben, um auszuwählen, welches Profil für die Kompilierung und nachfolgende Ausführungen verwendet werden soll (z. B. prod). Das Ziel einer dbt-Projektausführung kann mit --target in ARGS trotzdem überschrieben werden.

    • Optional können Sie Run dbt deps und dann Ihre Integration für den externen Zugriff auswählen, damit dbt deps während der Bereitstellung automatisch ausgeführt wird.

  7. Wählen Sie Deploy aus.

    Auf der Registerkarte Output wird der Befehl angezeigt, der in Snowflake ausgeführt wird und dem folgenden Beispiel ähnelt:

    CREATE DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project
      FROM 'snow://workspace/mydb.my_dbt_projects_schema.sales_model/versions/version$2'
      EXTERNAL_ACCESS_INTEGRATIONS = ();
    
    Copy
    my_dbt_project successfully created.
    

    Das Connect-Menü zeigt jetzt den Namen des von Ihnen erstellten dbt-Projektobjekts mit den folgenden Optionen an:

    • Redeploy dbt project: Aktualisiert das dbt-Projektobjekt mit der aktuellen Arbeitsbereichsversion des Projekts mithilfe von ALTER. Dies erhöht die Version des dbt-Projektobjekts um 1. Weitere Informationen dazu finden Sie unter Versionierung für dbt-Projektobjekte und -Dateien.

    • Disconnect: Trennt den Arbeitsbereich vom dbt-Projektobjekt, löscht aber nicht das dbt-Projektobjekt.

    • Edit project: Aktualisieren Sie den Kommentar, das Standardziel und die Integration für den externen Zugriff für das dbt-Projektobjekt.

    • View project: Öffnet das dbt-Projektobjekt im Objekt-Explorer, wo Sie den Befehl CREATE DBT PROJECT für das dbt-Projektobjekt und den Ausführungsverlauf für das Projekt anzeigen können.

    • Create schedule: Bietet Optionen, um eine Aufgabe zu erstellen, die das dbt-Projektobjekt nach einem Zeitplan ausführt. Weitere Informationen dazu finden Sie unter Erstellen einer Aufgabe, um die Ausführung des dbt-Projekts zu planen.

    • View schedules: Öffnet eine Liste der Zeitpläne (Aufgaben), die das dbt-Projektobjekt ausführen, mit der Option, Aufgabendetails im Objekt-Explorer anzuzeigen.

  8. Optional können Sie bestätigen, dass Ihr dbt-Projekt existiert, indem Sie den Befehl SHOW DBT PROJECTS in einem Arbeitsblatt ausführen, zum Beispiel:

    SHOW DBT PROJECTS IN DATABASE mydb;
    
    Copy

Bereitstellen eines dbt-Projektobjekts mit SQL-Befehlen

Mit den Befehlen CREATE DBT PROJECT und ALTER DBT PROJECT können Sie die in der FROM-Klausel angegebenen Dateien der Anweisung kopieren, um neue Versionen zu erstellen bzw. zu einem dbt-Projektobjekt hinzuzufügen.

Der Befehl CREATE DBT PROJECT erstellt ein neues Objekt mit einer einzigen Startversion (z. B. VERSION$1), wie unten gezeigt.

CREATE DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main'
  DEFAULT_TARGET = 'prod'
  EXTERNAL_ACCESS_INTEGRATIONS = my_dbt_ext_access
  COMMENT = 'Generates sales data models.';
Copy

Der Befehl ALTER DBT PROJECT erstellt eine neue Version innerhalb des bestehenden Objekts mit einer eindeutigen, inkrementierten Versionsnummer (z. B. VERSION$2, VERSION$3 usw.).

-- Update the Git repository object to fetch the latest code
ALTER GIT REPOSITORY sales_db.integrations_schema.sales_dbt_git_stage FETCH;

-- Add a new version to the dbt project object based on the updated Git repository object
ALTER DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project
  ADD VERSION
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_project';
Copy

Bereitstellen eines dbt-Projektobjekts mit Snowflake CLI

Mit dem Befehl snow dbt deploy werden lokale Dateien in einen temporären Stagingbereich hochgeladen. Es wird ein neues dbt-Projektobjekt erstellt, ein vorhandenes durch Erstellen einer neuen Version aktualisiert oder ein Objekt vollständig neu erstellt. Ein gültiges dbt-Projekt muss zwei Dateien enthalten:

  • dbt_project.yml: Eine Standard-dbt-Konfigurationsdatei, die das zu verwendende Profil angibt.

  • profiles.yml: Eine Definition des dbt-Verbindungsprofils, auf die in dbt_project.yml verwiesen wird. In profiles.yaml müssen die Datenbank, die Rolle, das Schema und der Typ definiert werden.

    • Standardmäßig verwendet dbt Projects on Snowflake Ihr Zielschema (target.schema), das in Ihrer dbt-Umgebung oder Ihrem -Profil angegeben wurde. Im Gegensatz zum Verhalten von dbt Core muss das in der Datei profiles.yml angegebene Zielschema vorhanden sein, bevor Sie Ihr dbt-Projekt erstellen, damit es erfolgreich kompiliert oder ausgeführt werden kann.

    <profile_name>:
    target: dev
    outputs:
      dev:
        database: <database_name>
        role: <role_name>
        schema: <schema_name>
        type: snowflake
    
    Copy

Die folgenden Beispiele veranschaulichen die Verwendung des Befehls snow dbt deploy:

  • Stellen Sie das dbt-Projektobjekt jaffle_shop bereit:

    snow dbt deploy jaffle_shop
    
    Copy
  • Stellen Sie das Projekt jaffle_shop aus einem bestimmten Verzeichnis bereit, und erstellen oder fügen Sie eine neue Version hinzu, je nachdem, ob das dbt-Projektobjekt bereits vorhanden ist:

    snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --force
    
    Copy
  • Stellen Sie das Projekt jaaffle_store aus einem bestimmten Verzeichnis unter Verwendung eines kundenspezifischen Profilverzeichnisses und der Aktivierung von Integrationen für den externen Zugriff bereit:

    snow dbt deploy jaffle_shop --source /path/to/dbt/directory
    --profiles-dir ~/.dbt/ --default-target dev
    --external-access-integration dbthub-integration
    --external-access-integration github-integration
    --force
    
    Copy

Speicherorte der Quelldateien

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'

    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'

    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 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, live oder der Bezeichner für eine bestehende Version im Format version$<num> sein. Weitere Informationen dazu finden Sie unter Versionierung für dbt-Projektobjekte und -Dateien.