Tutorial: Erste Schritte mit dbt-Projekten auf Snowflake

Einführung

Dieses Tutorial führt Sie durch die Erstellung eines Arbeitsbereichs für dbt Projects on Snowflake, der mit einem GitHub-Repository verbunden ist, das Sie von unserem Repository getting-started-with-dbt-on-snowflake in Snowflake Labs abspalten (forken). Anschließend verwenden Sie den Arbeitsbereich, um dbt-Projektdateien zu aktualisieren und das dbt-Projekt zu testen und auszuführen, das die Datenmodellausgabe des dbt-Projekts in Snowflake-Zieldatenbanken und -Schemas materialisiert. Sie stellen das Projekt bereit, um ein dbt-Projektobjekt in Snowflake zu erstellen. Abschließend richten Sie eine Aufgabe ein, um das Projekt nach einem von Ihnen festgelegten Zeitplan auszuführen.

Voraussetzungen

  • GitHub

    • Ein GitHub-Konto, das ein Repository erstellen und den Zugriff auf dieses Repository verwalten kann.

    • Git in der Befehlszeile. Weitere Informationen zur Installation finden Sie unter Git einrichten.

  • Snowflake

    • Ein Snowflake-Konto und ein Benutzer mit Berechtigungen wie unter Zugriffssteuerung für dbt-Projekte in Snowflake beschrieben.

    • Berechtigungen zum Erstellen und Bearbeiten der folgenden Objekte oder Zugang zu einem Administrator, der diese in Ihrem Namen erstellen kann:

      • Ein API-Integration

      • Falls Ihr GitHub-Repository privat ist, ein Geheimnis

      • Eine Netzwerkregel

      • Eine Integration für den externen Zugriff, die auf die Netzwerkregel verweist

      • Ihr Benutzerobjekt

Einrichten Ihrer Umgebung

Führen Sie die folgenden Schritte aus, um Ihre Umgebung für dieses Tutorial einzurichten:

  1. Forken und Klonen des dbt Projects on Snowflake-Getting-Started-Repositorys

  2. (Optional) Erstellen Sie ein Warehouse für die Ausführung von Arbeitsbereichsaktionen

  3. Erstellen einer Datenbank und eines Schemas für Integrationen und Modellmaterialisierungen

  4. Erstellen einer API-Integration in Snowflake für die Verbindung mit GitHub

  5. Erstellen einer Integration für den externen Zugriff für dbt-Abhängigkeiten in Snowflake

Forken und Klonen des dbt Projects on Snowflake-Getting-Started-Repositorys

  1. Rufen Sie https://github.com/Snowflake-Labs/getting-started-with-dbt-on-snowflake auf, wählen Sie den nach unten weisenden Pfeil neben Fork und dann Create a new fork aus.

  2. Geben Sie den Eigentümer und den Namen Ihres geforkten Repositorys und andere Details an. Im weiteren Verlauf des Tutorials verwenden wir die folgende URL, um Ihr geforktes Repository darzustellen:

    https://github.com/my-github-account/getting-started-with-dbt-on-snowflake.git
    
    Copy

(Optional) Erstellen Sie ein Warehouse für die Ausführung von Arbeitsbereichsaktionen

Ein spezielles Warehouse, das Ihrem Arbeitsbereich zugeordnet ist, kann Ihnen helfen, Aktionen zu protokollieren, zu verfolgen und zu identifizieren, die von diesem Arbeitsbereich aus initiiert wurden. In diesem Tutorial verwenden wir ein Warehouse namens TASTY_BYTES_DBT_WH. Alternativ können Sie auch ein bestehendes Warehouse in Ihrem Konto verwenden. Weitere Informationen zur Auswahl eines Warehouse finden Sie unter Erstellen von Warehouses.

Das „Tasty Bytes“-Datenmodell, das Sie für die Quelldaten erstellen, ist relativ groß, daher empfehlen wir die Verwendung eines XL-Warehouse.

Um ein Warehouse zu erstellen, führen Sie den folgenden SQL-Befehl aus:

CREATE WAREHOUSE tasty_bytes_dbt_wh WAREHOUSE_SIZE = XLARGE;
Copy

Erstellen einer Datenbank und eines Schemas für Integrationen und Modellmaterialisierungen

