Partager via


Utiliser des vues matérialisées dans Databricks SQL

Cet article explique comment créer et utiliser des vues matérialisées dans Databricks SQL pour améliorer les performances et réduire le coût de vos charges de travail de traitement et d’analyse de données.

Remarque

Si vous devez utiliser une connexion Azure Private Link avec votre vue matérialisée, contactez votre représentant Databricks.

Important

Les vues matérialisées créées dans Databricks SQL sont soutenues par un pipeline DLT sans serveur. Votre espace de travail doit prendre en charge les pipelines serverless pour utiliser cette fonctionnalité.

Qu’est-ce qu’une vue matérialisée ?

Dans Databricks SQL, les vues matérialisées sont des tables managées Unity Catalog qui permettent aux utilisateurs de précalculer les résultats en fonction de la dernière version des données dans les tables sources. Les vues matérialisées sur Azure Databricks diffèrent des autres implémentations, car les résultats retournés reflètent l’état des données au moment de la dernière actualisation de la vue matérialisée au lieu de toujours mettre à jour les résultats lorsque la vue matérialisée est interrogée. Vous pouvez actualiser manuellement les vues matérialisées ou planifier des actualisations.

Les vues matérialisées sont puissantes pour les charges de travail de traitement des données telles que le traitement ETL (extraction, transformation et chargement). Les vues matérialisées fournissent un moyen simple et déclaratif de traiter les données à des fins de conformité, de correction, d’agrégation ou de capture des changements de données (CDC). Les vues matérialisées réduisent les coûts et améliorent la latence des requêtes en précalculant les requêtes lentes et les calculs fréquemment utilisés. Les vues matérialisées rendent également les transformations simples à utiliser en nettoyant, enrichissant et dénormalisant les tables de base. Les vues matérialisées peuvent réduire les coûts tout en offrant une expérience utilisateur final simplifiée. En effet, dans certains cas, elles peuvent calculer de manière incrémentielle les modifications à partir des tables de base.

Les vues matérialisées ont d’abord été prises en charge dans Azure Databricks avec le lancement de DLT. Quand vous créez une vue matérialisée dans un entrepôt Databricks SQL, un pipeline sans serveur est créé pour traiter les actualisations de la vue matérialisée. Vous pouvez surveiller l’état des opérations d’actualisation dans l’interface utilisateur DLT ou l’API pipelines. Consultez Afficher l’état d’une actualisation de vue matérialisée.

Conditions requises

Pour créer ou actualiser des vues matérialisées :

  • Vous devez utiliser un entrepôt SQL pro ou serverless compatible avec Unity Catalog.
  • Pour actualiser une vue matérialisée, vous devez être dans l’espace de travail qui l’a créée.

Pour interroger des vues matérialisées :

  • Vous devez être le propriétaire de la vue matérialisée, ou avoir SELECT sur la vue matérialisée, ainsi que USE SCHEMA et USE CATALOG sur ses parents.
  • Vous devez utiliser l’une des ressources de calcul suivantes :
    • Entrepôt SQL
    • Interfaces DLT
    • Calcul du mode d’accès standard (anciennement mode d’accès partagé)
    • Mode d’accès dédié (anciennement mode d’accès utilisateur unique) sur Databricks Runtime 15.4 et versions ultérieures, tant que l’espace de travail est activé pour le calcul serverless. Consultez le contrôle d’accès affiné sur le calcul dédié (anciennement calcul mono-utilisateur).
    • Uniquement si vous êtes le propriétaire de la vue matérialisée : ressource de calcul en mode d’accès dédié exécutant Databricks Runtime entre 14.3 et 15.3.

Pour en savoir plus sur les autres restrictions relatives à l’utilisation des vues matérialisées, consultez Limitations.

Créer une vue matérialisée

Les opérations de vue matérialisée de Databricks SQL utilisent le entrepôt Databricks SQL pour créer et charger des données dans la vue matérialisée. La création d’une vue matérialisée est une opération synchrone, ce qui signifie que la commande CREATE MATERIALIZED VIEW se bloque jusqu’à ce que la vue matérialisée soit créée et que le chargement initial des données soit terminé. Un pipeline DLT serverless est créé automatiquement pour chaque vue matérialisée Databricks SQL. Lorsque la vue matérialisée est actualisée, le pipeline DLT traite l’actualisation.

