Aller au contenu principal

Surveiller les vues matérialisées autonomes

Surveillez et effectuez des query sur les données de refresh concernant une vue matérialisée autonome à l’aide de l’explorateur de catalogue, DESCRIBE EXTENDED ou du journal des événements du pipeline.

Voir les détails d’une vue matérialisée unique​

Vous pouvez afficher les détails d’une seule vue matérialisée en utilisant l’Explorateur de catalogue, ou par programmation, avec l’opération DESCRIBE EXTENDED. Vous pouvez également query le log des événements pour obtenir des détails sur l’historique de refresh d’une vue matérialisée.

Voir les détails dans l'explorateur de catalogue​

Vous pouvez accéder aux informations sur votre vue matérialisée en l’affichant dans l’explorateur de catalogue. Dans l’explorateur de catalogue, vous pouvez voir le dernier état de refresh et tous les programmes de refresh créés dans SQL. Pour plus d’informations sur les calendriers créés dans SQL, consultez CREATE MATERIALIZED VIEW.

L’explorateur de catalogue affiche les détails de chaque vue matérialisée dans un volet sur la droite, notamment :

  1. Statut de refresh actuel et heure de la dernière exécution. Pour obtenir plus de détails sur la mise à jour, notamment la durée d’exécution, les erreurs détaillées et le type de refresh (y compris si la vue matérialisée a été actualisée entièrement ou par incréments, et pourquoi), cliquez sur Voir les détails du refresh .
  2. refresh la fréquence . Si la vue matérialisée dispose d’une planification configurée via SQL, la planification s’affiche. Pour mettre à jour la planification, utilisez ALTER MATERIALIZED VIEW.
  3. Tags . Pour ajouter des tags personnalisés, cliquez sur Ajouter des tags . Les tags ne sont pas automatiquement utilisés pour attribuer les coûts, mais vous pouvez créer manuellement une query pour connecter des tags personnalisés à vos coûts. Pour plus de détails, voir Attribuer des coûts au SQL warehouse avec des tags personnalisés.

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 programme, vous pouvez utiliser la commande DESCRIBE EXTENDED.

Afficher les détails avec DESCRIBE EXTENDED​

remarque

La commande DESCRIBE EXTENDED n'est pas prise en charge sur le compute dédié. Vous devez utiliser le compute standard pour exécuter DESCRIBE EXTENDED sur une vue matérialisée.

Vous pouvez afficher les détails d’une vue matérialisée par programmation à l'aide de la commande DESCRIBE EXTENDED. Cela inclut des détails supplémentaires par rapport à ce que vous obtenez dans l'Explorateur de catalogue. Ils incluent :

  • État de la dernière refresh terminée.
  • Le calendrier de refresh.
  • Colonnes de la vue matérialisée.
  • Le type de refresh de la vue matérialisée (non disponible dans l’explorateur de catalogue).
  • La taille des données de la vue matérialisée, en octets totaux (non disponible dans l’explorateur de catalogues).
  • L'emplacement de stockage de la vue matérialisée (non disponible dans l'Explorateur de catalogues).
  • Certaines informations ne sont incluses dans le résultat que lorsqu'elles sont activées :
    • Colonnes de clustering, si activées.
    • Indique si les vecteurs de suppression sont activés (uniquement affiché lorsque true).
    • Indique si le suivi des lignes est activé (affiché uniquement lorsque true).
SQL
-- As table:
DESCRIBE TABLE EXTENDED sales;

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

query le journal des événements par programmation​

Pour obtenir des détails sur l'historique de refresh d'une vue matérialisée, ou les détails lorsqu'un refresh est en cours, vous pouvez effectuer une query sur le journal des événements par programme.

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

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

Pour query la vue du journal des événements, utilisez une query similaire à la suivante.

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

Pour query le log 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 fonction de valeur TABLE et interroger les données directement, comme dans la query exemple suivante.

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

Pour obtenir une liste complète des exemples de query utilisant le log d'événements, consultez les Exemples de query de base.

Surveiller les exécutions de vues matérialisées​

Vous pouvez surveiller les exécutions de pipeline dans votre workspace à l'aide de la page Jobs & Pipelines , la page Query History ou par programmation en interrogeant le log d'événements. Vous pouvez également configurer des notifications pour les pipelines planifiés.

