Partager via


Surveiller les vues matérialisées dans Databricks SQL

Cet article explique comment surveiller et interroger des données d’actualisation sur une vue matérialisée dans Databricks SQL.

Afficher les détails d’une vue matérialisée unique

Vous pouvez afficher les détails d’une vue matérialisée unique à l’aide de l’Explorateur de catalogues, ou par programme, avec l’opération DESCRIBE EXTENDED . Vous pouvez également interroger le journal des événements pour plus d’informations sur l’historique d’actualisation d’une vue matérialisée.

Afficher les détails dans l’Explorateur de catalogues

Vous pouvez accéder à des informations sur votre affichage matérialisé en l’affichant dans l’Explorateur de catalogues. Dans l’Explorateur de catalogues, vous pouvez voir le dernier état d’actualisation et toutes les planifications d’actualisation créées dans SQL. Pour plus d’informations sur les planifications créées dans SQL, consultez CREATE MATERIALIZED VIEW.

L'Explorateur de catalogue affiche les détails de chaque vue matérialisée dans un panneau situé à droite, notamment :

  1. État d’actualisation actuel et heure de la dernière exécution. Pour plus d’informations sur la mise à jour, y compris la durée de l’exécution, les erreurs détaillées, ainsi que le type d’actualisation (y compris si la vue matérialisée a été entièrement ou incrémentiellement actualisée et pourquoi), cliquez sur Afficher les détails de l’actualisation.
  2. Actualiser la planification. Si la vue matérialisée a un calendrier défini via SQL, le calendrier est affiché. Pour mettre à jour la planification, utilisez ALTER MATERIALIZED VIEW.
  3. Tags (balises). Pour ajouter des balises personnalisées, cliquez sur Ajouter des balises. Les balises ne sont pas automatiquement utilisées pour attribuer des coûts, mais vous pouvez créer manuellement une requête pour connecter des balises personnalisées à vos coûts. Pour plus d’informations, consultez Les coûts d’attribut pour l’entrepôt SQL avec des balises personnalisées.

Il existe des propriétés de la vue matérialisée qui ne sont pas disponibles dans l’Explorateur de catalogues. Pour ces propriétés, ou pour obtenir les informations par programmation, vous pouvez utiliser la DESCRIBE EXTENDED commande.

Afficher les détails avec DESCRIBE EXTENDED

Vous pouvez afficher des détails sur une vue matérialisée par programmation à l’aide de la DESCRIBE EXTENDED commande. Cela inclut des détails au-delà de ce que vous obtenez à partir de l’Explorateur de catalogues. Il s’agit notamment des éléments suivants :

  • État de la dernière actualisation terminée.

  • La planification de l’actualisation.

  • Les colonnes de la vue matérialisée.

  • Type d’actualisation de la vue matérialisée (non disponible dans l’Explorateur de catalogues).

  • Taille des données de la vue matérialisée, en octets totaux (non disponibles dans l’Explorateur de catalogues).

  • Emplacement de stockage de la vue matérialisée (non disponible dans l’Explorateur de catalogues).

  • Certaines informations sont incluses uniquement dans le résultat lorsqu’elles sont activées :

    • Colonnes de clustering, si activées.
    • Indique si les vecteurs de suppression sont activés (affichés uniquement lorsque true).
    • Indique si le suivi des lignes est activé (affiché uniquement quand true).
-- As table:
DESCRIBE TABLE EXTENDED sales;

-- As a single JSON object:
DESCRIBE TABLE EXTENDED sales AS JSON;

Interrogation du journal des événements de manière programmatique

Pour obtenir des détails sur l’historique d’actualisation d’une vue matérialisée ou sur les détails d’une actualisation, vous pouvez interroger le journal des événements par programmation.

En tant que propriétaire du pipeline, vous pouvez créer une vue pour permettre à d’autres utilisateurs d’interroger le journal des événements de votre pipeline. La requête suivante crée une vue que d’autres utilisateurs peuvent utiliser pour interroger le journal des événements. Cette requête utilise la fonction valeur TABLE pour interroger la bonne table de journal des événements.

CREATE VIEW my_event_log_view AS
  SELECT *
  FROM event_log(TABLE(<catalog_name>.<schema_name>.<mv_name>));

Pour interroger la vue du journal des événements, utilisez une requête comme suit.

SELECT *
  FROM my_event_log_view
  WHERE event_type = "update_progress"
  ORDER BY timestamp desc;

Pour interroger le journal des événements directement en tant que propriétaire du pipeline, vous n’avez pas besoin de créer une vue. Vous pouvez utiliser la TABLE fonction valeur et interroger les données directement, comme l’exemple de requête suivant.

SELECT *
  FROM event_log(TABLE(<catalog_name>.<schema_name>.<mv_name>))
  WHERE event_type = "update_progress"
  ORDER BY timestamp desc;

Pour obtenir la liste complète des exemples de requêtes à l’aide du journal des événements, consultez les exemples de requêtes de base.