Pour créer une vue matérialisée, utilisez l’instruction CREATE MATERIALIZED VIEW. Pour envoyer une instruction de création, utilisez l’éditeur SQL dans l’interface utilisateur Azure Databricks, l’interface CLI Databricks SQL ou l’API Databricks SQL.

Remarque

L’utilisateur qui crée une vue matérialisée en est le propriétaire et doit disposer des autorisations suivantes :

  • Privilège SELECT sur les tables de base référencées par la vue matérialisée
  • Privilèges USE CATALOG et USE SCHEMA sur le catalogue et le schéma contenant les tables sources pour la vue matérialisée
  • Privilèges USE CATALOG et USE SCHEMA sur le catalogue cible et le schéma pour la vue matérialisée
  • Privilèges CREATE TABLE et CREATE MATERIALIZED VIEW sur le schéma contenant la vue matérialisée

L’exemple suivant crée la vue matérialisée mv1 à partir de la table de base base_table1 :

CREATE MATERIALIZED VIEW mv1
AS SELECT
  date,
  sum(sales) AS sum_of_sales
FROM
  base_table1
GROUP BY
  date;

Les commentaires de colonne d’une table de base sont automatiquement propagés à la nouvelle vue matérialisée. Pour ajouter une planification, des contraintes de table ou d’autres propriétés, modifiez la définition de vue matérialisée. Pour en savoir plus sur la syntaxe pour définir une vue matérialisée, consultez CREATE MATERIALIZED VIEW.

Définir le canal d’exécution

Les vues matérialisées créées à l’aide d’entrepôts SQL sont automatiquement actualisées à l’aide d’un pipeline DLT. Les pipelines DLT utilisent le runtime dans le current canal par défaut. Consultez les notes de publication DLT et le processus de mise à niveau des versions pour en savoir plus sur le processus de mise en production.

Databricks recommande d’utiliser le canal current pour les charges de travail de production. Les nouvelles fonctionnalités sont d’abord publiées sur le canal preview. Vous pouvez définir un pipeline sur le canal DLT en préversion pour tester les nouvelles fonctionnalités en spécifiant preview comme propriété de table. Vous pouvez spécifier cette propriété lorsque vous créez la table ou après la création de la table à l'aide d'une instruction ALTER.

L’exemple de code suivant montre comment configurer le canal en préversion dans une instruction CREATE :

CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
  *
FROM
  range(5)

Charger des données à partir de systèmes externes

Databricks recommande de charger des données externes avec Lakehouse Federation pour les sources de données prises en charge. Pour plus d’informations sur le chargement de données à partir de sources non prises en charge par Lakehouse Federation, consultez Options de format de données.

Actualiser une vue matérialisée

L’opération REFRESH actualise la vue matérialisée pour refléter les dernières modifications apportées à la table de base. L’opération est synchrone par défaut, ce qui signifie que la commande se bloque jusqu’à ce que l’opération d’actualisation soit terminée. Pour actualiser une vue matérialisée, utilisez l’instruction REFRESH MATERIALIZED VIEW. Consultez REFRESH (MATERIALIZED VIEW ou STREAMING TABLE) pour plus d’informations sur la syntaxe SQL et les paramètres de cette commande. Pour en savoir plus sur les types de vues matérialisées qui peuvent être actualisées de manière incrémentielle, consultez Actualisation incrémentielle pour les vues matérialisées.

Pour envoyer une instruction d’actualisation, utilisez l’éditeur SQL dans l’interface utilisateur Azure Databricks, un notebook attaché à un entrepôt SQL, l’interface CLI Databricks SQL ou l’API Databricks SQL.

Seul le propriétaire peut REFRESH la vue matérialisée.

L’exemple suivant actualise la vue matérialisée mv1 :

REFRESH MATERIALIZED VIEW mv1;