Afficher toutes les exécutions de vue matérialisée dans l'interface utilisateur​

Si vous utilisez la page Jobs et pipelines pour surveiller l’état de différents jobs d’orchestration dans votre workspace, vous pouvez également suivre toutes les vues matérialisées et les tables de streaming créées à cet endroit. Chaque vue matérialisée autonome est prise en charge par un pipeline. Pour afficher toutes les vues matérialisées et les tables de streaming auxquelles vous avez accès :

  1. Cliquez Icône Workflows. sur le bouton Jobs et pipelines sur le côté gauche de votre workspace.
  2. Cliquez sur le bouton bascule Pipelines pour filtrer votre vue afin d'afficher uniquement les pipelines.
  3. Cliquez sur le bouton Type de pipeline et sélectionnez MV/ST pour filtrer uniquement les pipelines autonomes.
  4. Cliquez sur le filtre Accessibles par moi pour afficher tous les pipelines auxquels vous avez accès.

Vous pouvez 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. Cliquer sur le nom d’un pipeline ouvre la page de détails de monitoring du pipeline pour obtenir plus d’informations. Pour en savoir plus sur la page de détails de monitoring du pipeline, consultez la section Résoudre les problèmes d’un refresh qui a échoué.

Afficher les exécutions à l'aide de l'historique des query​

Si vous êtes davantage familier avec le Historique des requêtes tab, vous pouvez également l'utiliser pour voir toutes les exécutions précédentes de toutes les requêtes pour lesquelles vous avez au moins un accès CAN VIEW au SQL Warehouse en cours d'exécution. Vous pouvez utiliser la page historique des query pour accéder aux détails des query et aux profils de query, ce qui peut vous aider à identifier les query peu performantes et les goulots d’étranglement dans le pipeline utilisé pour exécuter les mises à jour de votre table en streaming. Pour un aperçu des information disponibles pour les historiques de query et les profils de query, voir Historique des query et Profil de query.

info

Aperçu

Cette fonctionnalité est en Aperçu public. Les administrateurs du workspace peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les aperçus Databricks.

Toutes les déclarations concernant les vues matérialisées apparaissent dans l’historique des query. Vous pouvez utiliser le filtre déroulant Instruction pour sélectionner n’importe quelle commande et inspecter les requêtes associées. Toutes les CREATE instructions sont suivies d’une instruction REFRESH qui s’exécute de manière asynchrone sur un pipeline. Les instructions REFRESH incluent généralement des plans de query détaillés qui donnent des insights sur l'optimisation des performances.

Pour accéder aux déclarations de query REFRESH dans l'UI de l'historique des query, suivez les étapes suivantes :

  1. Cliquez sur Icône Historique. Query History dans la barre latérale gauche.
  2. Sélectionnez la case refresh dans le filtre déroulant Instruction .
  3. Cliquez sur le nom de la déclaration de query pour afficher les détails récapitulatifs comme la durée de la query et les métriques agrégées.
  4. Cliquez sur Voir le profil de la query pour ouvrir le profil de la query. Pour plus de détails sur la navigation dans le profil de query, consultez la section Profil de query.
  5. En option, utilisez les liens de la section Source de la query pour ouvrir la query ou le pipeline associé.

Voir CREATE MATERIALIZED VIEW.

Obtenir des notifications pour les refresh programmées​

info

Bêta

La fonctionnalité de notifications pour les refresh planifiés DDL est en version bêta. Les administrateurs de l’Workspace peuvent contrôler l’accès à cette fonctionnalité à partir de la page Prévisualisations en s’inscrivant à l’aperçu Job géré par le système pour les vues matérialisées et les tables de streaming . Consultez Gérer les aperçus Databricks.