Dieses Tutorial verwendet eine Datenbank namens TASTY_BYTES_DBT_DB. Innerhalb dieser Datenbank erstellen Sie ein Schema mit dem Namen INTEGRATIONS, um die Objekte zu speichern, die Snowflake für die GitHub-Integration benötigt. Sie erstellen Schemas mit den Namen DEV und PROD, um materialisierte Objekte zu speichern, die Ihr dbt-Projekt erstellt.

Um die Datenbank und das Schema zu erstellen, führen Sie den folgenden SQL-Befehl aus.

CREATE DATABASE tasty_bytes_dbt_db;
CREATE SCHEMA tasty_bytes_dbt_db.integrations;
CREATE SCHEMA tasty_bytes_dbt_db.dev;
CREATE SCHEMA tasty_bytes_dbt_db.prod;
Copy

Erstellen einer API-Integration in Snowflake für die Verbindung mit GitHub

Snowflake benötigt eine API-Integration zur Interaktion mit GitHub.

Wenn Ihr Repository privat ist, müssen Sie in Snowflake außerdem ein Geheimnis erstellen, um GitHub-Anmeldeinformationen für Ihr Repository zu speichern. Sie geben dann das Geheimnis in der API-Integrationsdefinition als eines der ALLOWED_AUTHENTICATION_SECRETS an. Sie geben dieses Geheimnis auch an, wenn Sie später in diesem Tutorial den Arbeitsbereich für Ihr dbt-Projekt erstellen.

Das Erstellen eines Geheimnisses erfordert ein persönliches Zugriffstoken für Ihr Repository. Weitere Informationen zum Erstellen eines Tokens finden Sie unter Verwalten der persönlichen Zugriffstoken in der GitHub-Dokumentation.

Diese Tutorial verwendet ein Geheimnis namens TB_DBT_GIT_SECRET. Weitere Informationen zum Erstellen von Geheimnissen finden Sie unter Einrichten von Snowflake für Verwendung von Git.

Um ein Geheimnis für GitHub zu erstellen, führen Sie die folgenden SQL-Befehle aus:

USE tasty_bytes_dbt_db.integrations;
CREATE OR REPLACE SECRET tasty_bytes_dbt_db.integrations.tb_dbt_git_secret
  TYPE = password
  USERNAME = 'your-gh-username'
  PASSWORD = 'YOUR_PERSONAL_ACCESS_TOKEN';
Copy

Um eine API-Integration für GitHub zu erstellen, die das soeben erstellte Geheimnis verwendet, führen Sie den folgenden SQL-Befehl aus. Ersetzen Sie https://github.com/my-github-account mit der SSH-URL des GitHub-Kontos für Ihr geforktes Repository:

CREATE OR REPLACE API INTEGRATION tb_dbt_git_api_integration
  API_PROVIDER = git_https_api
  API_ALLOWED_PREFIXES = ('https://github.com/my-github-account')
  -- Comment out the following line if your forked repository is public
  ALLOWED_AUTHENTICATION_SECRETS = (tasty_bytes_dbt_db.integrations.tb_dbt_git_secret)
  ENABLED = TRUE;
Copy

Erstellen einer Integration für den externen Zugriff für dbt-Abhängigkeiten in Snowflake

Wenn Sie dbt-Befehle in einem Arbeitsbereich ausführen, muss dbt zum Herunterladen von Abhängigkeiten möglicherweise auf die Remote-URLs zugreifen. Beispielsweise muss dbt Pakete aus dem dbt-Paket-Hub oder von GitHub herunterladen.

Die meisten dbt-Projekte geben die Abhängigkeiten in ihrer packages.yml-Datei an. Sie müssen diese Abhängigkeiten im dbt-Projekt-Arbeitsbereich installieren. Sie können ein bereitgestelltes dbt-Projektobjekt nicht mit Abhängigkeiten aktualisieren.

Um Abhängigkeitsdateien von Remote-URLs zu erhalten, benötigt Snowflake eine externe Zugriffsintegration, die auf einer Netzwerkregel beruht.

Weitere Informationen zu Integrationen für den externen Zugriff in Snowflake finden Sie unter Erstellen und Verwenden einer Integration für den externen Zugriff.

