

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation des vues de catalogue de données dans Athena
<a name="views-glue"></a>

Vous pouvez créer de vues de catalogue de données dans Amazon Athena à l’aide d’une instruction `CREATE VIEW` spéciale et les interroger avec la syntaxe SQL `SELECT` classique. Les vues du catalogue de données sont également appelées vues *multi-dialectes*, ou MDVs.

## Création d’une vue de catalogue de données
<a name="views-glue-creating-a-data-catalog-view"></a>

Pour créer une vue de catalogue de données dans Athena, utilisez la syntaxe suivante.

```
CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW {{view_name}} 
SECURITY DEFINER 
[ SHOW VIEW JSON ]
AS {{athena-sql-statement}}
```

**Note**  
L’option `SHOW VIEW JSON` s’applique uniquement aux vues de catalogue de données (et non aux vues Athena). `SHOW VIEW JSON` permet d’effectuer un test à blanc qui valide l’entrée et, si la validation aboutit, renvoie le JSON de l’objet de table AWS Glue qui représentera la vue. La vue n’est pas réellement créée. Si l’option `SHOW VIEW JSON` n’est pas spécifiée, des validations sont effectuées et la vue est créée selon la procédure habituelle dans le catalogue de données.

L’exemple suivant montre comment un utilisateur ayant le rôle `Definer` crée la vue de catalogue de données `orders_by_date`. L’exemple suppose que le rôle `Definer` dispose d’autorisations `SELECT` complètes sur la table `orders` de la base de données `default`.

```
CREATE PROTECTED MULTI DIALECT VIEW orders_by_date 
SECURITY DEFINER 
AS 
SELECT orderdate, sum(totalprice) AS price 
FROM orders 
WHERE order_city = 'SEATTLE' 
GROUP BY orderdate
```

Pour plus d’informations sur la syntaxe, consultez [CREATE PROTECTED MULTI DIALECT VIEW](create-view.md#create-protected-multi-dialect-view).

## Interrogation d’une vue de catalogue de données
<a name="views-glue-querying-a-data-catalog-view"></a>

Une fois la vue de catalogue de données créée, l’administrateur `Lake Formation` peut accorder aux principaux `Invoker` des autorisations `SELECT` sur cette vue. Les principaux `Invoker` peuvent ensuite interroger l’affichage sans avoir accès aux tables de base sous-jacentes référencées par l’affichage. Voici un exemple de requête `Invoker`.

```
SELECT * from orders_by_date where price > 5000
```

## Considérations et restrictions
<a name="views-glue-limitations"></a>

La plupart des restrictions suivantes concernant les vues de catalogue de données sont propres à Athena. Pour connaître les restrictions relatives aux vues de catalogue de données qui s’appliquent également à d’autres services, consultez la documentation Lake Formation.
+ Les vues de catalogue de données ne peuvent pas référencer d’autres vues, des liens de ressources de base de données ou des liens de ressources de table.
+ Vous pouvez référencer jusqu’à 10 tables dans la définition de l’affichage.
+ L’autorisation de lac de données `IAMAllowedPrincipals` ne doit pas être accordée aux tables dans Lake Formation. Le cas échéant, l'erreur Multi Dialect views ne peut référencer que des tables sans les autorisations IAMAllowed Principaux se produit.
+ L’emplacement Amazon S3 de la table doit être enregistré en tant qu’emplacement de lac de données Lake Formation. Le non-respect de cette condition génère l’erreur Multi Dialect views may only reference Lake Formation managed tables. Pour plus d’informations sur l’enregistrement des emplacements Amazon S3 dans Lake Formation[, consultez ](https://docs.aws.amazon.com/lake-formation/latest/dg/register-location.html)Registering an Amazon S3 location* dans le Guide de développement d’AWS Lake Formation *.
+ Les appels [SearchTables](https://docs.aws.amazon.com/glue/latest/webapi/API_SearchTables.html)d'API AWS Glue [GetTables](https://docs.aws.amazon.com/glue/latest/webapi/API_GetTables.html)et ne mettent pas à jour le `IsRegisteredWithLakeFormation` paramètre. Pour afficher la valeur correcte du paramètre, utilisez l' AWS Glue [GetTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetTable.html)API. Pour plus d'informations, consultez [GetTables et SearchTables APIs ne mettez pas à jour la valeur du IsRegisteredWithLakeFormation paramètre](https://docs.aws.amazon.com/lake-formation/latest/dg/limitations.html#issue-GetTables-value) dans le *Guide du AWS Lake Formation développeur*.
+ Le principal `DEFINER` ne peut être qu’un rôle IAM.
+ Le rôle `DEFINER` doit disposer d’autorisations (octroyables) `SELECT` complètes sur les tables sous-jacentes.
+ Les affichages `UNPROTECTED` du Catalogue de données ne sont pas pris en charge.
+ Les fonctions définies par l'utilisateur (UDFs) ne sont pas prises en charge dans la définition de la vue.
+ Les sources de données fédérées Athena ne peuvent pas être utilisées dans les affichages du Catalogue de données.
+ Les affichages du Catalogue de données ne sont pas pris en charge pour les métastores Hive externes.
+ Athena affiche un message d'erreur lorsqu'il détecte des vues périmées. Une vue obsolète est signalée lorsque l'une des situations suivantes se produit :
  + La vue fait référence à des tables ou à des bases de données qui n'existent pas.
  + Une modification de schéma ou de métadonnées est effectuée dans une table référencée. 
  + Une table référencée est supprimée et recréée avec un autre schéma ou une autre configuration.

## Permissions
<a name="views-glue-permissions"></a>

Les affichages du Catalogue de données nécessitent trois rôles : `Lake Formation Admin`, `Definer` et `Invoker`. 
+ **`Lake Formation Admin`** : peut configurer toutes les autorisations de Lake Formation.
+ **`Definer`** : crée l’affichage du Catalogue de données. Le rôle `Definer` doit disposer d’autorisations `SELECT` octroyables complètes pouvant être accordées sur toutes les tables sous-jacentes auxquelles la définition de l’affichage fait référence.
+ **`Invoker`** : peut interroger l’affichage du Catalogue de données ou vérifier ses métadonnées. Vous pouvez utiliser la fonction DML `invoker_principal()` pour afficher l’appelant d’une requête. Pour de plus amples informations, veuillez consulter [invoker\_principal()](functions-env3.md#functions-env3-invoker-principal).

Les relations de confiance liées au `Definer` rôle doivent permettre aux responsables du service AWS Glue et à Lake Formation d'`sts:AssumeRole`agir. Pour plus d’informations, consultez [Prerequisites for creating views](https://docs.aws.amazon.com/lake-formation/latest/dg/working-with-views.html#views-prereqs) dans le *Guide de développement d’AWS Lake Formation *.

Les autorisations IAM pour accéder à Athena sont également requises. Pour de plus amples informations, veuillez consulter [AWS politiques gérées pour Amazon Athena](security-iam-awsmanpol.md).