Lorsque vous créez une planification pour votre vue matérialisée, vous pouvez la modifier pour recevoir des notifications. Il existe plusieurs façons de planifier des vues matérialisées, et la réception de notifications dépend de la méthode choisie :

  • Planifié avec un job : Pour recevoir des notifications à partir d’une tâche SQL dans Lakeflow Jobs, modifiez la tâche et ajoutez des notifications. Voir Tâche SQL pour les jobs.

    Vous disposez d'un large éventail d'options concernant les notifications à recevoir et la manière de les recevoir. Consultez Ajouter des notifications à un job

  • Programmé avec une clause SCHEDULE : pour recevoir des notifications d’une vue matérialisée qui est programmée par une clause SCHEDULE dans la définition SQL, modifiez-la dans l’ Explorateur de catalogue:

    1. Ouvrez la vue matérialisée dans l’Explorateur de catalogues.

    2. Sous le Vue d’ensemble tab, sous Planning d’refresh , cliquez sur Icône de crayon. pour modifier le planning pour lequel vous souhaitez recevoir des notifications.

    3. Sous Plus d’options , ajoutez ou modifiez des notifications.

      Vous avez la possibilité de recevoir une notification par e-mail au start, à la réussite ou à l’échec de la refresh planifiée. Par default, le propriétaire n’est notifié qu’en cas d’échec.

Résoudre l’échec d’un refresh​

Vous pouvez trouver les mises à jour échouées pour les vues matérialisées (ou les tables de streaming) en consultant la liste Tâches et pipelines . Pour dépanner une mise à jour échouée, utilisez la page des détails de monitoring du pipeline ou le log des événements.

Pour dépanner une refresh qui est complète alors que vous pensez qu’elle devrait être incrémentielle, vérifiez d’abord que le suivi des lignes est activé pour toutes les tables Delta sources. Pour plus de détails sur l’refresh incrémentielle, consultez Prise en charge de l’refresh incrémentielle des vues matérialisées.

Vous pouvez obtenir des détails supplémentaires à partir de la page de monitoring des pipelines, ou en interrogeant le log des événements par programmation.

Utilisation de la page de monitoring du pipeline​

