Überwachen von dbt Projects on Snowflake

In diesem Thema wird erklärt, wie Sie die Überwachungsfeatures für dbt Projects on Snowflake verwenden können, um die Ausführung von dbt-Projekten – manuell oder aufgabengeplant – und die Anzeige von Protokollen und Artefakten zu überprüfen.

Abschnitt

Beschreibung

Überwachungsfeatures für dbt-Projektobjekte aktivieren

Erfassen Sie Protokollierungs- und Ablaufverfolgungsereignisse für ein dbt-Projektobjekt und für eine geplante Aufgabe, die es ausführt. 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.

Geplante Ausführung von dbt-Projektobjekten überwachen

Wählen Sie in Snowsight im linken Navigationsmenü Transformation » dbt Projects aus, um den Ausführungsverlauf, die Task-Graphen und die Abfragedetails für dbt-Projektobjekte anzuzeigen. Wenn ein Arbeitsbereich mit einem dbt-Projektobjekt verbunden ist, das nach einem Aufgabenzeitplan ausgeführt wird, können Sie den Verlauf der Aufgabenausführung und Task-Graphen innerhalb des Arbeitsbereichs öffnen.

Programmgesteuert auf dbt-Artefakte und -Protokolle zugreifen

Verwenden Sie die Tabellenfunktion DBT_PROJECT_EXECUTION_HISTORYund die dbt-Systemfunktionen für den programmgesteuerten Zugriff auf dbt-Artefakte und -Protokolle.

Überwachungsfeatures für dbt-Projektobjekte aktivieren

Um die Überwachungsfeatures für Ihr dbt-Projektobjekt zu aktivieren, legen Sie LOG_LEVEL, TRACE_LEVEL und METRIC_LEVEL für die Datenbank und das Schema fest, in denen Ihr dbt-Projektobjekt erstellt wird, wie im folgenden SQL-Beispiel gezeigt:

ALTER SCHEMA my_db.my_dbt_project_schema SET LOG_LEVEL = 'INFO';
ALTER SCHEMA my_db.my_dbt_project_schema SET TRACE_LEVEL = 'ALWAYS';
ALTER SCHEMA my_db.my_dbt_project_schema SET METRIC_LEVEL = 'ALL';

Geplante Ausführung von dbt-Projektobjekten überwachen

Wenn Sie ein bereitgestelltes dbt-Projektobjekt nach einem Zeitplan mithilfe einer Aufgabe ausführen und sich die Aufgabe in demselben Schema wie das dbt-Projektobjekt befindet, können Sie geplante Aufgaben direkt aus dem Arbeitsbereich anzeigen, indem Sie Connect und dann View Schedules auswählen.

Bemerkung

Dieses Feature ist nur für Arbeitsbereiche verfügbar, die mit einem dbt-Projektobjekt verbunden sind.

So überwachen Sie die geplante Ausführung eines dbt-Projektobjekts von einem Arbeitsbereich aus:

  1. Wählen Sie aus dem dbt-Projektmenü auf der rechten Seite des Projektbereichs unter Scheduled runs die Option View schedules aus.

  2. Wählen Sie in der Liste den Zeitplan (Aufgabe) aus, den Sie überprüfen möchten, und wählen Sie dann View details.

    Der Informationsbereich der Aufgabe wird geöffnet. Hier können Sie die Task details, den Task-Graph (falls zutreffend) und den Run History dieser Aufgabe anzeigen. Weitere Informationen dazu finden Sie unter View tasks and task graphs in Snowsight.

  3. Wählen Sie unter Run History für eine beliebige geplante dbt-Projektobjektausführung in der Liste ganz rechts die Schaltfläche „Open query history“ aus, um Abfragedetails, das Abfrageprofil und die Abfragetelemetrie für die Ausführung anzuzeigen. Weitere Informationen dazu finden Sie unter Details und Profil einer bestimmten Anfrage überprüfen.

dbt-Projektobjekte in Snowsight überwachen

