Aller au contenu principal

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.

  1. Cliquez sur Icône de données. Catalogue dans la barre latérale.
  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é, 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:

SQL
GRANT <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 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 :

SQL
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:

SQL
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 REFRESH cette vue matérialisée, et la vue matérialisée devient obsolète.
  • Si elle est automatisée avec un calendrier, le REFRESH planifié suivant échoue ou n'est pas exécuté.

L'exemple suivant révoque le privilège SELECT de read_only_user:

SQL
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.

  1. Depuis votre Databricks workspace, cliquez Icône de données. sur **Catalog** pour ouvrir l'Explorateur de catalogues.

  2. Sélectionnez la vue matérialisée que vous souhaitez mettre à jour.

  3. Dans la barre latérale droite, sous À propos de cette vue matérialisée , recherchez le Propriétaire , et cliquez sur Icône de crayon. Modifier.

remarque

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**.

  1. Sélectionnez un nouveau propriétaire pour la vue matérialisée.

    Les propriétaires disposent automatiquement des privilèges MANAGE et SELECT sur 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èges SELECT ou MANAGE sur 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**.

  2. 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 REFRESH la 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 :

SQL
CREATE OR REPLACE MATERIALIZED VIEW sales
TBLPROPERTIES ('pipelines.channel' = 'preview')
AS ...