Um eine neue Netzwerkregel und eine externe Zugriffsintegration zu erstellen, führen Sie folgende SQL-Befehle aus:

-- Create NETWORK RULE for external access integration

CREATE OR REPLACE NETWORK RULE dbt_network_rule
  MODE = EGRESS
  TYPE = HOST_PORT
  -- Minimal URL allowlist that is required for dbt deps
  VALUE_LIST = (
    'hub.getdbt.com',
    'codeload.github.com'
    );

-- Create EXTERNAL ACCESS INTEGRATION for dbt access to external dbt package locations

CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION dbt_ext_access
  ALLOWED_NETWORK_RULES = (dbt_network_rule)
  ENABLED = TRUE;
Copy

Erstellen eines Arbeitsbereichs, der mit Ihrem Git-Repository verbunden ist

In diesem Schritt erstellen Sie einen Arbeitsbereich in Snowsight, der mit Ihrem GitHub-Repository verbunden ist. Weitere Informationen zu Arbeitsbereichen finden Sie unter Workspaces.

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü auf der linken Seite die Option Projects » Arbeitsbereiche aus.

  3. Wählen Sie in der Liste der Arbeitsbereiche oberhalb des Bereichs der Arbeitsbereichsdateien unter Create Workspace die Option From Git repository aus. (In der Liste der Arbeitsbereiche ist standardmäßig My Workspace ausgewählt.)

  4. Für Repository URL geben Sie die SSH-URL Ihres geforkten GitHub-Repositorys ein, zum Beispiel https://github.com/my-github-account/getting-started-with-dbt-on-snowflake.git

  5. Geben Sie unter Workspace name einen Namen ein. Später in diesem Tutorial verwenden wir tasty_bytes_dbt.

  6. Unter API integration wählen Sie den Namen der API-Integration aus, die Sie zuvor erstellt haben; zum Beispiel TB_DBT_GIT_API_INTEGRATION.

  7. Wenn Ihr GitHub-Repository öffentlich ist, wählen Sie Public repository und dann Create aus.

    Bemerkung

    Arbeitsbereiche unterstützen nicht das Übertragen und Verschieben von Änderungen aus einem Arbeitsbereich in ein öffentliches Repository.

  8. Wenn Ihr GitHub-Repository privat ist und Sie ein Geheimnis für IhreAPI-Integration während der Einrichtung erstellt haben, gehen Sie wie folgt vor:

    1. Wählen Sie Personal access token aus.

    2. Wählen Sie unter Credentials secret die Option Select database and schema aus.

    3. Wählen Sie die Datenbank aus der Liste aus (z. B. TASTY_BYTES_DBT_DB), und wählen Sie dann das Schema in der Liste aus (z. B. INTEGRATIONS), in dem Sie die API-Integration gespeichert haben.

    4. Wählen Sie Select secret und dann Ihr Geheimnis aus der Liste aus, zum Beispiel tb_dbt_git_secret.

  9. Wählen Sie Create aus.

    Snowflake verbindet sich mit dem GitHub-Repository, das Sie angegeben haben, und öffnet Ihren neuen Arbeitsbereich. Ein einzelner Ordner im Arbeitsbereich mit dem Namen tasty_bytes_dbt_demo enthält das dbt-Projekt, mit dem Sie arbeiten werden.

Überprüfen des Inhalts der Datei profile.yml in Ihrem dbt-Projektstamm

Jeder dbt-Projektordner in Ihrem Snowflake-Arbeitsbereich muss eine profiles.yml-Datei enthalten, die ein Ziel-warehouse, database, schema und role in Snowflake für das Projekt angibt. Der type muss auf snowflake gesetzt sein. dbt erfordert ein account und einen user, aber diese können mit einer leeren oder beliebigen Zeichenfolge belassen werden, da das dbt-Projekt in Snowflake unter dem aktuellen Konto- und Benutzerkontext ausgeführt wird.

Wenn Sie dbt-Befehle ausführen, liest Ihr Arbeitsbereich die profiles.yml-Datei. Wenn Sie mindestens ein gültiges target in profiles.yml angegeben haben, kann jedes Ziel aus der Profile-Liste in der Menüleiste über dem Bearbeitungsbereich für Arbeitsbereiche ausgewählt werden. Wenn Sie einen dbt-Befehl ausführen, verwendet der Arbeitsbereich das ausgewählte Profil (target), um den Befehl auszuführen.

