Partager via


Configurer des vues matérialisées dans Databricks SQL

Cet article explique comment configurer des vues matérialisées dans Databricks SQL, notamment le contrôle d’accès sur les résultats. La plupart des configurations peuvent être effectuées lorsque vous créez la vue matérialisée avec l’instruction CREATE OR REPLACE MATERIALIZED VIEW , ou après la création, avec l’instruction 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 tels 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 DESCRIBE instruction, utilisez l’éditeur SQL dans l’interface utilisateur Azure Databricks, l’interface CLI SQL Databricks ou l’API SQL Databricks.

Obtenir 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 des détails sur une vue matérialisée.

  1. Cliquez sur l’icône 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é, 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 :

  • Mettre à jour l’état et le calendrier
  • Consultez les détails du pipeline pour afficher l’historique des actualisations, ainsi que les journaux détaillés pour chaque actualisation. Cliquez sur Afficher les détails de l’actualisation sous l’onglet Vue d’ensemble pour afficher les détails du pipeline.
  • Schéma de table
  • Exemples de données (nécessite un calcul actif)
  • Permissions
  • 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

Il existe quelques propriétés de la table qui ne sont pas disponibles dans l’Explorateur de catalogues. 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 requête 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 requête ou créez une requête CREATE OR REPLACE MATERIALIZED VIEW portant le même nom d’affichage, puis exécutez-la. Une actualisation complète est effectuée pour mettre à jour la vue matérialisée et les actualisations supplémentaires utilisent la nouvelle définition.

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

Les vues matérialisées prennent en charge les contrôles d’accès enrichis pour prendre en charge le partage de données 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 les privilèges SELECT à d'autres utilisateurs. Les utilisateurs ayant SELECT accès à la vue matérialisée n’ont pas besoin SELECT d’accéder 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.

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’instructionGRANT :

GRANT <privilege_type> ON <mv_name> TO <principal>;

La 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 à l’aide des 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 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;

-- Grand read and refresh access:
GRANT SELECT ON mv_name TO refresh_user;
GRANT REFRESH ON mv_name TO refresh_user;

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

Pour révoquer l’accès à partir d’une vue matérialisée, utilisez l’instructionREVOKE :

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 reçu des privilèges MANAGE ou SELECT sur la vue matérialisée, ou que la table source est supprimée, le propriétaire de la vue matérialisée ou tout utilisateur ayant reçu l'accès est toujours en mesure d'interroger la vue matérialisée. Toutefois, le comportement suivant se produit :

  • Le propriétaire de la vue matérialisée ou d’autres personnes qui ont perdu l’accès à une vue matérialisée ne peuvent 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 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 MANAGE d’autorisations sur une vue matérialisée définie dans Databricks SQL peut définir un nouveau propriétaire via l’Explorateur de catalogues. Le nouveau propriétaire peut être lui-même ou un principal de service sur lequel il a le rôle d’utilisateur du principal de service .

  1. À partir de votre espace de travail Azure Databricks, cliquez sur l’icône Données.Catalogue 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, puis cliquez sur l’Icône crayon pour modifier.

    Note

    Si vous recevez un message qui vous indique de mettre à jour le propriétaire en modifiant les paramètres d’identification en tant qu’utilisateur dans les paramètres du pipeline, la vue matérialisée est définie dans les pipelines déclaratifs Spark Lakeflow, et non dans Databricks SQL. Le message inclut un lien vers les paramètres du pipeline, où vous pouvez modifier l’exécution en tant qu’utilisateur .

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

    Les propriétaires ont automatiquement les privilèges MANAGE et SELECT sur les vues matérialisées qu'ils possèdent. Si vous définissez une entité de service comme propriétaire d’une vue matérialisée que vous possédez et que vous n’avez pas explicitement SELECT ou MANAGE de privilèges 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 Accorder MANAGE et Accorder SELECT des privilèges pour ceux sur Sauvegarder.

  5. 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 à l’aide de l’identité du nouveau propriétaire.

Quand le propriétaire perd ses privilèges sur les tables sources

Si vous changez le propriétaire et si le nouveau propriétaire n’a pas accès aux tables sources (ou si les privilèges sur les tables sources sous-jacentes sont révoqués), les utilisateurs peuvent toujours interroger la vue matérialisée. Toutefois:

  • Ils ne peuvent pas REFRESH la vue matérialisée.
  • L’actualisation planifiée suivante 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 vue matérialisée existante d’être lue.

Configurer 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. Par défaut, les pipelines utilisent l'environnement d'exécution dans le canal current. Consultez les notes de publication des pipelines déclaratifs Spark Lakeflow et le processus de mise à niveau pour en savoir plus sur le processus de publication.

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 d’aperçu 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 sales
TBLPROPERTIES ('pipelines.channel' = 'preview')
  AS ...

Pour modifier le canal après la création, utilisez l’instruction ALTER TABLE :

ALTER TABLE <table-name> SET TBLPROPERTIES ('pipelines.channel' = 'preview');