Moniteur dbt Projects on 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 objets de projet 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 objets de projet 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

Si vous exécutez un objet de projet dbt déployé sur une planification à l’aide d’une tâche et que la tâche se trouve dans le même schéma que l’objet de projet dbt, vous pouvez visualiser les tâches planifiées directement depuis l’espace de travail en sélectionnant:ui:Connect, puis:ui:View Schedules.

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 sur le côté droit du volet du projet, sous:ui: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 View tasks and task graphs in Snowsight.

  3. À partir de l’Run History pour toute exécution d’objet 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 objets de projet dbt dans Snowsight

Pour voir des informations de suivi détaillées sur les exécutions d’objets de projet dbt, accédez à Transformations » dbt Projects dans Snowsight Vous devez utiliser un rôle avec le privilège MONITOR pour afficher les informations de surveillance pour l’objet de projet dbt. Pour plus d’informations, voir Contrôle d’accès pour les projets dbt sur Snowflake.

  1. Dans le menu de navigation, sélectionnez Transformation » dbt Projects. Un histogramme indique la fréquence des exécutions d’objet de projet dbt et une liste des projets qui ont été exécutés.

    La liste des objets de projet 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 ligne de commande dbt (ARGS) spécifiés dans la commande EXECUTE DBT PROJECT pour la dernière exécution de l’objet de 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 de l’objet de 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és dans la commande EXECUTE DBT PROJECT pour la dernière exécution de l’objet de projet dbt.

  3. Pour voir les détails d’une exécution, sélectionnez-la dans la liste.

    La page Query Details s’ouvre pour la requête EXECUTE DBT PROJECT exécutée. Cette page comprend les onglets suivants :

    • Query Details - Affiche le statut d’exécution, l’heure de début, l’heure de fin, la durée, la taille de l’entrepôt, l’ID de la requête et le texte SQL de la commande EXECUTE DBT PROJECT. Affiche également les résultats par modèle pour la commande dbt qui s’est exécutée (par exemple,``build``), y compris chaque nom de modèle, la durée et le statut.

    • Query Profile - Affiche le plan d’exécution des requêtes et les statistiques de performances.

    • Query Telemetry - Affiche les données de télémétrie pour l’exécution.

    • DAG - Visualise les modèles qui ont été exécutés pendant l’exécution et leurs résultats. Pour plus d’informations, voir Affichage du DAG de l’historique des requêtes.

    Pour plus d’informations, voir Examiner les détails et le profil d’une requête spécifique.

Affichage du DAG de l’historique des requêtes

Les Query Details pour une exécution d’objet de projet dbt comprend un onglet DAG qui visualise ce qui a été exécuté lors d’une exécution et les résultats pour chaque modèle. Cela diffère du DAG sur la page des détails du projet, qui sert de couche de documentation pour votre projet, y compris les modèles, les tests, les sources et leurs dépendances.

Le DAG de l’historique des requêtes est construit à partir des artefacts manifest.json et run_results.json produits au cours d’une exécution. Sélectionnez un nœud dans le DAG pour ouvrir un panneau latéral avec des détails pour cette requête spécifique, y compris l’ID de la requête et tout message d’erreur si la requête a échoué.

Pour afficher le DAG de l’historique des requêtes :

  1. Dans le menu de navigation, sélectionnez Transformations » dbt Projects.

  2. Dans la liste des objets de projet dbt, sélectionnez un projet.

  3. Dans l’onglet Run History, sélectionnez une exécution pour ouvrir les Query Details pour cette exécution.

  4. Sélectionnez l’onglet DAG.

Note

Si le DAG de l’historique des requêtes affiche « Aucune donnée disponible », l’exécution a probablement échoué avant que le fichier run_results.json puisse être généré. Pour plus d’informations, voir Limites du DAG de l’historique des requêtes.

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 l’objet de 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 à:ui:Transformations » dbt Projects, sélectionnez votre projet, puis sélectionnez une exécution pour laquelle accéder à:ui: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 objets de projet dbt.

Astuce

Utilisez des arguments de fonction tels que DATABASE, SCHEMA et OBJECT_NAME pour filtrer les résultats dans la mesure du possible. Ces filtres sont appliqués avant la RESULT_LIMIT (par défaut : 100 lignes), et vous assure d’obtenir les résultats les plus pertinents plutôt que de filtrer un ensemble de résultats potentiellement tronqué avec une clause WHERE.

--Look up the most recent dbt project object execution
SET latest_query_id = (SELECT query_id
   FROM TABLE(SNOWFLAKE.INFORMATION_SCHEMA.DBT_PROJECT_EXECUTION_HISTORY(
     DATABASE => 'ANALYTICS_DB',
     SCHEMA => 'DBT_PROD',
     OBJECT_NAME => 'FINANCE_ANALYTICS'
   ))
   ORDER BY query_end_time DESC LIMIT 1);

--Get the dbt run logs for the most recent dbt project object 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

Pour voir le chemin de la zone de préparation où Snowflake a stocké les artefacts d’exécution d’objets de projet dbt, 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 object 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/';

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 de l’objet de 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);
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