Öffnen Sie sie tasty_bytes_dbt_demo/profiles.yml-Datei und überprüfen Sie dann, ob der Inhalt mit dem folgenden Beispiel übereinstimmt. Wenn Sie zuvor andere Datenbank- oder Warehouse-Namen angegeben haben, ersetzen Sie diese durch Ihre eigenen.

tasty_bytes:
target: dev
outputs:
  dev:
    type: snowflake
    account: 'not needed'
    user: 'not needed'
    role: accountadmin
    database: tasty_bytes_dbt_db
    schema: dev
    warehouse: tasty_bytes_dbt_wh
  prod:
    type: snowflake
    account: 'not needed'
    user: 'not needed'
    role: accountadmin
    database: tasty_bytes_dbt_db
    schema: prod
    warehouse: tasty_bytes_dbt_wh
Copy

Ausführen der SQL-Befehle in Tasty_bytes_setup.sql, um die Quelldaten einzurichten

Als Quelldaten für seine Transformationen verwendet das dbt-Projekt in Ihrem Repository das grundlegende Datenmodell für die fiktive Food-Truck-Marke „Tasty Bytes“. Das SQL-Skript zum Erstellen des Datenmodells befindet sich im Arbeitsbereich.

  1. Navigieren Sie in Ihrem Arbeitsbereich zur Datei tasty_bytes_dbt_demo/setup/tasty_bytes_setup.sql und öffnen Sie sie.

  2. Wählen Sie in der Kontextauswahl oben rechts im Arbeitsbereichs-Editor das Warehouse aus, das Sie zuvor erstellt haben, zum Beispiel TASTY_BYTES_DBT_WH.

  3. Die SQL-Datei enthält Befehle, die Sie in diesem Tutorial bereits ausgeführt haben. Suchen Sie am Anfang der Datei die folgenden Befehle und kommentieren Sie sie aus, damit Sie sie nicht erneut ausführen und doppelte Ressourcen erstellen:

    CREATE OR REPLACE WAREHOUSE ...;
    CREATE OR REPLACE API INTEGRATION ...;
    CREATE OR REPLACE NETWORK RULE ...;
    CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION ...;
    
    Copy
  4. Führen Sie die nicht auskommentierten SQL-Befehle in der Datei aus.

    Tipp

    Verwenden Sie Befehl + Shift + Enter, um alle nicht auskommentierten Befehle auszuführen.

    Die Registerkarte Output zeigt die folgende Meldung an:

    tb_101 setup is now complete

Aktivieren von Protokollierung, Ablaufverfolgung und Metriken

Sie können Protokollierungs- und Ablaufverfolgungsereignisse für ein dbt-Projektobjekt und ggf. für die Aufgabe, die es nach einem Zeitplan ausführt, erfassen. Weitere Informationen dazu finden Sie unter dbt-Projekte in Snowflake überwachen.

Um dieses Feature zu aktivieren, müssen Sie die Protokollierung, Ablaufverfolgung und Metriken für das Schema einstellen, in dem das dbt-Projektobjekt und die Aufgabe bereitgestellt werden.

Die folgenden Befehle in der tasty_bytes_setup.sql-Datei aktivieren die Protokollierung, die Ablaufverfolgung und die Metriken für die DEV- und PROD-Schemas in der Datenbank TASTY_BYTES_DBT_DB. Diese haben Sie im vorherigen Schritt ausgeführt. Sie werden hier als Referenz angezeigt, sodass Sie die Protokollierung, Ablaufverfolgung und Metriken für Ihre eigenen Projekte aktivieren können.

ALTER SCHEMA tasty_bytes_dbt_db.dev SET LOG_LEVEL = 'INFO';
ALTER SCHEMA tasty_bytes_dbt_db.dev SET TRACE_LEVEL = 'ALWAYS';
ALTER SCHEMA tasty_bytes_dbt_db.dev SET METRIC_LEVEL = 'ALL';