Surveiller les exécutions des vues matérialisées

Vous pouvez surveiller les exécutions de pipeline sur votre espace de travail, à l’aide de la page Travaux & Pipelines , de la page Historique des requêtes ou par programmation en interrogeant le journal des événements.

Afficher toutes les exécutions d’affichage matérialisées dans l’interface utilisateur

Si vous utilisez la page Travaux et pipelines pour surveiller l’état des différents travaux d’orchestration dans votre espace de travail, vous pouvez également suivre toutes les vues matérialisées et les tables de streaming qui y sont créées. Chaque vue matérialisée créée dans Databricks SQL est soutenue par un pipeline. Pour afficher toutes les vues matérialisées et les tables de streaming auxquelles vous avez accès :

  1. Cliquez sur l’icône Flux de travail.Bouton Travaux & Pipelines sur le côté gauche de votre espace de travail.
  2. Cliquez sur le bouton bascule Pipelines pour filtrer votre affichage uniquement sur les pipelines.
  3. Cliquez sur le bouton Type de pipeline et sélectionnez MV/ST pour filtrer uniquement les pipelines créés par Databricks SQL.
  4. Cliquez sur le filtre Accessible par moi pour afficher tous les pipelines auquel vous avez accès.

Vous pourrez voir toutes les vues matérialisées et les tables de streaming créées dans votre organisation, y compris une vue récapitulative des statuts des exécutions récentes. Le fait de cliquer sur le nom d’un pipeline ouvre la page des détails de surveillance du pipeline pour obtenir plus d’informations. Pour en savoir plus sur la page de détails de la surveillance du pipeline, consultez Résoudre les problèmes d’actualisation ayant échoué.

Consulter les exécutions en utilisant l’historique des requêtes

Si vous êtes plus familiarisé avec l’onglet Historique des requêtes, vous pouvez également l’utiliser pour afficher toutes les exécutions précédentes de toutes les requêtes où vous avez au moins CAN VIEW accès à l’entrepôt SQL en cours d’exécution. Vous pouvez utiliser la page d’historique des requêtes pour accéder aux détails et aux profils de requête qui peuvent vous aider à identifier les requêtes peu performantes et les goulots d’étranglement dans le pipeline utilisé pour exécuter des mises à jour en continu de votre table. Pour obtenir une vue d’ensemble du type d’informations disponibles pour les historiques de requête et les profils de requête, consultez Historique des requêtes et Profil de requête.

Important

Cette fonctionnalité est disponible en préversion publique. Les administrateurs d’espace de travail peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.

Toutes les instructions liées aux vues matérialisées apparaissent dans l’Historique des requêtes. Vous pouvez utiliser le filtre déroulant Requête pour sélectionner une commande et inspecter les requêtes associées. Toutes les CREATE instructions sont suivies d’une REFRESH instruction qui s’exécute de manière asynchrone sur un pipeline. Les instructions REFRESH incluent généralement des plans de requête détaillés qui fournissent des insights sur l’optimisation des performances.

Pour accéder aux instructions REFRESH de l’interface utilisateur de l’Historique des requêtes, procédez comme suit :

  1. Cliquez sur l’icône Historique.Historique des requêtes dans la barre latérale gauche.
  2. Cochez la case REFRESH dans le filtre déroulant Instruction.
  3. Cliquez sur le nom de l'instruction de requête pour afficher les détails récapitulatifs tels que la durée de la requête et les métriques agrégées.
  4. Cliquez sur Afficher le profil de requête pour ouvrir le profil de requête. Pour plus d’informations sur la navigation dans le profil de requête, consultez Profil de requête.
  5. Vous pouvez également utiliser les liens dans la section Source de requête pour ouvrir la requête ou le pipeline associé.

Voir CREATE MATERIALIZED VIEW.

Résoudre un échec d’actualisation

Vous pouvez trouver des mises à jour défaillantes pour les vues matérialisées (ou les tables de diffusion en continu) en examinant la liste Travaux et Pipelines. Pour résoudre les problèmes liés à une mise à jour ayant échoué, utilisez la page des détails de surveillance du pipeline ou le journal des événements.

Pour résoudre les problèmes liés à une actualisation complète lorsque vous pensez qu’elle doit être incrémentielle, vérifiez d’abord que le suivi des lignes est activé pour toutes les tables Delta sources. Pour plus d'informations sur l'actualisation incrémentielle, consultez Prise en charge de l'actualisation incrémentielle des vues matérialisées.

Vous pouvez obtenir des détails supplémentaires à partir de la page de supervision du pipeline ou en interrogeant le journal des événements par programmation.

Utilisation de la page de supervision du pipeline

