Configurer des vues matérialisées autonomes
Configurez des vues matérialisées autonomes, y compris le contrôle d'accès sur les résultats, lorsque vous créez la vue matérialisée avec CREATE OR REPLACE MATERIALIZED VIEW, ou après la création avec ALTER TABLE.
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 comme le propriétaire, l’emplacement, l’heure de création et l’état du refresh pour une vue matérialisée, utilisez DESCRIBE EXTENDED. Pour soumettre une instruction DESCRIBE, utilisez l’éditeur SQL dans l’interface utilisateur de Databricks, la CLI Databricks SQL ou l’ API Databricks SQL.
Obtenez des informations détaillées sur les vues matérialisées avec l’Explorateur de catalogues
Vous pouvez également utiliser l’ Explorateur de catalogues pour afficher les détails concernant une vue matérialisée.
- Cliquez sur
Catalogue dans la barre latérale.
- Dans l’arborescence de l’explorateur de catalogues située à gauche, ouvrez le catalogue et sélectionnez le schéma où se trouve votre vue matérialisée.
- Ouvrez l’élément Tables sous le schéma que vous avez sélectionné, puis cliquez sur la vue matérialisée.
Depuis cet emplacement, vous pouvez utiliser les tab sous le nom de la vue matérialisée pour afficher et modifier des informations la concernant, notamment :
- État et programme de refresh
- Consultez les détails du pipeline pour voir l'historique des refresh et les logs détaillés pour chaque refresh. Cliquez sur Voir les détails du refresh dans le tab Vue d'ensemble pour voir les détails du pipeline.
- Le schéma de la table
- Données d’échantillon (nécessite un compute actif)
- Autorisations
- Traçabilité, y compris les tables et les pipelines dont cette vue matérialisée dépend
- Insights sur l'utilisation
- Moniteurs que vous avez créés pour cette vue matérialisée
Certaines propriétés de la table ne sont pas disponibles dans l'explorateur de catalogues. Pour ces propriétés, ou pour obtenir ces informations par programme, vous pouvez utiliser la commande DESCRIBE EXTENDED.
Mettre à jour la définition d'une vue matérialisée
La query qui spécifie la vue matérialisée est sa définition. Pour modifier la définition de la vue matérialisée, modifiez la query ou créez une nouvelle query CREATE OR REPLACE MATERIALIZED VIEW avec le même nom de vue, puis exécutez-la. Un refresh complet est effectué pour mettre à jour la vue matérialisée, et les refresh suivants utilisent la nouvelle définition.
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, permettant ainsi le Data Sharing tout en évitant d'exposer des données potentiellement privées. Un propriétaire de vue matérialisée ou un utilisateur disposant du privilège MANAGE peut accorder des privilèges SELECT à d'autres utilisateurs. Les utilisateurs bénéficiant d'un accès SELECT à la vue matérialisée n'ont pas besoin d'un accès SELECT aux tables référencées par celle-ci. Ce contrôle d'accès permet de Data Sharing tout en contrôlant l'accès aux données sous-jacentes.
Vous pouvez également modifier le propriétaire d'une vue matérialisée.
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> ON <mv_name> TO <principal>;
Le type de privilège peut être :
SELECT- l’utilisateur peutSELECTla vue matérialisée.REFRESH- l’utilisateur peutREFRESHla vue matérialisée. Les refresh sont effectués en utilisant les autorisations du propriétaire.
L’exemple suivant crée une vue matérialisée et octroie des privilèges de sélection et de refresh aux utilisateurs :
CREATE MATERIALIZED VIEW mv_name AS SELECT * FROM source_table;
-- Grant read-only access:
GRANT SELECT ON mv_name TO read_only_user;
-- Grant read and refresh access:
GRANT SELECT ON mv_name TO refresh_user;
GRANT REFRESH ON mv_name TO refresh_user;
Révoquer les privilèges d’une vue matérialisée
Pour révoquer l’accès à une vue matérialisée, utilisez l’ instruction REVOKE:
REVOKE privilege_type ON <mv_name> FROM principal;
Lorsque les privilèges SELECT sur une table source sont révoqués du propriétaire de la vue matérialisée ou de tout autre utilisateur qui a reçu les privilèges MANAGE ou SELECT sur la vue matérialisée, ou lorsque la table source est supprimée, le propriétaire de la vue matérialisée ou l'utilisateur autorisé peut toujours query la vue matérialisée. Cependant, le comportement suivant se produit :
- Le propriétaire d'une vue matérialisée ou d'autres personnes ayant perdu l'accès à une vue matérialisée ne peuvent plus
REFRESHcette vue matérialisée, et la vue matérialisée devient obsolète. - En cas d’automatisation avec un planning, le
REFRESHplanifié suivant échoue ou ne s’exécute pas.
L’exemple suivant révoque le privilège SELECT de read_only_user:
REVOKE SELECT ON mv_name FROM read_only_user;
Modifier le propriétaire d'une vue matérialisée
Un utilisateur avec des autorisations MANAGE sur une vue matérialisée autonome peut définir un nouveau propriétaire via l’explorateur de catalogues. Le nouveau propriétaire peut être lui-même ou un Service Principal sur lequel il possède le rôle de Service Principal User .
-
Depuis votre espace de travail Databricks, cliquez sur
Catalogue pour ouvrir l'Explorateur de catalogues.
-
Sélectionnez la vue matérialisée que vous voulez mettre à jour.
-
Dans la barre latérale droite, sous À propos de cette vue matérialisée , recherchez le Propriétaire , puis cliquez sur
Modifier.
Si vous recevez un message vous demandant de mettre à jour le propriétaire en modifiant l’utilisateur Exécuter en tant que dans les paramètres du pipeline, la vue matérialisée est définie dans un LakeFlow Pipelines, et non comme une table autonome. Le message inclut un lien vers les paramètres du pipeline, où vous pouvez modifier l’utilisateur Exécuter en tant que .
-
Sélectionnez un nouveau propriétaire pour la vue matérialisée.
Les propriétaires disposent automatiquement des privilèges
MANAGEetSELECTsur les vues matérialisées qu’ils possèdent. Si vous définissez un Service Principal comme propriétaire d’une vue matérialisée dont vous êtes le propriétaire, et que vous ne disposez pas explicitement des privilègesSELECTouMANAGEsur la vue matérialisée, ce changement vous fera perdre tout accès à celle-ci. Dans ce cas, vous êtes invité à fournir explicitement ces privilèges.Sélectionnez à la fois les privilèges Accorder MANAGE et Accorder SELECT pour les fournir en cliquant sur Enregistrer .
-
Cliquez sur Enregistrer pour modifier le propriétaire.
Le propriétaire de la vue matérialisée est mis à jour. Toutes les futures refresh seront exécutées à l’aide de l’identité du nouveau propriétaire.
Quand le propriétaire perd les privilèges sur les tables source
Si vous changez de propriétaire et que le nouveau propriétaire n’a pas accès aux tables sources (ou que les privilèges SELECT sont révoqués sur les tables sources sous-jacentes), les utilisateurs peuvent toujours query la vue matérialisée. Cependant :
- Ils ne peuvent pas
REFRESHla vue matérialisée. - Le prochain refresh programmé de la vue matérialisée échoue.
La perte d'accès aux données sources empêche les mises à jour, mais n'invalide pas immédiatement la lecture de la vue matérialisée existante.
Version de Runtime
Les vues matérialisées s’exécutent toujours sur la dernière version du runtime Databricks SQL. La propriété de table pipelines.channel, précédemment utilisée pour sélectionner un canal de distribution preview ou current, n’est plus prise en charge et n’a aucun effet. Si une définition existante inclut cette propriété, elle est ignorée en toute sécurité et vous n’avez pas besoin de la supprimer.