ALTER SCHEMA tasty_bytes_dbt_db.prod SET LOG_LEVEL = 'INFO';
ALTER SCHEMA tasty_bytes_dbt_db.prod SET TRACE_LEVEL = 'ALWAYS';
ALTER SCHEMA tasty_bytes_dbt_db.prod SET METRIC_LEVEL = 'ALL';
Copy

Ausführen des dbt deps-Befehls für Ihr Projekt

Sie können den Arbeitsbereich verwenden, um gängige dbt-Befehle für ein Projekt auszuführen. Eine Liste der verfügbaren Befehle finden Sie unter Unterstützte dbt-Befehle. Um einen Befehl auszuführen, wählen Sie dbt-Project, Profile und dbt-Befehl aus den Listen über dem Arbeitsbereichs-Editor. Wählen Sie dann die Schaltfläche „Ausführen“ aus. Verwenden Sie den Pfeil nach unten neben der Schaltfläche „Ausführen“, um zusätzliche Argumente anzugeben, die der dbt-Befehl unterstützt.

Wenn Sie einen beliebigen dbt-Befehl innerhalb des Arbeitsbereichs ausführen, wird auf der Registerkarte Output der Befehl angezeigt, der in Snowflake ausgeführt wird (in grün), sowie die Standardausgabe für diesen Befehl, sodass Sie den Erfolg oder das Fehlschlagen des Befehls überwachen können.

Der erste Befehl, den Sie für ein dbt-Projekt ausführen müssen, ist deps, wodurch die in der packages.yml-Datei des Projekts angegebenen Abhängigkeiten aktualisiert werden. Andere Befehle schlagen fehl, es sei denn, Sie haben die Abhängigkeiten aktualisiert. Weitere Informationen dazu finden Sie unter dbt-Abhängigkeiten.

  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 Arbeitsbereichs-Editors, dass die Standardeinstellung Project (tasty_bytes_dbt_demo) ausgewählt ist. Sie können ein beliebiges Profile auswählen. Dieses Projekt enthält die Profile dev und prod, die in der profiles.yml-Datei definiert sind.

  3. Wählen Sie die Profile-Liste und dann Enable secondary roles aus, um Sekundärrollen für dieses Projekt und diese Sitzung zu aktivieren.

    Bemerkung

    Sie müssen Sekundärrollen zunächst die Möglichkeit geben, dbt-Befehle für jedes Projekt während jeder Snowsight-Sitzung auszuführen. Enterprise Edition-Konten können so konfiguriert sein, dass Sekundärrollen für einen bestimmten Benutzer oder alle Benutzer nicht zugelassen sind. Weitere Informationen dazu finden Sie unter Sekundärrollen sind pro Projekt und Sitzung erforderlich..

  4. Wählen Sie in der Befehlsliste Deps aus.

  5. Wählen Sie neben der Schaltfläche zum Ausführen den Pfeil nach unten.

  6. Lassen Sie im Fenster von dbt-Deps Run with defaults ausgewählt, und geben Sie dann an der dafür vorgesehenen Stelle den Namen der External Access Integration ein, die Sie während der Einrichtung erstellt haben; zum Beispiel dbt_ext_access.

  7. Um den Befehl auszuführen, wählen Sie Deps aus.

    Auf der Registerkarte Output wird der SQL-Befehl angezeigt, der in Snowflake ausgeführt wird und dem Folgenden ähnelt:

    execute dbt project from workspace "USER$"."PUBLIC"."tasty_bytes_dbt" project_root='tasty_bytes_dbt_demo' args='deps --target dev' external_access_integrations = (dbt_ext_access)
    
    Copy

    Wenn der Befehl beendet ist, werden Standardmeldungen angezeigt, ähnlich wie diese:

    14:47:19  Running with dbt=1.8.9
    14:47:19  Updating lock file in file path: /tmp/dbt/package-lock.yml
    14:47:19  Installing dbt-labs/dbt_utils
    14:47:19  Installed from version 1.3.0
    14:47:19  Up to date!
    Uploading /tmp/dbt/package-lock.yml to snow://workspace/USER$ADMIN.PUBLIC."tasty_bytes_dbt"/versions/live/dbt//package-lock.yml
    

    Die Datei package_lock.yml wird erstellt und in Ihrer Liste der Arbeitsbereichsdateien mit einem A daneben angezeigt. Dies zeigt an, dass die Datei dem Arbeitsbereich Ihres dbt-Projekts hinzugefügt wurde, mit einem Inhalt, der dem folgenden Beispiel ähnelt:

    packages:
      - package: dbt-labs/dbt_utils
        version: 1.3.0
    
    Copy