Pour obtenir plus d’informations sur une vue matérialisée (ou une table de diffusion en continu) qui a échoué, vous pouvez utiliser la page de supervision du pipeline pour résoudre les problèmes. Chaque vue matérialisée a un pipeline qui la soutient. La page de surveillance du pipeline comprend des informations, telles que :

  • État de la dernière exécution et de l’historique des exécutions.
  • Durée de la dernière exécution.
  • Indique si la vue matérialisée est entièrement ou incrémentiellement actualisée. Pour plus d’informations sur l’actualisation incrémentielle de votre vue matérialisée, consultez Prise en charge de l’actualisation incrémentielle de l’affichage matérialisé.
  • Journal des événements pour un débogage plus détaillé. Si votre vue matérialisée n’a pas pu être mise à jour ou a rencontré d’autres problèmes, cliquez sur le panneau des problèmes pour afficher les journaux plus en détail.

Pour résoudre les problèmes de votre vue matérialisée :

  1. Dans votre espace de travail, cliquez sur l’icône Flux de travail.Bouton Travaux & Pipelines dans la barre de navigation de gauche.
  2. Cliquez sur le nom de votre pipeline dans la liste.
  3. Si la mise à jour n’a pas pu s’exécuter, l’interface utilisateur affiche une erreur (ou une liste d’erreurs) dans le volet inférieur.
  4. Cliquez sur le bouton pour afficher les journaux d’activité ou cliquez sur le volet problèmes pour afficher les erreurs plus en détail.
  5. Cela ouvre l’interface utilisateur du journal des événements. Chaque erreur comporte un message de haut niveau et un résumé, ainsi qu’un onglet JSON avec plus de détails. Pour résoudre un problème avec l’Assistant Databricks, cliquez sur Diagnostiquer l’erreur.

Pour plus d’informations sur la page de supervision du pipeline, consultez ici.

Interroger l’historique d’actualisation pour une vue matérialisée

Le journal des événements peut être utile pour configurer des tableaux de bord pour surveiller l’état ou la durée de mise à jour dans l’espace de travail, ou si vous préférez la surveillance par programmation à l’aide de l’interface utilisateur. Les vues matérialisées créées avec Databricks SQL ne prennent pas en charge l’enregistrement du journal des événements dans un metastore. Par conséquent, seul le propriétaire de la vue matérialisée peut interroger directement le journal des événements.

Pour afficher l'état des opérations du REFRESH sur une vue matérialisée, y compris les actualisations actuelles et passées, consultez le journal d'événements du pipeline :

SELECT *
FROM event_log(TABLE(<fully-qualified-table-name>))
WHERE event_type = "update_progress"
ORDER BY timestamp desc;

Remplacez <fully-qualified-table-name> par le nom complet de la vue matérialisée, incluant le catalogue et le schéma. Si vous n’êtes pas le propriétaire du pipeline, vous devrez peut-être d’abord avoir une vue créée pour interroger le journal des événements. Consultez Interroger le journal des événements de manière programmatique.

Interroger le type d’actualisation qui s’est produit pour une vue matérialisée

Certaines requêtes peuvent être actualisées de manière incrémentielle. Si une actualisation incrémentielle ne peut pas être effectuée, une actualisation complète est réalisée à la place.

Pour afficher le type d’actualisation d’une vue matérialisée, interrogez le journal des événements :

SELECT timestamp, message
FROM event_log(TABLE(my_catalog.my_schema.sales))
WHERE event_type = 'planning_information'
ORDER BY timestamp desc;

Exemple de sortie pour cette commande :

    • horodatage
    • Message
    • 2025-03-21T22:23:16.497+00:00
    • Flow 'sales' has been planned in :re[LDP] to be executed as ROW_BASED.

Attribuer des coûts dans l'entrepôt SQL à l'aide de balises personnalisées

Les étiquettes ne sont pas automatiquement ajoutées aux enregistrements de facturation, mais vous pouvez les joindre manuellement à vos informations de facturation dans une requête.

Une fois que vous avez ajouté des balises à chaque vue matérialisée (ou table de diffusion en continu) avec l’Explorateur de catalogues, vous pouvez surveiller les coûts des vues matérialisées en joignant les tables système table_tags et billing. Il s’agit d’un exemple de requête pour récupérer les enregistrements de facturation pour toutes les vues matérialisées et les tables de streaming créées avec Databricks SQL et ajouter des balises au niveau de la table :

SELECT
  u.*,
  tag_info.tags
FROM
  system.billing.usage u
LEFT JOIN (
  SELECT
    t.catalog_name,
    t.schema_name,
    t.table_name,
    collect_list(named_struct('tag_name', t.tag_name, 'tag_value', t.tag_value)) AS tags
  FROM
    main.information_schema.table_tags t
  GROUP BY
    t.catalog_name,
    t.schema_name,
    t.table_name
) tag_info
  ON tag_info.catalog_name = u.usage_metadata.uc_table_catalog
  AND tag_info.schema_name = u.usage_metadata.uc_table_schema
  AND tag_info.table_name = u.usage_metadata.uc_table_name
  WHERE usage_metadata.uc_table_name is not null;

Vous pouvez utiliser cette même idée pour joindre des balises de colonne, mais à partir de la table column_tags à la place.