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 prises en charge par un pipeline Delta Live Tables serverless. 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.
La prise en charge des vues matérialisées dans Azure Databricks remonte au lancement de Delta Live Tables. Quand vous créez une vue matérialisée dans un entrepôt Databricks SQL, un pipeline serverless 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 de Delta Live Tables ou dans 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.
Votre espace de travail doit se trouver dans une région qui prend en charge les entrepôts SQL serverless.
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 queUSE SCHEMA
etUSE CATALOG
sur ses parents. - Vous devez utiliser l’une des ressources de calcul suivantes :
- Entrepôt SQL
- Interfaces Delta Live Tables
- Calcul en mode d’accès partagé
- Mode d’accès mono-utilisateur sur Databricks Runtime 15.4 et versions ultérieures, tant que l’espace de travail est activé pour le calcul serverless. Consultez Contrôle d’accès affiné sur le calcul mono-utilisateur.
- Uniquement si vous êtes le propriétaire de la vue matérialisée : ressource de calcul en mode d’accès mono-utilisateur qui exécute une version de Databricks Runtime comprise 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 CREATE
de vue matérialisée Databricks SQL utilisent un 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 Delta Live Tables serverless est créé automatiquement pour chaque vue matérialisée Databricks SQL. Lorsque la vue matérialisée est actualisée, le pipeline Delta Live Tables 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
etUSE SCHEMA
sur le catalogue et le schéma contenant les tables sources pour la vue matérialisée - Privilèges
USE CATALOG
etUSE SCHEMA
sur le catalogue cible et le schéma pour la vue matérialisée - Privilèges
CREATE TABLE
etCREATE 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 Delta Live Tables. Les pipelines Delta Live Tables utilisent le runtime dans le canal current
par défaut. Consultez les notes de publication Delta Live Tables 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 configurer un pipeline vers la chaîne Delta Live Tables en préversion pour tester de nouvelles fonctionnalités, par la spécification de 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 effectuer une opération REFRESH
sur 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 Delta Live Tables serverless pour traiter les opérations d’actualisation. L’actualisation est gérée par le pipeline Delta Live Tables et la mise à jour est surveillée par l’entrepôt Databricks SQL utilisé pour créer la vue matérialisée. Vous pouvez mettre à jour les vues matérialisées à l’aide d’un pipeline Delta Live Tables qui s’exécute selon une planification. Consultez Mode de pipeline continu et déclenché.
Remarque
Le runtime Delta Live Tables ne peut pas détecter les modifications dans les 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 Vue d’ensemble de l’orchestration sur Databricks.
- Asynchrone : une actualisation asynchrone commence un travail en arrière-plan sur le calcul Delta Live Tables quand une actualisation de vue matérialisée démarre, ce qui permet à la commande de retourner le résultat 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 :
- Configurez la planification avec la clause
SCHEDULE
lorsque vous créez la vue matérialisée. - Ajoutez une planification avec l’instruction ALTER MATERIALIZED VIEW.
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 Delta Live Tables gère les actualisations de vue matérialisée, le temps de démarrage du pipeline entraîne une latence. 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 affichant le pipeline qui gère la vue matérialisée dans l’interface utilisateur de Delta Live Tables ou en affichant les informations d’actualisation retournées par la commande DESCRIBE EXTENDED
pour 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 Delta Live Tables. 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 de l’Historique des requêtes pour accéder aux détails des requêtes et aux profils de requête, ce qui peut vous aider à identifier les requêtes peu performantes et les goulots d’étranglement dans le pipeline Delta Live Tables utilisé pour exécuter vos mises à jour de 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 Instruction pour sélectionner n’importe quelle commande et inspecter les requêtes associées. Toutes les instructions CREATE
sont suivies d’une instruction REFRESH
qui s’exécute de manière asynchrone sur un pipeline Delta Live Tables. 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 :
- Cliquez sur
dans la barre latérale gauche pour ouvrir l’interface utilisateur Historique des requêtes.
- Sélectionnez la case à cocher REFRESH dans le filtre déroulant de la déclaration .
- 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.
- 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.
- 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 de Delta Live Tables
Par défaut, le pipeline Delta Live Tables qui gère une vue matérialisée n’est pas visible dans l’interface utilisateur de Delta Live Tables. Pour afficher le pipeline dans l’interface utilisateur de Delta Live Tables, vous devez accéder directement au lien vers la page Pipeline details 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 de Delta Live Tables, dans la page 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 d'une vue matérialisée avec des vecteurs de suppression activés, comme pour la conformité au RGPD, des étapes supplémentaires doivent être prises pour s'assurer qu'une opération VACUUM s'exécute sur les données de la vue matérialisée.
Les étapes suivantes décrivent ces étapes plus en détail :
- Exécutez une instruction
REORG
sur la vue matérialisée, en spécifiant le paramètreAPPLY (PURGE)
. Par exemple,REORG TABLE <materialized-view-name> APPLY (PURGE);
. Consultez REORG TABLE. - 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. - 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 deREFRESH
, les tâches de maintenance Delta Live Tables, y compris l’opération deVACUUM
requise pour s’assurer que les enregistrements sont supprimés définitivement, sont exécutées automatiquement. Consultez Tâches de maintenance effectuées par Delta Live Tables.
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 à la fois administrateur de metastore et administrateur d’espace de travail. Les vues matérialisées créent et utilisent automatiquement des pipelines Delta Live Tables 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 peutSELECT
la vue matérialisée.REFRESH
: l’utilisateur peutREFRESH
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 REFRESH
sur une vue matérialisée, y compris les actualisations actuelles et passées, interrogez le journal des événements Delta Live Tables :
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.
Consultez Qu’est-ce que le journal des événements Delta Live Tables ?.
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é ni 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 valeursNULL
dans cette colonne, la valeur d’agrégation résultante de la vue matérialisée est zéro au lieu deNULL
. - Vous ne pouvez pas lire un flux des changements de données à partir d’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égationCOUNT DISTINCT
, les fichiers sous-jacents contiennent une liste des valeurs réelles defield_a
.