Surveiller des projets dbt sur Snowflake

Cette rubrique explique comment utiliser les fonctionnalités de surveillance pour dbt Projects on Snowflake pour inspecter les exécutions de projets dbt (manuelles ou planifiées) et comment visualiser les journaux et les artefacts.

Section

Description

Activer les fonctionnalités de surveillance pour les projets dbt

Capturez les événements de journalisation et de traçage pour un objet de projet dbt et pour toute tâche planifiée qui l’exécute. Pour activer cette fonctionnalité, vous devez définir la journalisation, le traçage et les métriques sur le schéma où l’objet et la tâche de projet dbt sont déployés.

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

Utilisez la fonction de table DBT_PROJECT_EXECUTION_HISTORY et les fonctions système dbt pour accéder aux artefacts et aux journaux dbt par programmation.

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';
Copy

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 :

  1. Dans le menu du projet dbt en haut à droite de l’éditeur d’espace de travail, sous Scheduled runs, choisissez View schedules.

  2. 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.

  3. À 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.

  1. 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 – Les arguments de la ligne de commande dbt (ARGS) spécifié dans la commande EXECUTE DBT PROJECT pour la dernière exécution du projet dbt.

  2. 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 Les arguments de ligne de commande dbt (ARGS) spécifié dans la commande EXECUTE DBT PROJECT pour la dernière exécution du projet dbt.

  3. 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, run ou build), 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.

  4. 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

Utilisez la fonction de table DBT_PROJECT_EXECUTION_HISTORY et les fonctions système suivantes pour accéder aux artefacts et aux journaux dbt par programmation.

Fonction

Ce que cela renvoie

Utilisation typique

Remarques

SYSTEM$GET_DBT_LOG

Sortie du journal texte (fin du journal d’exécution)

Débogage rapide dans SQL. Par exemple, voir les erreurs et les avertissements sans télécharger de fichiers.

Renvoie le contenu du journal ; rien n’est créé ou déplacé.

SYSTEM$LOCATE_DBT_ARTIFACTS

Chemin du dossier (par exemple, snow://…/results/query_id_…/) contenant des fichiers d’artefacts tels que manifest.json, SQL compilé, journaux.

Parcourez ou copiez des fichiers spécifiques avec LIST, GET ou COPY FILES.

Simple localisateur (une URL) ; vous exécutez toujours GET/COPY FILES pour récupérer.

SYSTEM$LOCATE_DBT_ARCHIVE

URL de fichier ZIP unique (par exemple, …/dbt_artifacts.zip).

Pratique lorsque vous souhaitez télécharger un fichier (par exemple, avec GET).

Utilisez GET '<url>' file:///local/dir pour le téléchargement.

Obtenir des journaux et télécharger un fichier ZIP de la dernière requête du projet dbt

L’exemple suivant interroge l’historique d’exécution dbt de Snowflake pour afficher l’ID de requête la plus récente pour le projet dbt. Cela extrait la sortie du journal pour cette exécution et renvoie l’emplacement des artefacts dbt compressés pour cette exécution.

L’exemple CLI Snowflake télécharge le fichier ZIP des artefacts ou des fichiers spécifiques (tels que manifest.json) dans votre dossier local à l’aide de GET.

Pour télécharger le fichier ZIP de Snowsight, accédez à Monitoring » Query History. Sélectionnez la requête, accédez à Query Details et sélectionnez Download Build Artifacts sous dbt Output.

Vous devez utiliser un rôle disposant du privilège OWNERSHIP, USAGE ou MONITOR sur vos projets dbt.

--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);
Copy
============================== 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

Pour afficher le chemin de la zone de préparation où Snowflake a stocké les artefacts de l’exécution du projet dbt (c’est-à-dire le dossier de résultats pour cette exécution), utilisez la fonction SYSTEM$LOCATE_DBT_ARTIFACTS. Vous pouvez ensuite utiliser ce chemin avec GET ou COPY FILES avec la CLI Snowflake pour télécharger des éléments tels que manifest.json, SQL compilé ou journaux.

--Get the location of the dbt Project archive ZIP file (see all files)
SELECT SYSTEM$LOCATE_DBT_ARTIFACTS($latest_query_id);
Copy
+-------------------------------------------------------------------------------------------------+
| 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/';
Copy

Vous pouvez également créer une nouvelle zone de préparation interne, localiser le chemin géré par Snowflake pour les artefacts de l’exécution du projet dbt spécifié, et copier ces artefacts dans votre zone de préparation pour les récupérer, comme indiqué dans l’exemple suivant :

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

SELECT SYSTEM$LOCATE_DBT_ARTIFACTS($latest_query_id);
Copy
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/';
Copy
results/dbt_artifacts.zip
results/logs/dbt.log
results/target/manifest.json
results/target/semantic_manifest.json