Kompilieren des dbt-Projekts, Anzeigen des DAG und kompilierte SQL-Ansicht

Beim Kompilieren eines Projekts in dbt wird ausführbares SQL aus den modellierten SQL-Dateien und eine visuelle Darstellung des Directed Acyclic Graph (DAG) für das Projekt im Arbeitsbereich erstellt. Weitere Informationen zur Kompilierung von dbt-Projekten finden Sie unter Kompilieren in der dbt-Dokumentation.

Nachdem Sie das Projekt im Arbeitsbereich kompiliert haben, können Sie den DAG anzeigen. Sie können auch eine beliebige SQL-Datei im Ordner models öffnen, um das SQL-Modell anzuzeigen und das kompilierte SQL in nebeneinander liegenden Registerkarten anzuzeigen.

  1. Wählen Sie das Projekt und das Ziel aus, das Sie kompilieren möchten.

  2. Wählen Sie in der Befehlsliste Compile aus und dann die Schaltfläche „Ausführen“ (optional können Sie den Pfeil nach unten auswählen und Argumente für den Kompilierungsbefehl angeben).

  3. Wählen Sie im Bereich unterhalb des Arbeitsbereichs-Editors die Registerkarte DAG aus.

    Sie können den Fensterbereich DAG zur Visualisierung Ihrer dbt-Projekttransformationen von Quelldateien zu materialisierten Datenmodellobjekten in Snowflake verwenden.

    • Klicken Sie darauf und ziehen Sie eine beliebige Stelle im Fensterbereich, um die Ansicht zu verschieben.

    • Verwenden Sie die Schaltflächen + und zum Vergrößern und Verkleinern.

  4. Um den Inhalt der Quelldatei eines Objekts im Editor anzuzeigen, wählen Sie eine Kachel für ein beliebiges Objekt aus.

  5. So zeigen Sie das kompilierte SQL in einer aufgeteilten Ansicht im Arbeitsbereichs-Editor an:

    1. Wählen Sie im DAG die Kachel für eine SQL-Modelldatei aus, zum Beispiel: orders.

      –OR–

      Wählen Sie in der Auflistung der Arbeitsbereichsdateien eine beliebige Datei im Unterverzeichnis models Ihres dbt-Projekts aus, um es im Arbeitsbereichseditor zu öffnen.

    2. Wählen Sie View Compiled SQL oben rechts im Arbeitsbereichs-Editor aus, um die kompilierte SQL-Datei in einer aufgeteilten Ansicht anzuzeigen.

Ausführen des dbt dev-Projekts und Überprüfen der materialisierten Snowflake-Objekte

Beim Ausführen des dbt-Befehls run wird Ihr kompiliertes SQL für die Zieldatenbank und das Schema unter Verwendung des Snowflake-Warehouse und der Rolle, die in der Datei profiles.yml des Projekts angegeben sind, ausgeführt. In diesem Schritt wird die Ausgabe des Dev-Ziels in Ihrem dbt-demo-Projekt materialisiert. Anschließend erstellen Sie ein SQL-Arbeitsblatt namens dbt_sandbox.sql im Arbeitsbereich, in dem Sie SQL ausführen können, um die Objekterstellung zu überprüfen.

Wichtig

