dbt-Projekte in Snowflake überwachen¶
This topic explains the ways you can use monitoring features for dbt Projects on Snowflake to inspect dbt project executions—–manual or task-scheduled–—and how to view logs and artifacts.
Section |
Description |
|---|---|
Capture logging and tracing events for a dbt project object and for any scheduled task that runs it. To enable this feature, you must set logging, tracing, and metrics on the schema where the dbt project object and task are deployed. |
|
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 |
Use the DBT_PROJECT_EXECUTION_HISTORY table function and dbt system functions to access dbt artifacts and logs programmatically. |
Ü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 - The dbt command-line arguments (ARGS) specified in the EXECUTE DBT PROJECT command for the last dbt project run.
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 The dbt command-line arguments (ARGS) specified in the EXECUTE DBT PROJECT command for the last dbt project run.
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¶
Use the DBT_PROJECT_EXECUTION_HISTORY table function and the following system functions to access dbt artifacts and logs programmatically.
Function |
What it returns |
Typical use |
Notes |
|---|---|---|---|
Text log output (the run’s log tail) |
Quick debugging in SQL. For example, see errors and warnings without downloading files. |
Returns log content; nothing is created or moved. |
|
Folder path (for example, |
Browse or copy specific files with LIST, GET, or COPY FILES. |
Just a locator (a URL); you still run GET/COPY FILES to fetch. |
|
Single ZIP file URL (for example, |
Handy when you want to download one file (for example, with GET). |
Use |
Get logs and download a ZIP file of the latest dbt project query¶
The following example queries Snowflake’s dbt execution history to show the most recent query ID for the dbt Project. It pulls the log output for that execution and returns the location of the zipped dbt artifacts for that execution.
The Snowflake CLI example downloads the artifacts ZIP file or specific files (like manifest.json) to your local folder using GET.
To download the ZIP file from Snowsight, navigate to Monitoring » Query History. Select the query, navigate to Query Details, and select Download Build Artifacts under dbt Output.
You must use a role with the OWNERSHIP, USAGE, or MONITOR privilege on your dbt Projects.
--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
To view the stage path where Snowflake stored the dbt Project run’s artifacts (that is, the results folder for that execution), use the
SYSTEM$LOCATE_DBT_ARTIFACTS function. You can then use that path with GET or COPY FILES with the Snowflake CLI to download
things like manifest.json, compiled SQL, or logs.
--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/';
You can also create a fresh internal stage, locate the Snowflake-managed path for the specified dbt Project run’s artifacts, and copy those artifacts into your stage for retrieval, as shown in the following example:
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 |...
+-----------------------------------------------------------------+--------+------------+-----