Comment les vues matérialisées Databricks SQL sont-elles actualisées ?

Les vues matérialisées créent et utilisent automatiquement des pipelines DLT serverless pour traiter les opérations d’actualisation. L’actualisation est gérée par le pipeline DLT et la mise à jour est surveillée par l’entrepôt SQL Databricks utilisé pour créer la vue matérialisée. Les vues matérialisées peuvent être mises à jour à l’aide d’un pipeline DLT qui s’exécute selon une planification. Consultez Mode pipeline déclenché ou continu.

Remarque

Le runtime DLT ne peut pas détecter les modifications apportées aux sources de données non Delta. La table est toujours mise à jour régulièrement, mais avec un intervalle de déclenchement par défaut plus long afin d’éviter qu’un recalcul excessif ne ralentisse tout traitement incrémentiel se déroulant lors du calcul.

Par défaut, les opérations d’actualisation sont effectuées de manière synchrone. Vous pouvez également définir une opération d’actualisation asynchrone. Pour cela, vous pouvez utiliser la commande d’actualisation. Consultez REFRESH (MATERIALIZED VIEW ou STREAMING TABLE) Le comportement associé à chaque approche est le suivant :

  • Synchrone : une actualisation synchrone empêche les autres opérations de continuer tant que l’actualisation n’est pas terminée. Si le résultat est nécessaire pour l’étape suivante, par exemple lors du séquencement d’opérations d’actualisation dans des outils d’orchestration tels que Databricks Jobs, utilisez une actualisation synchrone. Pour orchestrer des vues matérialisées avec un travail, utilisez le type de tâche SQL. Consultez Orchestration à l’aide des travaux Databricks.
  • Asynchrone : une actualisation asynchrone démarre un travail en arrière-plan sur le calcul DLT lorsqu’une actualisation de vue matérialisée commence, ce qui permet à la commande de retourner avant la fin du chargement des données. Ce type d’actualisation peut réduire les coûts, car l’opération ne dispose pas nécessairement d’une capacité de calcul dans l’entrepôt où la commande est lancée. Si l’actualisation devient inactive et qu’aucune autre tâche n’est en cours d’exécution, l’entrepôt peut s’arrêter pendant que l’actualisation utilise d’autres calculs disponibles. De plus, les actualisations asynchrones prennent en charge le démarrage de plusieurs opérations en parallèle.

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

Planifier les actualisations de vue matérialisée

Vous pouvez configurer une vue matérialisée Databricks SQL pour qu’elle s’actualise automatiquement selon une planification définie. Pour définir une planification, effectuez l’une des opérations suivantes :

Lorsqu’une planification est créée, un nouveau travail Databricks est automatiquement configuré pour traiter la mise à jour.

Pour afficher la planification, effectuez l’une des opérations suivantes :

  • Exécutez l’instruction DESCRIBE EXTENDED à partir de l’éditeur SQL dans l’interface utilisateur Azure Databricks.
  • Utilisez l’Explorateur de catalogues pour afficher la vue matérialisée. La planification est listée sous l’onglet Vue d’ensemble, sous État d’actualisation. Consultez Qu’est-ce que l’Explorateur de catalogues ?.

Afficher l’état d’une actualisation de vue matérialisée

Remarque

Étant donné qu’un pipeline DLT gère les actualisations d’affichage matérialisées, la latence est générée par le temps de démarrage du pipeline. Cette durée peut être de l’ordre de quelques secondes à quelques minutes, en plus du temps nécessaire pour effectuer l’actualisation.

Vous pouvez afficher l’état d’une actualisation de vue matérialisée en consultant le pipeline qui gère la vue matérialisée dans l’interface utilisateur DLT ou en affichant les informations d’actualisation retournées par la DESCRIBE EXTENDED commande de la vue matérialisée.

Vous pouvez également afficher l’historique d’actualisation d’une vue matérialisée en interrogeant le journal des événements DLT. Consultez Afficher l’historique d’actualisation pour une vue matérialisée.

Surveiller les exécutions à l’aide de l’Historique des requêtes