Um detaillierte Überwachungsinformationen über die Ausführung von dbt-Projektobjekten anzuzeigen, navigieren Sie zu Transformations » dbt Projects in Snowsight. Sie müssen eine Rolle mit der MONITOR-Berechtigung verwenden, um Monitoring-Informationen für das dbt-Projektobjekt anzuzeigen. Weitere Informationen dazu finden Sie unter Zugriffssteuerung für dbt-Projekte in Snowflake.

  1. Wählen Sie im Navigationsmenü die Option Transformation » dbt Projects aus. Ein Histogramm zeigt die Häufigkeit der Ausführungen von dbt-Projektobjekten und eine Liste der ausgeführten Projekte an.

    Die Liste der dbt-Projektobjekte enthält Spalten mit den folgenden Informationen: Sie können die Liste nach Datumsbereich, Befehl und Ausführungsstatus filtern.

    • PROJECT: Der Name des dbt-Projektobjekts und die Anzahl der Ausführungen (Läufe) im ausgewählten Zeitraum.

    • LAST COMMAND: Der dbt-Befehl, der bei der letzten Ausführung ausgeführt wurde.

    • LAST RUN STATUS: Das Ergebnis der Ausführung: Succeeded, Executing`oder :ui:`Failed.

    • LAST RUN: Die verstrichene Zeit seit der letzten Ausführung. Um die Sortierreihenfolge umzukehren, wählen Sie die Spaltenüberschrift aus. Die letzte Ausführung wird standardmäßig zuerst angezeigt.

    • PREVIOUS RUNS: Die Anzahl der Ausführungen im ausgewählten Zeitraum nach Status.

    • DATABASE und SCHEMA: Die Datenbank und das Schema, in denen das dbt-Projektobjekt gespeichert ist.

    • LAST RUN PARAMETERS: Die dbt-Befehlszeilenargumente (ARGS), die im Befehl EXECUTE DBT PROJECT für die letzte Ausführung des dbt-Projektobjekts angegeben sind.

  2. Um einzelne Projektausführungen zu prüfen, wählen Sie ein dbt-Projektobjekt aus der Liste aus.

    Die Seite mit den Details des dbt-Projektobjekts im Datenbankobjekt-Explorer wird für dieses dbt-Projektobjekt geöffnet.

    Die Registerkarte Run History ist standardmäßig ausgewählt. Sie enthält für jede Jobausführung im ausgewählten Zeitraum die folgenden Informationen:

    • COMMAND: Der dbt-Befehl, der bei der letzten Ausführung ausgeführt wurde.

    • STATUS: Das Ergebnis der Ausführung: Succeeded, Executing`oder :ui:`Failed.

    • RUN TIME: Die verstrichene Zeit seit der letzten Ausführung. Um die Sortierreihenfolge umzukehren, wählen Sie die Spaltenüberschrift aus. Die letzte Ausführung wird standardmäßig zuerst angezeigt.

    • PARAMETERS: Die dbt-Befehlszeilenargumente (ARGS), die im Befehl EXECUTE DBT PROJECT für die letzte Ausführung des dbt-Projektobjekts angegeben sind.

  3. Um die Details für eine Ausführung anzuzeigen, wählen Sie diese in der Liste aus.

    Die Seite Query Details wird für die EXECUTE DBT PROJECT-Abfrage geöffnet, die ausgeführt wurde. Die Seite enthält die folgenden Registerkarten:

    • Query Details – Zeigt den Ausführungsstatus, Startzeit, Endzeit, Dauer, Warehouse-Größe, Abfrage-ID und denSQL-Text des Befehls EXECUTE DBT PROJECT an. Zeigt auch Ergebnisse pro Modell für den dbt-Befehl an, der ausgeführt wurde (z. B. build), einschließlich Modellname, benötigte Zeit und Status.

    • Query Profile – Zeigt den Abfrageausführungsplan und die Performancestatistiken an.

    • Query Telemetry – Zeigt Telemetriedaten für die Ausführung an.

    • DAG – Visualisiert die Modelle, die während der Ausführung ausgeführt wurden, und deren Ergebnisse. Weitere Informationen dazu finden Sie unter DAG-Abfrageverlauf anzeigen.

    Weitere Informationen dazu finden Sie unter Details und Profil einer bestimmten Anfrage überprüfen.

