Qu’est-ce qu’une vue ?
Une vue est un objet en lecture seule qui est le résultat d’une requête sur une ou plusieurs tables et vues dans un metastore de l'Unity Catalog. Vous pouvez créer une vue à partir de tables et d’autres vues dans plusieurs schémas ou catalogues.
Cet article décrit les vues que vous pouvez créer dans Azur Databricks et fournit une explication des autorisations et du calcul nécessaires pour les interroger.
Pour plus d’informations sur la création de vues, consultez :
Vues dans le catalogue Unity
Dans le catalogue Unity, les vues se trouvent au troisième niveau de l’espace de noms de trois niveaux (catalog.schema.view
) :
Une vue stocke le texte d’une requête généralement sur une ou plusieurs sources de données ou tables dans le metastore. Dans Azure Databricks, une vue équivaut à un DataFrame Spark conservé en tant qu’objet dans un schéma. Contrairement aux DataFrames, vous pouvez interroger des vues n’importe où dans Azure Databricks, en supposant que vous disposez de l’autorisation de le faire. La création d’une vue ne traite ni n’écrit aucune donnée. Seul le texte de requête est inscrit dans le metastore dans le schéma associé.
Remarque
Les vues peuvent avoir une sémantique d’exécution différente si elles sont basées sur des sources de données autres que des tables Delta. Databricks recommande de toujours définir des vues en référençant des sources de données à l’aide d’un nom de table ou de vue. La définition de vues sur des jeux de données en spécifiant un chemin d’accès ou un URI peut entraîner des exigences de gouvernance des données déroutantes.
Vues matérialisées
Les vues matérialisées calculent et mettent à jour de manière incrémentielle les résultats retournés par la requête de définition.
Vous pouvez inscrire des vues matérialisées dans Unity Catalog à l’aide de Databricks SQL ou les définir dans le cadre d’un pipeline Delta Live Tables. Consultez Utiliser des vues matérialisées dans Databricks SQL et Qu’est-ce que Delta Live Tables ?.
Vues temporaires
Une vue temporaire a une étendue et une persistance limitées et n’est pas inscrite dans un schéma ou un catalogue. La durée de vie d’une vue temporaire diffère selon l’environnement que vous utilisez :
- Dans les notebooks et les travaux, les vues temporaires sont limitées au niveau du notebook ou du script. Ils ne peuvent pas être référencés en dehors du bloc-notes dans lequel ils sont déclarés et n’existent plus lorsque le bloc-notes se détache du cluster.
- Dans Databricks SQL, les vues temporaires sont étendues au niveau de la requête. Plusieurs instructions au sein de la même requête peuvent utiliser la vue temporaire, mais elles ne peuvent pas être référencées dans d’autres requêtes, y compris dans le même tableau de bord.
Vues dynamiques
Les vues dynamiques peuvent être utilisées pour fournir un contrôle d’accès au niveau des lignes et des colonnes, en plus du masquage des données. Consultez Créer une vue dynamique.
Vues dans le metastore Hive (hérité)
Vous pouvez définir des vues Hive héritées sur n’importe quelle source de données et les inscrire dans le metastore Hive hérité. Databricks recommande de migrer toutes les vues Hive héritées vers le catalogue Unity. Voir Vues dans le metastore Hive.
Vue temporaire globale Hive (héritée)
Les vues temporaires globales sont une fonctionnalité Azure Databricks héritée qui vous permet d’inscrire une vue temporaire disponible pour toutes les charges de travail exécutées sur une ressource de calcul. Les vues temporaires globales sont une conservation héritée de Hive et HDFS. Databricks recommande d’utiliser des vues temporaires globales.
Conditions requises pour l’interrogation des vues
Pour lire les vues inscrites dans le catalogue Unity, les autorisations requises dépendent du type de calcul, de la version de Databricks Runtime et du mode d’accès.
Remarque
Pour toutes les vues, les vérifications d’autorisation sont effectuées à la fois sur la vue elle-même et sur les tables et vues sous-jacentes sur lesquelles la vue est basée. Pour les tables et vues sous-jacentes, l'utilisateur dont les autorisations sont vérifiées dépend des ressources de calcul. Pour ce qui suit, Unity Catalog vérifie les autorisations du propriétaire de l’affichage sur les données sous-jacentes :
- Entrepôts de données SQL.
- Calcul partagé.
- Calcul utilisateur unique sur Databricks Runtime 15.4 LTS et versions ultérieures avec un contrôle d’accès affiné activé.
Pour le calcul d'un seul utilisateur sur Databricks Runtime 15.3 et versions inférieures, Unity Catalog vérifie les autorisations du propriétaire de la vue ainsi que celles de l'utilisateur de la vue sur les données sous-jacentes.
Ce comportement est reflété dans les exigences répertoriées ci-dessous. Dans les deux cas, le propriétaire de la vue doit conserver les autorisations sur les données sous-jacentes pour permettre aux utilisateurs d’accéder à la vue.
- Pour toutes les ressources de calcul, vous devez avoir
SELECT
sur la vue elle-même,USE CATALOG
sur son catalogue parent etUSE SCHEMA
sur son schéma parent. Cela s’applique à tous les types de calcul prenant en charge le catalogue Unity, notamment les entrepôts SQL, les clusters en mode d’accès partagé et les clusters en mode d’accès utilisateur unique sur Databricks Runtime 15.4 et versions ultérieures. - Pour les clusters sur Databricks Runtime 15.3 et les versions antérieures qui utilisent le mode d’accès utilisateur unique, vous devez également disposer de
SELECT
dans toutes les tables et vues qui sont référencées par la vue, en plus duUSE CATALOG
dans leurs catalogues parents et deUSE SCHEMA
dans leurs schémas parents.
Remarque
Si vous utilisez un cluster à utilisateur unique sur Databricks Runtime 15.4 LTS ou version ultérieure et que vous souhaitez éviter la nécessité d’avoir SELECT
sur les tables et vues sous-jacentes, vérifiez que votre espace de travail est activé pour le calcul sans serveur.
Le calcul serverless gère le filtrage des données, permettant d’accéder à une vue sans avoir besoin d’autorisations sur ses tables et vues sous-jacentes. N’oubliez pas que vous risquez d’être facturé pour le calcul serverless lorsque vous utilisez le calcul mono-utilisateur pour faire une requête de vues. Pour plus d’informations, consultez Contrôle d’accès affiné sur le calcul mono-utilisateur.