Surveiller des projets dbt sur Snowflake

Vous pouvez utiliser les fonctionnalités de surveillance pour dbt Projects on Snowflake adin d’inspecter l’exécution d’un projet dbt, que vous exécutiez manuellement un objet de projet dbt ou que vous utilisiez des tâches pour exécuter des objets de projet dbt selon une planification.

Dans le menu de navigation gauche de l”Snowsight, sélectionnez Monitoring » 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.

Vous pouvez également accéder aux artefacts et aux journaux dbt de manière programmatique.

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 volet de navigation, sélectionnez Monitoring » 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

Par défaut, lorsqu’un objet de projet dbt s’exécute, les fichiers journaux et les artefacts que dbt écrit dans le répertoire /target sont enregistrés dans un fichier dbt_results.zip. La valeur OUTPUT_ARCHIVE_URL disponible dans la sortie EXECUTE DBT PROJECT et dans l’onglet Query details de l’historique des requêtes fournit une référence à ce fichier. Vous ne pouvez pas utiliser cette OUTPUT_ARCHIVE_URL directement. Au lieu de cela, vous devez utiliser l” URL pour copier le fichier dans une zone de préparation interne nommée. Vous pouvez ensuite accéder au fichier à partir de la zone de préparation nommée.

L’exemple suivant montre les commandes SQL qui créent une zone de préparation interne nommée avec le nom my_dbt_stage, copient le fichier dbt_results.zip disponible dans la zone de préparation nommée, puis créent une sortie d’URL présignée pour accéder au fichier. Remplacer output_archive_url avec la valeur réelle que EXECUTE DBT PROJECT renvoie.

-- Create a named internal stage using encryption

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

-- Copy the dbt results zip file into the named stage

COPY FILES INTO @my_dbt_stage/results/
  FROM (
     SELECT '{output_archive_url}', 'dbt_results.zip');

-- Get a presigned URL from which to access the file directly

SELECT get_presigned_url(@my_dbt_stage, 'results/dbt_results.zip');
Copy

L’exemple précédent ne fonctionne pas pour les commandes EXECUTE DBT PROJECT qui s’exécutent à partir d’une tâche. Comme les tâches s’exécutent en tant qu’utilisateur système, l’accès aux résultats nécessite d’être utilisateur système.

Pour accéder aux résultats lors de l’utilisation d’une tâche, vous pouvez créer une procédure stockée qui peut être appelée à partir d’une tâche pour exécuter le projet dbt et copier les résultats.

L’exemple suivant crée une procédure stockée nommée run_dbt_and_copy_results_file qui exécute un projet dbt nommé my_dbt_project et copie les résultats dans la zone de préparation interne nommée my_dbt_stage, qui existe déjà. La procédure stockée utilise un horodatage pour nommer chaque fichier de résultats qu’il copie dans la zone de préparation nommée.

CREATE OR REPLACE PROCEDURE my_db.public.run_dbt_and_copy_results_file()
RETURNS varchar
LANGUAGE SQL
COMMENT = 'Execute dbt and copy the files in the same sproc call.'
EXECUTE AS CALLER
AS
DECLARE
    output_archive_url varchar;
BEGIN
    EXECUTE DBT PROJECT my_db.my_schema.my_dbt_project args='run';
    output_archive_url := (SELECT output_archive_url FROM TABLE(RESULT_SCAN(last_query_id())));
    COPY FILES INTO @my_dbt_stage/results/ FROM (SELECT :output_archive_url, (to_char(current_timestamp(), 'YYYYMMDD_HH24_MI') || '.zip'));
END;
Copy

L’exemple suivant crée une tâche nommée run_my_dbt_project qui exécute la procédure stockée avec les commandes execute et copy toutes les six heures :

CREATE OR REPLACE TASK my_db.my_schema.run_my_dbt_project
  WAREHOUSE = my_dbt_warehouse
  SCHEDULE = '6 hours'
AS
  CALL my_db.public.run_dbt_and_copy_results_file();
Copy