Surveiller des projets dbt sur Snowflake¶
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 |
|---|---|
Activer les fonctionnalités de surveillance pour les projets dbt |
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. |
Surveiller les exécutions planifiées des objets de projet dbt |
Dans Snowsight, dans le menu de navigation, sélectionnez Transformation » dbt Projects pour voir l’historique d’exécution, les graphiques des tâches et les détails des requêtes pour les objets d’un projet dbt. Lorsqu’un espace de travail est connecté à un objet de projet dbt qui s’exécute selon une planification des tâches, vous pouvez ouvrir l’historique d’exécution des tâches et les graphiques des tâches à partir de l’espace de travail. |
Accéder aux artefacts et aux journaux dbt de manière programmatique |
Use the DBT_PROJECT_EXECUTION_HISTORY table function and dbt system functions to access dbt artifacts and logs programmatically. |
Activer les fonctionnalités de surveillance pour les projets dbt¶
Pour activer les fonctionnalités de surveillance pour votre objet de projet dbt, définissez LOG_LEVEL, TRACE_LEVEL, et METRIC_LEVEL sur la base de données et le schéma où votre objet de projet dbt est créé, comme indiqué dans l’exemple SQL suivant :
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';
Surveiller les exécutions planifiées des objets de projet dbt¶
Lorsque vous utilisez une tâche pour exécuter un projet dbt sur une planification et qu’un espace de travail est connecté à un objet de projet dbt, vous pouvez utiliser l’espace de travail pour dbt Projects on Snowflake afin d’accéder rapidement aux informations de surveillance pour l’historique d’exécution des tâches et un graphique des tâches, le cas échéant.
Note
Cette fonctionnalité n’est disponible que pour les espaces de travail qui sont connectés à un objet de projet dbt.
Pour surveiller l’exécution planifiée d’un objet de projet dbt à partir d’un espace de travail :
Dans le menu du projet dbt en haut à droite de l’éditeur d’espace de travail, sous Scheduled runs, choisissez View schedules.
Dans la liste, sélectionnez la planification (tâche) que vous souhaitez inspecter, puis choisissez View details.
Le volet d’informations de la tâche s’ouvre, où vous pouvez voir Task details, la tâche Graph (le cas échéant), et Run history de cette tâche. Pour plus d’informations, voir Affichage des tâches et des graphiques de tâches dans Snowsight.
À partir de l”Run history pour toute exécution de projet dbt planifiée dans la liste, sélectionnez le bouton Ouvrir l’historique des requêtes à l’extrémité droite pour voir les détails de la requête, le profil de la requête et la télémétrie de la requête pour l’exécution. Pour plus d’informations, voir Examiner les détails et le profil d’une requête spécifique.
Surveiller des projets dbt dans Snowsight¶
Vous pouvez utiliser Monitoring dans Snowsight pour afficher des informations de suivi détaillées sur les exécutions de projets dbt (exécutions). Vous devez disposer des privilèges permettant de voir les informations de surveillance pour l’objet du projet dbt.
Dans le menu de navigation, sélectionnez Transformation » dbt Projects. Un histogramme indique la fréquence des exécutions des projets dbt et une liste des projets qui ont été exécutés.
La liste des projets dbt comprend des colonnes fournissant les informations suivantes. Vous pouvez filtrer la liste par plage de dates, commande et l’état d’exécution.
PROJECT – Le nom de l’objet du projet dbt et le nombre d’exécutions (exécutions) pendant la période sélectionnée.
LAST COMMAND – La commande dbt qui a été exécutée lors de la dernière exécution.
LAST RUN STATUS – Le résultat de l’exécution : Succeeded, Executing, ou Failed.
LAST RUN – Le temps écoulé depuis la dernière exécution. Pour inverser l’ordre de tri, sélectionnez l’en-tête de colonne. L’exécution la plus récente est affichée en premier par défaut.
PREVIOUS RUNS – Le nombre d’exécutions dans la période sélectionnée par état.
DATABASE et SCHEMA – La base de données et le schéma où l’objet du projet dbt est enregistré.
LAST RUN PARAMETERS - The dbt command-line arguments (ARGS) specified in the EXECUTE DBT PROJECT command for the last dbt project run.
Pour inspecter les exécutions de projets individuelles, sélectionnez un objet de projet dbt dans la liste.
La page de détails du projet dbt dans l’explorateur d’objets de la base de données s’ouvre pour cet objet de projet dbt.
L’onglet Run history est sélectionné par défaut, avec les informations suivantes pour chaque tâche exécutée dans la période sélectionnée :
COMMAND – La commande dbt qui a été exécutée lors de la dernière exécution.
STATUS – Le résultat de l’exécution : Succeeded, Executing, ou Failed.
RUN TIME – Le temps écoulé depuis la dernière exécution. Pour inverser l’ordre de tri, sélectionnez l’en-tête de colonne. L’exécution la plus récente est affichée en premier par défaut.
PARAMETERS The dbt command-line arguments (ARGS) specified in the EXECUTE DBT PROJECT command for the last dbt project run.
Pour voir les détails de la tâche d’une exécution, sélectionnez-la dans la liste.
Le volet des détails de l’exécution dbt s’ouvre, qui comprend les onglets suivants :
L’onglet Job details est sélectionné par défaut et affiche les informations suivantes :
Status – Le résultat de l’exécution : Succeeded, Executing ou Failed.
Start time, End time et Duration – L’heure à laquelle l’exécution a commencé, l’heure à laquelle elle s’est terminée et la durée de l’exécution.
Warehouse size – La taille de l’entrepôt qui a été utilisé pour exécuter l’exécution.
Query ID – L’identificateur unique de la requête qui a exécuté la commande de projet dbt. Pour afficher les détails de la requête dans l’historique des requêtes, sélectionnez la requête ID.
SQL text – La commande EXECUTE DBT PROJECT qui s’est exécutée.
dbt <command> – Pour la commande dbt qui s’est exécutée (par exemple,
runoubuild), montre le dbt model, le time taken pour l’exécution à exécuter, et le status de cette exécution de modèle.
L’onglet Output affiche le stdout généré par le projet dbt pendant l’exécution.
L’onglet Trace affiche les informations de trace générées par le projet dbt pendant l’exécution. Pour plus d’informations sur les traces, voir Affichage des données de trace.
Pour voir des informations plus détaillées sur les requêtes, à partir de l’onglet Job details, sélectionnez l”Query ID.
La page d’historique de la requête pour l’exécution de la tâche s’ouvre avec des onglets pour voir Query Details, le Query Profile, et la Query Telemetry pour l’exécution dbt que vous avez sélectionnée.
Pour plus d’informations, voir Examiner les détails et le profil d’une requête spécifique.
Accéder aux artefacts et aux journaux dbt de manière programmatique¶
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 |...
+-----------------------------------------------------------------+--------+------------+-----