Wenn Sie den dbt-Befehl Run oder Build für ein Projekt aus einem Arbeitsbereich heraus auswählen, wird die Zielausgabe unter Verwendung der in der Datei profiles.yml des Projekts definierten role und aller Sekundärrollen Ihres Snowflake-Benutzers materialisiert. Sowohl der Benutzer als auch die angegebene Rolle müssen über die erforderlichen Berechtigungen verfügen, um das warehouse verwenden zu können, Operationen für database und schema auszuführen, die in der Datei profiles.yml des Projekts angegeben sind, und Operationen für alle anderen Snowflake-Objekten auszuführen, die das dbt-Modell angibt.

  1. Wählen Sie in der Liste Profile Dev aus.

  2. Wählen Sie in der Befehlsliste die Option Run und dann die Schaltfläche „Ausführen“ aus.

    Der Ausgabebereich zeigt den Abschlussstatus der Ausführung an.

  3. Navigieren Sie in Ihrem tasty_bytes_dbt_demo-Projekt zum Ordner examples, wählen Sie + neben dem Ordnernamen aus und dann SQL File.

  4. Geben Sie dbt_sandbox.sql ein und drücken Sie dann Enter.

  5. Führen Sie auf der Arbeitsbereichs-Registerkarte für dbt_sandbox.sql die folgende Abfrage aus:

    SHOW TABLES IN DATABASE tasty_bytes_dbt_db;
    
    Copy

    Im Bereich Status and Results sollten Sie die Tabellen CUSTOMER_LOYALTY_METRICS, ORDERS und SALES_METRICS_BY_LOCATION sehen.

  6. Um die Ansichten anzuzeigen, die Ihre dbt-Projektausführung erstellt hat, führen Sie den folgenden Befehl aus:

    SHOW VIEWS IN DATABASE tasty_bytes_dbt_db;
    
    Copy

Übertragen Ihrer Dateiaktualisierungen aus dem Arbeitsbereich in Ihr Repository

Nachdem Sie nun Ihren Arbeitsbereich aktualisiert und Ihr Projekt als dbt-Projektobjekt kompiliert, getestet, ausgeführt und bereitgestellt haben, können Sie die Änderungen, die Sie am Arbeitsbereich vorgenommen haben, in Ihr privates GitHub-Repository übertragen. Dieser Schritt wird für öffentliche Repositorys nicht unterstützt.

  1. Wählen Sie in Ihrem geöffneten Arbeitsbereich Changes aus.

    Die Dateiliste im Arbeitsbereich wird gefiltert, um nur Dateien anzuzeigen, die sich seit der Synchronisierung mit dem Git-Repository geändert haben.

    • A zeigt an, dass eine Datei im Arbeitsbereich und nicht zum Git-Repository hinzugefügt wurde.

    • M zeigt an, dass die Datei geändert wurde.

    • D zeigt an, dass die Datei gelöscht wurde.

  2. Wählen Sie eine Datei aus, um deren Vergleich mit GitHub seit dem letzten Abruf (in diesem Fall seit der Arbeitsbereich erstellt wurde) anzuzeigen.

  3. Überprüfen Sie in der Menüleiste über der Auflistung der Arbeitsbereichsdateien, ob die Verzweigungsauswahl für dieses Tutorial auf main eingestellt ist.

  4. Wählen Sie die Push Schaltfläche aus und geben Sie dann eine Commit-Meldung in das dafür vorgesehene Feld ein; zum Beispiel Aktualisierung des Projekts mit ersten Änderungen von dbt in Snowflake.

  5. Wählen Sie Push aus.

    Eine Push-Übertragung in Ihr Repository kann einige Minuten dauern.

Bereitstellen des dbt-Projektobjekts aus dem Arbeitsbereich

Wenn Sie Ihr dbt-Projekt von einem Arbeitsbereich aus bereitstellen, wird ein dbt-Projektobjekt erstellt. Sie können das Objekt verwenden, um ein dbt-Projekt in Snowflake außerhalb des Arbeitsbereichs zu planen, auszuführen und zu überwachen.

Wenn Sie Ihr dbt-Projektobjekt vom Arbeitsbereich in einer Snowflake-Datenbank und einem Schema bereitstellen, können Sie ein Objekt erstellen oder eines überschreiben, das Sie zuvor erstellt haben.

  1. Wählen Sie auf der rechten Seite des Arbeitsbereichseditors Connect » Deploy dbt project aus.

  2. Wählen Sie Select database and schema und dann die TASTY_BYTES_DBT_DB-Datenbank und das DEV-Schema aus.

  3. Wählen Sie unter Select or Create dbt Object die Option Create dbt Object aus.

  4. Geben Sie unter Enter Name TASTY_BYTES_DBT_PROJECT ein, und wählen Sie dann Deploy aus.

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

    create or replace DBT PROJECT "TASTY_BYTES_DBT_DB"."DEV"."TASTY_BYTES_DBT_PROJECT" from snow://workspace/USER$MYUSER.PUBLIC."tasty_bytes_dbt_demo"/versions/live/dbt
    
    tasty_bytes_dbt_project successfully created.
    
    Copy

    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.

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

  5. Um die Erstellung des Projekts zu überprüfen, führen Sie eine oder beide der folgenden Aufgaben aus:

    • Wählen Sie im Menü für das dbt-Projekt die Option View project aus, um das dbt-Projektobjekt im Objekt-Explorer zu öffnen.

      –OR–

    • Führen Sie über das zuvor erstellte Arbeitsblatt dbt_sandbox.sql den folgenden Befehl aus:

      SHOW DBT PROJECTS LIKE 'tasty%';
      
      Copy

