dbt-Projekte in Snowflake überwachen¶
Sie können die Überwachungsfeatures für dbt Projects on Snowflake verwenden, um die Ausführung von dbt-Projekten zu überprüfen, unabhängig davon, ob Sie ein dbt-Projektobjekt manuell ausführen oder Aufgaben verwenden, um dbt-Projektobjekte nach einem Zeitplan auszuführen.
Wählen Sie im linken Snowsight-Navigationsmenü Monitoring » 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.
Sie können auch programmgesteuert auf dbt-Artefakte und -Protokolle zugreifen.
Überwachungsfeatures für dbt-Projekte 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 eine Aufgabe verwenden, um ein dbt-Projekt nach einem Zeitplan auszuführen, und einen Arbeitsbereich mit einem dbt-Projektobjekt verbunden haben, können Sie über den Arbeitsbereich für dbt Projects on Snowflake schnell auf Überwachungsinformationen für den Verlauf von Aufgabenausführungen und ggf. auf ein Task-Graphen zugreifen.
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:
Wählen Sie im dbt-Projektmenü oben rechts im Arbeitsbereichseditor unter Scheduled runs`die Option :ui:`View schedules aus.
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 Anzeigen von Aufgaben und Aufgabendiagrammen in Snowsight.
Wählen Sie im Run history für eine beliebige geplante dbt-Projektausfü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-Projekte in Snowsight überwachen¶
Sie können Monitoring in Snowsight verwenden, um detaillierte Überwachungsinformationen zu dbt-Projektausführungen (Projektläufen) anzuzeigen. Sie müssen über die entsprechende Berechtigung verfügen, um Überwachungsinformationen für das dbt-Projektobjekt anzeigen zu können.
Wählen Sie im Navigationsbereich Monitoring » dbt projects aus. Ein Histogramm zeigt die Häufigkeit der Ausführungen von dbt-Projekten und eine Liste der ausgeführten Projekte an.
Die Liste der dbt-Projekte 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-Projekts angegeben sind.
Um einzelne Projektausführungen zu prüfen, wählen Sie ein dbt-Projektobjekt aus der Liste aus.
Die Seite mit den Details des dbt-Projekts 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-Projekts angegeben sind.
Um die Jobdetails für eine Ausführung anzuzeigen, wählen Sie diese in der Liste aus.
Der Bereich mit den dbt-Ausführungsdetails wird geöffnet. Er umfasst die folgenden Registerkarten:
Die Registerkarte Job details ist standardmäßig ausgewählt und zeigt die folgenden Informationen an:
Status: Das Ergebnis der Ausführung: Succeeded, Executing oder Failed.
Start time, End time und Duration: Zeitpunkt, zu dem die Ausführung gestartet wurde, wann sie beendet wurde und wie lange die Ausführung gedauert hat.
Warehouse size: Die Größe des Warehouse, das für die Ausführung verwendet wurde.
Query ID: Der eindeutige Bezeichner der Abfrage, die den dbt-Projekt-Befehl ausgeführt hat. Um die Abfragedetails im Abfrageverlauf anzuzeigen, wählen Sie die Abfrage-ID aus.
SQL text: Der ausgeführte Befehl EXECUTE DBT PROJECT.
dbt <command>: Für den dbt-Befehl, der ausgeführt wurde (z. B.
run
oderbuild
), wird das dbt-model, die time taken der Ausführung und der status der Modellausführung angezeigt.
Auf der Registerkarte Output wird die Standardausgabe angezeigt, die vom dbt-Projekt während der Ausführung generiert wurde.
Auf der Registerkarte Trace werden die Ablaufverfolgungsinformationen angezeigt, die während der Ausführung vom dbt-Projekt generiert wurden. Weitere Informationen zu Ablaufverfolgungen finden Sie unter Ablaufverfolgung anzeigen.
Wenn Sie ausführlichere Abfrageinformationen sehen möchten, wählen Sie auf der Registerkarte Job details die Option Query ID aus.
Die Seite mit dem Abfrageverlauf für die Jobausführungsabfrage wird geöffnet. Sie enthält Registerkarten zum Anzeigen von Query Details, Query Profile und Query Telemetry für die von Ihnen ausgewählte dbt-Ausführung.
Weitere Informationen dazu finden Sie unter Details und Profil einer bestimmten Anfrage überprüfen.
Programmgesteuert auf dbt-Artefakte und -Protokolle zugreifen¶
Wenn ein dbt-Projektobjekt ausgeführt wird, werden Protokolldateien und Artefakte, die dbt in das /target
-Verzeichnis schreibt, in einer Datei namens dbt_results.zip
gespeichert. Der Wert der OUTPUT_ARCHIVE_URL in der Ausgabe EXECUTE DBT PROJECT und auf der Registerkarte Query details des Abfrageverlaufs enthält einen Verweis auf diese Datei. Sie können die OUTPUT_ARCHIVE_URL nicht direkt verwenden. Sie müssen die URL verwenden, um die Datei in einen benannten internen Stagingbereich zu kopieren. Sie können dann aus dem benannten Stagingbereich auf die Datei zugreifen.
Das folgende Beispiel zeigt SQL-Befehle, die einen benannten internen Stagingbereich mit dem Namen my_dbt_stage
erstellen, die verfügbare Datei dbt_results.zip
in den benannten Stagingbereich kopieren und dann eine vorsignierte URL für den Zugriff auf die Datei ausgeben. Ersetzen Sie output_archive_url
durch den tatsächlichen Wert, den EXECUTE DBT PROJECT zurückgibt.
-- Create a named internal stage using encryption
CREATE OR REPLACE STAGE my_dbt_stage
ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
-- Copy the dbt results zip file into the named stage
COPY FILES INTO @my_dbt_stage/results/
FROM (
SELECT '{output_archive_url}', 'dbt_results.zip');
-- Get a presigned URL from which to access the file directly
SELECT get_presigned_url(@my_dbt_stage, 'results/dbt_results.zip');
Das vorherige Beispiel funktioniert nicht für EXECUTE DBT PROJECT-Befehle, die von einer Aufgabe aus ausgeführt werden. Da Aufgaben als Systembenutzer ausgeführt werden, ist für den Zugriff auf Ergebnisse der Systembenutzer erforderlich.
Um bei Verwendung einer Aufgabe auf die Ergebnisse zuzugreifen, können Sie eine gespeicherte Prozedur erstellen, die von einer Aufgabe aus aufgerufen werden kann, um das dbt-Projekt auszuführen und die Ergebnisse zu kopieren.
Im folgenden Beispiel wird eine gespeicherte Prozedur mit dem Namen run_dbt_and_copy_results_file
erstellt, die ein dbt-Projekt namens my_dbt_project
ausführt und die Ergebnisse in den benannten internen Stagingbereich my_dbt_stage
kopiert, der bereits vorhanden ist. Die gespeicherte Prozedur verwendet einen Zeitstempel, um jede Ergebnisdatei zu benennen, die sie in den benannten Stagingbereich kopiert.
CREATE OR REPLACE PROCEDURE my_db.public.run_dbt_and_copy_results_file()
RETURNS varchar
LANGUAGE SQL
COMMENT = 'Execute dbt and copy the files in the same sproc call.'
EXECUTE AS CALLER
AS
DECLARE
output_archive_url varchar;
BEGIN
EXECUTE DBT PROJECT my_db.my_schema.my_dbt_project args='run';
output_archive_url := (SELECT output_archive_url FROM TABLE(RESULT_SCAN(last_query_id())));
COPY FILES INTO @my_dbt_stage/results/ FROM (SELECT :output_archive_url, (to_char(current_timestamp(), 'YYYYMMDD_HH24_MI') || '.zip'));
END;
Im folgenden Beispiel wird eine Aufgabe mit dem Namen run_my_dbt_project
erstellt, die die gespeicherte Prozedur mit den Befehlen „execute“ und „copy“ alle sechs Stunden ausführt:
CREATE OR REPLACE TASK my_db.my_schema.run_my_dbt_project
WAREHOUSE = my_dbt_warehouse
SCHEDULE = '6 hours'
AS
CALL my_db.public.run_dbt_and_copy_results_file();