DAG-Abfrageverlauf anzeigen

Die Query Details für eine dbt-Projektobjektausführung umfassen eine DAG-Registerkarte, die visualisiert, was während der Ausführung ausgeführt wurde und welche Ergebnisse für jedes Modell vorliegen. Dies unterscheidet sich vom DAG auf der Seite „Projektdetails“, die als Dokumentationsebene für Ihr Projekt dient, einschließlich Modelle, Tests, Quellen und deren Abhängigkeiten.

Der DAG des Abfrageverlaufs wird aus den während einer Ausführung erzeugten manifest.json- und run_results.json-Artefakten erstellt. Wählen Sie einen Knoten im DAG aus, um ein Seitenpanel mit Details zu dieser spezifischen Abfrage zu öffnen, einschließlich der Abfrage-ID sowie eventueller Fehlermeldungen, falls die Abfrage fehlgeschlagen ist.

DAG-Abfrageverlauf anzeigen:

  1. Wählen Sie im Navigationsmenü die Option Transformations » dbt Projects aus.

  2. Wählen Sie in der Liste der dbt-Projektobjekte ein Projekt aus.

  3. Wählen Sie auf der Registerkarte Run History eine Ausführung aus, um die Query Details für diese Ausführung zu öffnen.

  4. Wählen Sie die Registerkarte DAG aus.

Bemerkung

Wenn der Abfrageverlauf DAG „Keine Daten verfügbar“ anzeigt, ist der Lauf wahrscheinlich fehlgeschlagen, bevor run_results.json generiert werden konnte. Weitere Informationen dazu finden Sie unter Einschränkungen für den DAG für Abfrageverläufe.

Programmgesteuert auf dbt-Artefakte und -Protokolle zugreifen

Verwenden Sie die Tabellenfunktion DBT_PROJECT_EXECUTION_HISTORY und die folgenden Systemfunktionen für den programmgesteuerten Zugriff auf dbt-Artefakte und -Protokolle.

Funktion

Was zurückgegeben wird

Typische Verwendung

Anmerkungen

SYSTEM$GET_DBT_LOG

Text-Protokollausgabe (der Protokolleintrag der Ausführung)

Schnelles Debugging in SQL. Beispiel: Fehler und Warnungen anzeigen, ohne Dateien herunterzuladen.

Gibt den Inhalt des Protokolls zurück. Es wird nichts erstellt oder verschoben.

SYSTEM$LOCATE_DBT_ARTIFACTS