Pour obtenir plus de détails sur une vue matérialisée (ou une table de streaming) qui a échoué, vous pouvez utiliser la page de monitoring du pipeline pour déboguer les problèmes. Chaque vue matérialisée est prise en charge par un pipeline. La page de monitoring des pipelines contient des informations, telles que :

  • Statut de la dernière exécution et historique des exécutions.
  • La durée de la dernière exécution.
  • Si la vue matérialisée a été entièrement ou progressivement actualisée. Pour plus de détails sur la façon d’obtenir le refresh incrémentiel de votre vue matérialisée, voir Prise en charge du refresh incrémentiel des vues matérialisées.
  • Le log des événements pour un debugging plus détaillé. Si la mise à jour de votre vue matérialisée a échoué ou si d’autres problèmes se sont posés, cliquez sur le volet des problèmes pour afficher les logs plus en détail.

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

  1. Dans votre workspace, cliquez sur le Icône Workflows. bouton Jobs et pipelines dans la barre de navigation à gauche.
  2. Cliquez sur le nom de votre pipeline dans la liste.
  3. Si la mise à jour n'a pas pu être exécutée, l'interface utilisateur affiche une erreur (ou une liste d'erreurs) dans le volet inférieur.
  4. Cliquez soit sur le bouton Afficher les logs , soit sur le volet des problèmes pour afficher les erreurs plus en détail.
  5. Cela ouvre l'interface utilisateur des logs d'événements. Chaque erreur possède un message de haut niveau et un résumé, ainsi qu’un tab JSON avec plus de détails. Pour corriger un problème avec le Genie Code, cliquez sur Diagnostiquer l’erreur .

Pour plus de détails sur la page de monitoring du pipeline, consultez ici.

Query l’historique de refresh pour une vue matérialisée​

Le log des événements peut s'avérer utile pour configurer des tableaux de bord pour surveiller l'état ou la durée de la mise à jour dans le Workspace, ou si vous préférez un monitoring programmatique à l'utilisation de l'interface utilisateur. Les vues matérialisées autonomes ne permettent pas d'enregistrer le log des événements dans un métastore. Seul le propriétaire de la vue matérialisée peut donc effectuer des query directement sur le log des événements.

Pour afficher l’état des Opérations REFRESH sur une vue matérialisée, y compris les refresh actuels et passés, query le journal des événements du pipeline :

SQL
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, y compris le catalogue et le schéma. Si vous n’êtes pas le propriétaire du pipeline, vous devez peut-être d’abord créer une vue pour query le log d’événements. Voir query le log d’événements par programmation.

query le type de refresh qui a eu lieu pour une vue matérialisée​

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

Pour voir le type de refresh d’une vue matérialisée, query le log d’événements :

SQL
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 to be executed as ROW_BASED.

Attribuez les coûts au SQL warehouse avec des tags personnalisés​

Il y a deux façons dont les tags se rapportent aux enregistrements de facturation pour une vue matérialisée ou une table de streaming, et elles servent des objectifs différents :

  • Les tags de warehouse sont hérités automatiquement du SQL warehouse et se propagent à la colonne custom_tags de system.billing.usage. Utilisez-les pour attribuer le coût des refresh de vue matérialisée/table de streaming au SQL warehouse source. Ceci ne nécessite aucune jointure manuelle.
  • Les tags au niveau de l’objet ajoutés à une vue matérialisée ou à une table de streaming dans l’explorateur de catalogues attribuent le coût à la table individuelle. Vous pouvez donc regrouper les dépenses par dimension définie sur l’objet lui-même, comme l’équipe, le projet ou le centre de coût. Ces tags ne sont pas automatiquement ajoutés aux enregistrements de facturation. Pour les utiliser pour l’attribution des coûts, joignez-les manuellement à partir de la table système table_tags, comme décrit dans Joindre manuellement des tags au niveau de l’objet.

Propagation automatique des tags de warehouse​

Une vue matérialisée ou une table de streaming dans Databricks SQL s'exécute en arrière-plan sur un pipeline serverless. Ce pipeline récupère automatiquement les tags personnalisés du warehouse qui exécute l'instruction. Ainsi, les refresh sont attribués de la même manière que toute autre instruction SQL, sans jointures supplémentaires pour suivre les coûts jusqu’à un warehouse. Ces tags apparaissent directement dans la colonne custom_tags de system.billing.usage.

remarque

La propagation des tags de warehouse s'applique uniquement aux vues matérialisées et aux tables en streaming dont les instructions sont exécutées à partir d'un SQL Warehouse. Les vues matérialisées et les tables en streaming autonomes créées et actualisées avec Python s'exécutent sur un compute général serverless plutôt que sur un SQL Warehouse, il n'y a donc pas de warehouse englobant duquel hériter les tags. Voir Utiliser Python avec des pipelines autonomes.

Les tags du warehouse qui s'appliquent dépendent de la manière dont le refresh est Trigger :

  • Les refresh du DDL héritent des tags du warehouse qui a exécuté l’instruction DDL (le CREATE ou le CREATE OR REPLACE définissant la vue matérialisée/la table de streaming).
  • Les refresh ad hoc et les refresh déclenchés par une tâche SQL Lakeflow Jobs héritent des tags du warehouse qui exécute ce refresh.

Si une politique d’utilisation serverless et les tags de warehouse définissent la même clé de tag, le tag de politique d’utilisation l’emporte. Cela correspond au comportement de résolution des conflits des jobs serverless.

Pour ajouter des tags à une vue matérialisée ou à une table de streaming existante, exécutez CREATE OR REPLACE (ou CREATE OR REFRESH) à partir du warehouse dont vous souhaitez utiliser les tags. Les refresh planifiés utilisent ces tags.

Les vues matérialisées et les tables de streaming créées dans Databricks SQL apparaissent dans la facturation avec billing_origin_product défini sur SQL et un usage_metadata.dlt_pipeline_id renseigné. La query suivante récupère les tags hérités du warehouse et l’utilisation des DBU pour ces enregistrements au cours des 30 derniers jours :

SQL
SELECT
usage_metadata.dlt_pipeline_id,
custom_tags,
SUM(usage_quantity) AS dbus
FROM system.billing.usage
WHERE billing_origin_product = 'SQL'
AND usage_metadata.dlt_pipeline_id IS NOT NULL
AND usage_date >= DATEADD(day, -30, current_date)
GROUP BY ALL
ORDER BY dbus DESC;

Joindre manuellement des balises au niveau de l’objet​

Les tags ajoutés à une vue matérialisée (ou une table de streaming) dans l’explorateur de catalogues ne sont pas automatiquement ajoutés aux enregistrements de facturation, mais vous pouvez les joindre manuellement à vos informations de facturation dans une query.

Après avoir ajouté des tags à chaque vue matérialisée (ou table de streaming) 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'une query exemple pour récupérer les enregistrements de facturation pour toutes les vues matérialisées et les tables streaming créées avec Databricks SQL et ajouter des tags au niveau de la table :

SQL
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 de la table column_tags à la place.