Vous pouvez utiliser la page d’historique des requêtes pour accéder aux détails de la requête et aux profils de requête qui peuvent vous aider à identifier les requêtes et les goulots d’étranglement mal exécutés dans le pipeline DLT utilisé pour exécuter les mises à jour de votre table de diffusion en continu. 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 activer 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 DLT. 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 Icône Historique dans la barre latérale gauche pour ouvrir l’interface utilisateur Historique des requêtes.
  2. Sélectionnez la case à cocher REFRESH dans le filtre déroulant de la déclaration .
  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é.

Consultez CREATE MATERIALIZED VIEW.

Afficher l’état d’actualisation dans l’interface utilisateur DLT

Par défaut, le pipeline DLT qui gère une vue matérialisée n’est pas visible dans l’interface utilisateur DLT. Pour afficher le pipeline dans l’interface utilisateur DLT, vous devez accéder directement au lien vers la page de détails du pipeline. Pour accéder au lien :

  • Copiez et collez le lien affiché dans la ligne Dernière actualisation de la table retournée par l’instruction DESCRIBE EXTENDED.
  • Sous l’onglet de traçabilité de la vue matérialisée, cliquez sur Pipelines, puis sur le lien du pipeline.

Pour les commandes REFRESH asynchrones envoyées à l’aide de l’éditeur SQL dans l’interface utilisateur Azure Databricks, vous pouvez afficher l’état d’actualisation en suivant le lien affiché dans le panneau Résultats.

Arrêter une actualisation active

Pour arrêter une actualisation active dans l’interface utilisateur DLT, dans la page des détails du pipeline , cliquez sur Arrêter pour arrêter la mise à jour du pipeline. Vous pouvez également arrêter l’actualisation avec l’interface CLI Databricks ou l’opération POST /api/2.0/pipelines/{pipeline_id}/stop dans l’API Pipelines.

Mettre à jour la définition d’une vue matérialisée

Pour mettre à jour la définition d’une vue matérialisée, vous devez d’abord supprimer la vue matérialisée, puis la recréer.

Effacer définitivement les enregistrements d’une vue matérialisée avec activation des vecteurs de suppression

Important

La prise en charge de l’instruction REORG avec des vues matérialisées est en préversion publique.

Remarque

  • L’utilisation d’une instruction REORG avec une vue matérialisée nécessite Databricks Runtime 15.4 et versions ultérieures.
  • Bien que vous puissiez utiliser l’instruction REORG avec n’importe quelle vue matérialisée, il n’est requis que lors de la suppression d’enregistrements d’une vue matérialisée avec les vecteurs de suppression activés. La commande n’a aucun effet lorsqu’elle est utilisée avec une vue matérialisée sans vecteurs de suppression activés.

Pour supprimer physiquement les enregistrements du stockage sous-jacent pour une vue matérialisée avec des vecteurs de suppression activés, comme pour la conformité RGPD, des étapes supplémentaires doivent être prises pour s’assurer qu’une VACUUM opération s’exécute sur les données de la vue matérialisée.

Les étapes suivantes décrivent ces étapes plus en détail :

  1. Exécutez une instruction REORG sur la vue matérialisée, en spécifiant le paramètre APPLY (PURGE). Par exemple, REORG TABLE <materialized-view-name> APPLY (PURGE);. Consultez REORG TABLE.
  2. Attendez que la période de rétention des données de la vue matérialisée passe. La période de rétention des données par défaut est de sept jours, mais elle peut être configurée avec la propriété de table delta.deletedFileRetentionDuration. Consultez Configurer la conservation des données pour des requêtes de voyage dans le temps.
  3. Effectuez une opération REFRESH sur la vue matérialisée. Consultez Actualiser une vue matérialisée. Dans les 24 heures de l’opération REFRESH , les tâches de maintenance DLT, y compris l’opération VACUUM requise pour s’assurer que les enregistrements sont supprimés définitivement, sont exécutées automatiquement.

Supprimer une vue matérialisée

Remarque

Pour soumettre la commande de suppression d’une vue matérialisée, vous devez être le propriétaire de cette vue matérialisée ou avoir le privilège MANAGE sur la vue matérialisée.