Erstellen einer Aufgabe, um die Ausführung des dbt-Projekts zu planen

Nachdem Sie Ihr dbt-Projektobjekt bereitgestellt haben, können Sie den Arbeitsbereich oder SQL verwenden, um eine Aufgabe einzurichten, die einen dbt-Befehl für Ihr dbt-Projektobjekt ausführt.

Mit den folgenden Schritten wird ein Zeitplan erstellt, um das dbt-Projekt jede Stunde jeweils eine Minute nach der vollen Stunde auszuführen. Die Task führt den dbt-Befehl run mit der Option --select aus, um das Modell customer_loyalty_metrics im dbt-Projekt auszuführen.

  1. Wählen Sie im dbt-Projektmenü in der oberen rechten Ecke des Arbeitsbereichseditors die Option Create schedule aus.

  2. Im Dialogfeld Schedule a dbt run gehen Sie wie folgt vor:

    • Unter Schedule name geben Sie einen Namen für die Aufgabe ein, zum Beispiel: run_prepend_data_dbt.

    • Unter Frequency lassen Sie Hourly auf 01 für die von Ihnen gewählte Zeitzone.

    • Unter dbt properties:

      • Wählen Sie unter Operation die Option run aus.

      • Wählen Sie unter Profile die Option dev aus.

      • Unter Additional flags geben Sie --select customer_loyalty_metrics ein.

  3. Wählen Sie Create aus.

    Snowflake erstellt eine Aufgabe, die den Befehl EXECUTE DBT PROJECT mit diesen Parametern ausführt. Weitere Informationen zu Aufgaben und Aufgabenoptionen finden Sie unter Einführung in Aufgaben und CREATE TASK.

  4. Wählen Sie im dbt-Projektmenü die Option View schedules und dann in der Liste Ihren Zeitplan aus.

    Der Objekt-Explorer öffnet sich für Ihre Datenbank mit dem geöffneten Fensterbereich Task Details für die Aufgabe. Task Definition zeigt einen Befehl CREATE TASK ungefähr wie folgt an:

    CREATE OR REPLACE TASK tasty_bytes_dbt_db.dev.run_prepped_data_dbt
            WAREHOUSE=tasty_bytes_dbt_wh
            SCHEDULE ='USING CRON 1 * * * * America/Los_Angeles'
          AS
      EXECUTE DBT PROJECT tasty_bytes_dbt_project ARGS='run --select customer_loyalty_metrics --target dev';
    
    Copy

Bereinigen

Sie können nach diesem Tutorial die erstellten Datenbanken, Arbeitsbereiche und das Warehouse löschen, um alles zu bereinigen.

Führen Sie folgende SQL-Befehle von Ihrem dbt_sandbox.sql-Arbeitsblatt zum Entfernen des Warehouse, der TASTY_BYTES_DBT_DB- und TB_101-Datenbanken, die Sie erstellt haben, und alle in den Datenbanken erstellten Schemas und Objekte aus:

DROP WAREHOUSE IF EXISTS tasty_bytes_dbt_wh;
DROP DATABASE IF EXISTS tasty_bytes_dbt_db;
DROP DATABASE IF EXISTS tb_101;
Copy

So löschen Sie Ihren Arbeitsbereich „tasty_bytes_dbt_demo“:

  • Wählen Sie über das vertikale Ellipsenmenü Weitere Aktionen für das Arbeitsblatt neben dem Arbeitsbereichsmenü oben im Arbeitsbereichs-Explorer Delete aus und bestätigen Sie dann den Löschvorgang, wenn Sie dazu aufgefordert werden.