Configurer les vues matérialisées autonomes
Configurez les 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 pour 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 de refresh pour une vue matérialisée, utilisez DESCRIBE EXTENDED. Pour soumettre une instruction DESCRIBE, utilisez l'éditeur SQL de l'interface utilisateur de Databricks, l'outil CLI de Databricks SQL, ou l'API Databricks SQL.
Obtenir des informations détaillées sur les vues matérialisées avec l'Explorateur de catalogues
Vous pouvez également utiliser le Catalog Explorer pour afficher les détails d'une vue matérialisée.
- Cliquez sur
Catalogue dans la barre latérale.
- 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.
- Ouvrez l'élément Tables sous le schéma que vous avez sélectionné, et cliquez sur la vue matérialisée.
À partir de là, vous pouvez utiliser les tab sous le nom de la vue matérialisée pour consulter et modifier les informations concernant la vue matérialisée, notamment :
- État et planification de refresh
- Consultez les détails du pipeline pour voir l'historique des refreshes et les Logs détaillés de chaque refresh. Cliquez sur See refresh details depuis l'onglet Overview tab pour voir les détails du pipeline.
- Le schéma de la table
- Données d'exemple (nécessite un compute actif)
- Autorisations
- Traçabilité, y compris les tables et pipelines dont dépend cette vue matérialisée
- Informations 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 Catalog Explorer. Pour ces propriétés, ou pour obtenir les informations par programmation, 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 en 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. Une full refresh est effectuée pour mettre à jour la vue matérialisée, et les refreshes ultérieures 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 riches pour faciliter 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 ayant le privilège MANAGE peut accorder les privilèges SELECT à d'autres utilisateurs. Les utilisateurs ayant 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 la vue matérialisée. Ce contrôle d'accès permet le 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 privilege_type peut être :
SELECT- l'utilisateur peutSELECTla vue matérialisée.REFRESH- l'utilisateur peutREFRESHla vue matérialisée. Les actualisations sont exécutées en utilisant les autorisations du propriétaire.
L'exemple suivant montre comment créer une vue matérialisée et accorder les 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 ayant obtenu les privilèges MANAGE ou SELECT sur la vue matérialisée, ou si la table source est supprimée, le propriétaire de la vue matérialisée ou l'utilisateur ayant obtenu l'accès peut toujours query la vue matérialisée. Cependant, le comportement suivant se produit :
- Le propriétaire de la 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. - Si elle est automatisée avec un calendrier, le
REFRESHplanifié suivant échoue ou n'est pas exécuté.
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 disposant des autorisations MANAGE sur une vue matérialisée autonome peut définir un nouveau propriétaire via le Catalog Explorer. Le nouveau propriétaire peut être lui-même ou un service principal sur lequel il a le rôle d'utilisateur de service principal.
-
Depuis votre Databricks workspace, cliquez
sur **Catalog** pour ouvrir l'Explorateur de catalogues.
-
Sélectionnez la vue matérialisée que vous souhaitez mettre à jour.
-
Dans la barre latérale droite, sous À propos de cette vue matérialisée , recherchez le Propriétaire , et cliquez sur
Modifier.
Si vous recevez un message qui vous invite à 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 Link 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 que vous possédez, et que vous n'avez pas explicitement les privilègesSELECTouMANAGEsur la vue matérialisée, ce changement vous ferait perdre tout accès à la vue matérialisée. Dans ce cas, vous êtes invité à fournir explicitement ces privilèges.Sélectionnez à la fois les privilèges **Grant MANAGE** et **Grant SELECT** pour les appliquer lors de l'**enregistrement**.
-
Cliquez sur Enregistrer pour modifier le propriétaire.
Le propriétaire de la vue matérialisée est mis à jour. Toutes les actualisations futures sont exécutées en utilisant l'identité du nouveau propriétaire.
Lorsque le propriétaire perd les privilèges sur les tables sources
Si vous modifiez le propriétaire et que le nouveau propriétaire n'a pas accès aux tables sources (ou si 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 planifié 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.
Définir le canal d’exécution
Les vues matérialisées créées à l'aide de SQL Warehouses sont actualisées automatiquement à l'aide d'un pipeline. Les pipelines utilisent le runtime dans le canal current par default. Pour en savoir plus sur le processus de publication, consultez les notes de version de LakeFlow Pipelines et le processus de mise à niveau de la publication.
Databricks recommande d'utiliser le canal current pour les workloads de production. Les nouvelles fonctionnalités sont d'abord publiées sur le canal de distribution preview. Vous pouvez définir un pipeline sur le canal de prévisualisation pour tester de nouvelles fonctionnalités en spécifiant preview comme propriété de table à l'aide d'une instruction CREATE OR REPLACE MATERIALIZED VIEW. Pour mettre à jour le canal d'une vue matérialisée existante, vous devez exécuter CREATE OR REPLACE MATERIALIZED VIEW avec le TBLPROPERTIES mis à jour.
L'exemple de code suivant montre comment définir le Canal de distribution sur aperçu :
CREATE OR REPLACE MATERIALIZED VIEW sales
TBLPROPERTIES ('pipelines.channel' = 'preview')
AS ...