Pour supprimer une vue matérialisée, utilisez l’instruction DROP VIEW. Pour envoyer une instruction DROP, vous pouvez utiliser l’éditeur SQL dans l’interface utilisateur Azure Databricks, l’interface CLI Databricks SQL ou l’API Databricks SQL. L’exemple suivant supprime la vue matérialisée mv1 :

DROP MATERIALIZED VIEW mv1;

Décrire une vue matérialisée

Pour récupérer les colonnes et les types de données d’une vue matérialisée, utilisez l’instruction DESCRIBE. Pour récupérer les colonnes, les types de données et les métadonnées telles que le propriétaire, l’emplacement, l’heure de création et l’état d’actualisation d’une vue matérialisée, utilisez DESCRIBE EXTENDED. Pour envoyer une instruction DESCRIBE, utilisez l’éditeur SQL dans l’interface utilisateur Azure Databricks, l’interface CLI Databricks SQL ou l’API Databricks SQL.

Modifier le propriétaire d’une vue matérialisée

Vous pouvez modifier le propriétaire d’une vue matérialisée si vous êtes un administrateur de metastore et un administrateur d’espace de travail. Les vues matérialisées créent et utilisent automatiquement des pipelines DLT pour traiter les modifications. Pour modifier un propriétaire de vues matérialisées, effectuez les étapes suivantes :

  • Sous l’onglet de traçabilité de la vue matérialisée, cliquez sur Pipelines, puis sur le lien du pipeline.
  • Cliquez sur Partager. La boîte de dialogue Paramètres des autorisations s’affiche.
  • Cliquez sur x à la droite du nom du propriétaire actuel pour supprimer le propriétaire actuel.
  • Commencez à saisir pour filtrer la liste des utilisateurs disponibles. Cliquez sur l’utilisateur à désigner comme nouveau propriétaire du pipeline.
  • Cliquez sur Enregistrer pour enregistrer vos modifications et fermer la boîte de dialogue.

Toutes les ressources du pipeline, y compris les vues matérialisées définies dans le pipeline, appartiennent au nouveau propriétaire du pipeline. Toutes les futures mises à jour seront exécutées avec l’identité du nouveau propriétaire.

Contrôler l’accès aux vues matérialisées

Les vues matérialisées prennent en charge des contrôles d’accès enrichis afin de prendre en charge le partage de données tout en évitant d’exposer des données potentiellement privées. Le propriétaire d'une vue matérialisée ou l'utilisateur disposant du privilège MANAGE peut accorder des privilèges SELECT à d’autres utilisateurs. Les utilisateurs disposant de l’accès SELECT à la vue matérialisée n’ont pas besoin de l’accès SELECT aux tables référencées par la vue matérialisée. Ce contrôle d’accès permet le partage de données tout en contrôlant l’accès aux données sous-jacentes.

Accorder des privilèges à une vue matérialisée

Pour accorder l’accès à une vue matérialisée, utilisez l’instruction GRANT :

GRANT
  privilege_type [, privilege_type ] ...
  ON <mv_name> TO principal;

Le privilege_type peut être :

  • SELECT : l’utilisateur peut SELECT la vue matérialisée.
  • REFRESH : l’utilisateur peut REFRESH la vue matérialisée. Les actualisations sont exécutées conformément aux autorisations du propriétaire.

L’exemple suivant crée une vue matérialisée et accorde des privilèges de sélection et d’actualisation à un utilisateur :

CREATE MATERIALIZED VIEW <mv_name> AS SELECT * FROM <base_table>;
GRANT SELECT ON <mv_name> TO user;
GRANT REFRESH ON <mv_name> TO user;

Révoquer des privilèges d’accès à une vue matérialisée

Pour révoquer l’accès à une vue matérialisée, utilisez l’instruction REVOKE :

REVOKE
  privilege_type [, privilege_type ]
  ON <name> FROM principal;