Ordnerpfad (z. B. snow://…/results/query_id_…/), der Artefaktdateien, wie beispielsweise manifest.json, kompilierte SQL und Protokolle enthält.

Durchsuchen oder kopieren Sie bestimmte Dateien mit LIST, GET oder COPY FILES.

Nur ein Locator (z. B URL). Sie führen immer noch GET/COPY FILES zum Abrufen aus.

SYSTEM$LOCATE_DBT_ARCHIVE

Einzelne ZIP-Datei URL (z. B. …/dbt_artifacts.zip).

Nützlich, wenn Sie eine Datei herunterladen möchten (z. B. mit GET).

Verwenden Sie GET '<url>file:///local/dir zum Herunterladen.

Protokolle abrufen und eine ZIP-Datei der letzten dbt-Projektabfrage herunterladen

Im folgenden Beispiel wird der dbt-Ausführungsverlauf von Snowflake abgefragt, um die neueste Abfrage-ID für das dbt-Projektobjekt anzuzeigen. Es ruft die Protokollausgabe für diese Ausführung ab und gibt den Speicherort der komprimierten dbt-Artefakte für diese Ausführung zurück.

Das Snowflake CLI-Beispiel lädt die Artefakte-ZIP-Datei oder bestimmte Dateien (wie manifest.json) in Ihren lokalen Ordner mit GET herunter.

Um die ZIP-Datei aus Snowsight herunterzuladen, navigieren Sie zu Transformations » dbt Projects, wählen Sie Ihr Projekt aus, wählen Sie dann eine Ausführung aus, um zu Query Details zu navigieren, und wählen Sie Download Build Artifacts unter dbt Output.

Sie müssen eine Rolle mit der Berechtigung OWNERSHIP, USAGE oder MONITOR für Ihre dbt-Projektobjekte verwenden.

Tipp

Verwenden Sie Funktionsargumente wie DATABASE, SCHEMA und OBJECT_NAME, um Ergebnisse wann immer möglich zu filtern. Diese Filter werden vor RESULT_LIMIT (Standard: 100 Zeilen) angewendet. Somit erhalten Sie die relevantesten Ergebnisse, anstatt ein möglicherweise abgeschnittenes Resultset mit einer WHERE-Klausel zu filtern.

--Look up the most recent dbt project object execution
SET latest_query_id = (SELECT query_id
   FROM TABLE(SNOWFLAKE.INFORMATION_SCHEMA.DBT_PROJECT_EXECUTION_HISTORY(
     DATABASE => 'ANALYTICS_DB',
     SCHEMA => 'DBT_PROD',
     OBJECT_NAME => 'FINANCE_ANALYTICS'
   ))
   ORDER BY query_end_time DESC LIMIT 1);

--Get the dbt run logs for the most recent dbt project object execution
SELECT SYSTEM$GET_DBT_LOG($latest_query_id);
============================== 15:14:53.100781 | 46d19186-61b8-4442-8339-53c771083f16 ==============================
[0m15:14:53.100781 [info ] [Dummy-1   ]: Running with dbt=1.9.4
...
[0m15:14:58.198545 [debug] [Dummy-1   ]: Command `cli run` succeeded at 15:14:58.198121 after 5.19 seconds

Um den Stagingbereichspfad anzuzeigen, in dem Snowflake die Ausführungsartefakte des dbt-Projektobjekts gespeichert hat, verwenden Sie die Funktion SYSTEM$LOCATE_DBT_ARTIFACTS. Sie können diesen Pfad dann mit GET oder COPY FILES mit der Snowflake CLI verwenden, um beispielsweise manifest.json, kompilierte SQL oder Protokolle herunterzuladen.

--Get the location of the dbt project object archive ZIP file (see all files)
SELECT SYSTEM$LOCATE_DBT_ARTIFACTS($latest_query_id);
+-------------------------------------------------------------------------------------------------+
| SYSTEM$LOCATE_DBT_ARTIFACTS($LATEST_QUERY_ID)                                                   |
+-------------------------------------------------------------------------------------------------+
| snow://dbt/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01c01096-010c-0ccb-0000-a99506bd199e/ |
+-------------------------------------------------------------------------------------------------+
--List all the files of a dbt run
ls 'snow://dbt/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf3f5a-010b-4d87-0000-53493abb7cce/';

Sie können auch einen neuen internen Stagingbereich erstellen, den von Snowflake verwalteten Pfad für die Artefakte der angegebenen dbt-Projektobjektausführung suchen und diese Artefakte zum Abrufen in Ihren Stagingbereich kopieren, wie im folgenden Beispiel gezeigt:

CREATE OR REPLACE STAGE my_dbt_stage ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');

SELECT SYSTEM$LOCATE_DBT_ARTIFACTS($latest_query_id);
snow://dbt/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf51c1-010b-5676-0000-53493ae6db02/
COPY FILES INTO @my_dbt_stage/results/ FROM 'snow://dbt/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf51c1-010b-5676-0000-53493ae6db02/';
results/dbt_artifacts.zip
results/logs/dbt.log
results/target/manifest.json
results/target/semantic_manifest.json