dbt-Projekte in Snowflake überwachen¶
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 |
|---|---|
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. |
|
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-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 Navigationsmenü die Option Transformation » 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.
runoderbuild), 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¶
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 |
|---|---|---|---|
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. |
|
Ordnerpfad (z. B. |
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. |
|
Einzelne ZIP-Datei URL (z. B. |
Nützlich, wenn Sie eine Datei herunterladen möchten (z. B. mit GET). |
Verwenden Sie |
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-Projekt 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 von Snowsight herunterzuladen, navigieren Sie zu Monitoring » Query History. Wählen Sie die Abfrage aus, und navigieren Sie zu Query Details. Wählen Sie Download Build Artifacts unter dbt Output aus
Sie müssen eine Rolle mit der Berechtigung OWNERSHIP, USAGEoder MONITOR für Ihre dbt-Projekte verwenden.
--Look up the most recent dbt Project execution
SET latest_query_id = (SELECT query_id
FROM TABLE(INFORMATION_SCHEMA.DBT_PROJECT_EXECUTION_HISTORY())
WHERE OBJECT_NAME = 'MY_DBT_PROJECT'
ORDER BY query_end_time DESC LIMIT 1);
--Get the dbt run logs for the most recent dbt Project 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 Artefakte der Ausführung des dbt-Projekts gespeichert hat (d. h. den Ordner mit den Ergebnissen dieser Ausführung), 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 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-Projektausfü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
snowsql -q "SELECT query_id
FROM TABLE(INFORMATION_SCHEMA.DBT_PROJECT_EXECUTION_HISTORY())
WHERE OBJECT_NAME = 'MY_DBT_PROJECT'
ORDER BY query_end_time DESC LIMIT 1;"
snowsql -q "SELECT SYSTEM\$GET_DBT_LOG('01bf3f89-0300-0001-0000-0000000c1229')"
| ============================== 11:17:39.152234 | 4df65841-7aa3-40e2-81cb-2007c09c2b81
| 11:17:39.152234 [info ] [Dummy-1 ]: Running with dbt=1.9.4
....
snowsql -q "SELECT SYSTEM\$LOCATE_DBT_ARCHIVE('01bf3f89-0300-0001-0000-0000000c1229')"
snow://dbt_project/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf3f89-0300-0001-0000-0000000c1229/dbt_artifacts.zip
snowsql -q "GET 'snow://dbt_project/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf3f89-0300-0001-0000-0000000c1229/dbt_artifacts.zip' file:///Users/user_name/Code/temp"
Type SQL statements or !help
+-----------------------------------------------------------------+--------+------------+-----
| file | size | status | ....
|-----------------------------------------------------------------+--------+------------+-----
| query_id_01bf3f89-0300-0001-0000-0000000c1229/dbt_artifacts.zip | 137351 | DOWNLOADED |...
+-----------------------------------------------------------------+--------+------------+-----