Lorsque les privilèges SELECT sur une table de base sont révoqués au propriétaire de la vue matérialisée ou à tout autre utilisateur ayant reçu des privilèges MANAGE ou SELECT sur la vue matérialisée, ou que la table de base est supprimée, le propriétaire de la vue matérialisée ou l'utilisateur ayant obtenu l'accès peut toujours interroger la vue matérialisée. Toutefois, le comportement suivant se produit :

  • Le propriétaire de la vue matérialisée ou toute autre personne ayant perdu l’accès à une vue matérialisée ne peut plus REFRESH cette vue matérialisée, et la vue matérialisée deviendra obsolète.
  • En cas d’automatisation avec une planification, l’opération REFRESH suivante échoue ou n’est pas exécutée.

L’exemple suivant révoque le privilège SELECT de mv1 :

REVOKE SELECT ON mv1 FROM user1;

Activer le flux des changements de données

Le flux des changements de données est requis sur les tables de base des vues matérialisées, exception faite de certains cas d’utilisation avancés. Pour activer le flux des changements de données sur une table de base, définissez la propriété de table delta.enableChangeDataFeed en utilisant la syntaxe suivante :

ALTER TABLE table1 SET TBLPROPERTIES (delta.enableChangeDataFeed = true);

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

Pour afficher l’état des opérations sur une vue matérialisée, y compris les actualisations actuelles et passées, interrogez le journal des REFRESH événements DLT :

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.

Voir quel est le journal des événements DLT ?.

Obtenir des informations détaillées sur les vues matérialisées avec l’Explorateur de catalogues

Vous pouvez utiliser l’Explorateur de catalogues pour afficher des détails sur une vue matérialisée.

  1. Cliquez dans la barre latérale sur icône CatalogueCatalog.
  2. Dans l’arborescence de l’Explorateur de catalogues à gauche, ouvrez le catalogue et sélectionnez le schéma où se trouve votre vue matérialisée.
  3. Ouvrez l’élément Tables sous le schéma que vous avez sélectionné, puis cliquez sur la vue matérialisée.

À partir de là, vous pouvez utiliser les onglets sous le nom de la vue matérialisée pour afficher et modifier des informations sur la vue matérialisée, notamment :

  • Actualiser l’état et l’historique
  • Schéma de table
  • Exemples de données (nécessite un calcul actif)
  • Autorisations
  • Traçabilité, y compris les tables et les pipelines dont dépend cette vue matérialisée
  • Insights sur l’utilisation
  • Moniteurs que vous avez créés pour cette vue matérialisée

Limitations

  • Pour connaître les besoins en matière de calcul et d’espace de travail, consultez Configuration requise.
  • Les vues matérialisées ne prennent pas en charge les colonnes d’identité ou les clés de substitution.
  • Si une vue matérialisée utilise un agrégat de somme sur une colonne pouvant accepter la valeur NULL et qu’il ne reste que des valeurs NULL dans cette colonne, la valeur d’agrégation résultante de la vue matérialisée est zéro au lieu de NULL.
  • Vous ne pouvez pas lire le flux des changements de données depuis une vue matérialisée.
  • Les requêtes de voyage dans le temps ne sont pas prises en charge sur les vues matérialisées.
  • Les fichiers sous-jacents prenant en charge les vues matérialisées peuvent inclure des données provenant de tables en amont (y compris d’éventuelles informations d’identification personnelle) qui n’apparaissent pas dans la définition de la vue matérialisée. Ces données sont automatiquement ajoutées au stockage sous-jacent pour prendre en charge l’actualisation incrémentielle des vues matérialisées. Étant donné que les fichiers sous-jacents d’une vue matérialisée peuvent risquer d’exposer des données provenant de tables en amont qui ne font pas partie du schéma de vue matérialisée, Databricks recommande de ne pas partager le stockage sous-jacent avec des consommateurs en aval non approuvés. Par exemple, supposez que la définition d’une vue matérialisée inclut une clause COUNT(DISTINCT field_a). Même si la définition de vue matérialisée inclut uniquement la clause d’agrégation COUNT DISTINCT, les fichiers sous-jacents contiennent une liste des valeurs réelles de field_a.