Utilisation des vues - Amazon Athena

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

Une vue dans Amazon Athena est une table logique et non physique. La requête qui définit une vue est exécutée chaque fois qu'elle est référencée dans une requête.

Vous pouvez créer une vue à partir d'une requête SELECT, puis référencer cette vue dans de futures requêtes. Pour plus d’informations, consultez CREATE VIEW.

Quand l'utiliser les vues ?

Vous avez la possibilité de créer des vues dans les cas suivants :

  • Interrogation d'un sous-ensemble de données. Par exemple, vous pouvez créer une vue avec un sous-ensemble de colonnes à partir de la table d'origine pour simplifier l'interrogation des données.

  • Combinaison de plusieurs tables dans une requête. Lorsque vous avez plusieurs tables et que vous souhaitez les combiner avec UNION ALL, vous pouvez créer une vue avec cette expression pour simplifier les requêtes sur les tables combinées.

  • Masquage de la complexité des requêtes de base existantes et simplification des requêtes exécutées par les utilisateurs. Les requêtes de base incluent souvent des jointures entre les tables, les expressions dans la liste de colonnes, et d'autres syntaxes SQL, ce qui complique leur compréhension et leur débogage. Vous pouvez créer une vue qui masque la complexité et simplifie les requêtes.

  • Essai avec des techniques d'optimisation et création de requêtes optimisées. Par exemple, si vous trouvez une combinaison de conditions WHERE, l'ordre JOIN, ou d'autres expressions qui illustrent les meilleures performances, vous pouvez créer une vue avec ces clauses et expressions. Les applications peuvent ensuite créer des requêtes relativement simples pour cette vue. Si, par la suite, vous trouvez un meilleur moyen d'optimiser la requête d'origine, lorsque vous recréez la vue, toutes les applications tirent immédiatement parti de la requête de base optimisée.

  • Masquage de la table et des noms de colonnes sous-jacents et minimisation des problèmes de maintenance si ces noms changent. Dans ce cas, vous recréez la vue à l'aide des nouveaux noms. Toutes les requêtes qui utilisent la vue et non les tables sous-jacentes continuent de s'exécuter sans modifications.

Actions prises en charge pour les vues dans Athena

Athena prend en charge les actions suivantes pour les vues. Vous pouvez exécuter ces commandes dans l'éditeur de requête.

Instruction Description
CREATE VIEW

Crée une nouvelle vue à partir d'une requête SELECT spécifiée. Pour plus d’informations, consultez Création de vues.

La clause OR REPLACE en option vous permet de mettre à jour la vue existante en la remplaçant.

DESCRIBE VIEW

Affiche la liste des colonnes pour la vue nommée. Vous pouvez ainsi examiner les attributs d'une vue complexe.

DROP VIEW

Supprime une vue existante. La clause IF EXISTS en option supprime l'erreur si la vue n'existe pas.

SHOW CREATE VIEW

Affiche l'instruction SQL qui crée la vue spécifiée.

SHOW VIEWS

Répertorie les vues dans la base de données spécifiée, ou dans la base de données actuelle, si vous ne spécifiez pas le nom de base de données. Utilisez la clause LIKE en option avec une expression régulière pour restreindre la liste des noms de vue. Vous pouvez également voir la liste des vues dans le volet gauche de la console.

SHOW COLUMNS

Affiche les colonnes du schéma d'une vue.

Considérations relatives aux vues

Les considérations suivantes s'appliquent à la création et à l'utilisation des vues dans Athena :

  • Dans Athena, vous pouvez prévisualiser et utiliser les vues créées dans la console Athena, dans le AWS Glue Data Catalog, si vous avez migré pour l'utiliser, ou avec Presto exécuté sur le cluster Amazon EMR connecté au même catalogue. Vous ne pouvez pas prévisualiser ou ajouter à Athena des vues qui ont été créées autrement.

  • Si vous créez des vues via le catalogue de AWS Glue données, vous devez inclure le PartitionKeys paramètre et définir sa valeur sur une liste vide, comme suit : "PartitionKeys":[] Sinon, votre requête de vue échouera dans Athena. L'exemple suivant montre une vue créée à partir du catalogue de données avec "PartitionKeys":[] :

    aws glue create-table --database-name mydb --table-input '{ "Name":"test", "TableType": "EXTERNAL_TABLE", "Owner": "hadoop", "StorageDescriptor":{ "Columns":[{ "Name":"a","Type":"string"},{"Name":"b","Type":"string"}], "Location":"s3://DOC-EXAMPLE-BUCKET/Oct2018/25Oct2018/", "InputFormat":"org.apache.hadoop.mapred.TextInputFormat", "OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat", "SerdeInfo":{"SerializationLibrary":"org.apache.hadoop.hive.serde2.OpenCSVSerde", "Parameters":{"separatorChar": "|", "serialization.format": "1"}}},"PartitionKeys":[]}'
  • Si vous avez créé des vues Athena dans le catalogue de données, ce dernier traite les vues comme des tables. Vous pouvez utiliser le contrôle précis de l'accès au niveau des tables dans le catalogue de données pour limiter l'accès à ces vues.

  • Athena vous empêche d'exécuter des vues récursives et affiche un message d'erreur dans de tels cas. Une vue récursive est une requête de vue qui se référence elle-même.

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

  • Vous pouvez créer et exécuter des vues imbriquées dès lors que la requête derrière la vue imbriquée est valide et que les tables et les bases de données existent.

Limitations pour les vues

  • Les noms des vues Athena ne peuvent pas contenir de caractères spéciaux, autres que le trait de soulignement (_). Pour plus d’informations, consultez Noms des tables, des bases de données et des colonnes.

  • Évitez d'utiliser des mots-clés réservés pour nommer les vues. Si vous utilisez des mots-clés réservés, utilisez des guillemets doubles pour entourer mots-clés réservés dans vos requêtes sur les vues. Consultez Mots-clés réservés.

  • Vous ne pouvez pas utiliser de vues créées dans Athena avec des métastores Hive externes ou des fonctions définies par l'utilisateur. Pour plus d'informations sur l'utilisation des vues créées en externe dans Hive, consultez Utilisation des vues Hive.

  • Vous ne pouvez pas utiliser de vues avec des fonctions géospatiales.

  • Vous ne pouvez pas utiliser des vues pour gérer le contrôle d'accès aux données dans Simple Storage Service (Amazon S3). Pour interroger une vue, vous avez besoin d'autorisations pour accéder aux données stockées dans Simple Storage Service (Amazon S3). Pour plus d’informations, consultez Accès à Amazon S3.

  • Bien que l'interrogation de vues entre comptes soit prise en charge à la fois dans les versions 2 et 3 du moteur Athena, vous ne pouvez pas créer de vue incluant un compte croisé AWS Glue Data Catalog. Pour plus d'informations sur l'accès inter-comptes aux catalogues de données, consultez Accès entre comptes aux catalogues de données AWS Glue.

  • Les colonnes de métadonnées masquées Hive ou Iceberg $bucket, $file_modified_time, $file_size et $partition ne sont pas prises en charge pour les vues dans Athena. Pour plus d'informations sur l'utilisation de la colonne de métadonnées $path dans Athena, consultez Obtention des emplacements de fichiers pour les données source dans Simple Storage Service (Amazon S3) .

Gestion des vues dans la console

Dans la console Athena, vous pouvez :

  • Localiser toutes les vues dans le volet de gauche, où les tables sont répertoriées.

  • Filtrer les vues.

  • Prévisualiser une vue, afficher ses propriétés, la modifier ou la supprimer.

Affichage des actions d'une vue

Une vue s'affiche dans la console uniquement si vous l'avez déjà créée.

  1. Dans la console Athena, choisissez Views (Vues), puis choisissez une vue pour la développer et afficher les colonnes de la vue.

  2. Choisissez les trois points verticaux à côté de la vue pour afficher la liste des actions de la vue.

    Le menu d'actions d'une vue.
  3. Choisissez des actions pour prévisualiser la vue, insérer le nom de la vue dans l'éditeur de requêtes, supprimer la vue, afficher les propriétés de la vue ou afficher et modifier la vue dans l'éditeur de requêtes.

Création de vues

Vous pouvez créer une vue dans la console Athena à l'aide d'un modèle ou en exécutant une requête existante.

Création d'une vue en utilisant un modèle
  1. Dans la console Athena, près de Tables and views (Tables et vues), choisissez Create (Créer) puis Create view (Créer une vue).

    Création d'une vue.

    Cette action place un modèle de vue modifiable dans l'éditeur de requêtes.

  2. Modifiez le modèle de vue en fonction de vos besoins. Lorsque vous saisissez un nom pour la vue dans l'instruction, n'oubliez pas que les noms de vue ne peuvent pas contenir de caractères spéciaux autres que le trait de soulignement (_). Consultez Noms des tables, des bases de données et des colonnes. Évitez d'utiliser Mots-clés réservés pour nommer les vues.

    Pour plus d'informations sur la création de vues, consultez CREATE VIEW et Exemples de vues.

  3. Choisissez Run (Exécuter) pour créer la vue. La vue apparaît dans la liste des vues de la console Athena.

Création d'une vue à partir d'une requête existante
  1. Utilisez l'éditeur de requêtes Athena pour exécuter une requête existante.

  2. Dans la fenêtre de l'éditeur de requêtes, choisissez Create (Créer), puis View from query (Afficher à partir d'une requête).

    Choisissez Create (Créer), View from query (Afficher à partir d'une requête).
  3. Dans la boîte de dialogue Create View (Créer une vue), saisissez un nom de vue, puis choisissez Create (Créer). Les noms de vue ne peuvent pas contenir de caractères spéciaux autres que le trait de soulignement (_). Consultez Noms des tables, des bases de données et des colonnes. Évitez d'utiliser Mots-clés réservés pour nommer les vues.

    Athena ajoute la vue à la liste des vues de la console et affiche l'instruction CREATE VIEW pour la vue dans l'éditeur de requêtes.

Remarques
  • Si vous supprimez une table sur laquelle une table est basée, puis tentez d'exécuter la vue, Athena affiche un message d'erreur.

  • Vous pouvez créer une vue imbriquée, qui est une vue sur une vue existante. Athena vous empêche d'exécuter une vue récursive qui fait référence à elle-même.

Exemples de vues

Pour afficher la syntaxe de la requête de vue, utilisez SHOW CREATE VIEW.

Exemple 1

Considérez les deux tables suivantes : une table employees avec deux colonnes, id et name, et une table salaries, avec deux colonnes, id et salary.

Dans cet exemple, nous créons une vue nommée name_salary en tant que requête SELECT qui obtient une liste d'ID mappés aux salaires à partir des tables employees et salaries :

CREATE VIEW name_salary AS SELECT employees.name, salaries.salary FROM employees, salaries WHERE employees.id = salaries.id
Exemple 2

Dans l'exemple suivant, nous créons une vue nommée view1 qui vous permet de masquer la syntaxe de requête plus complexe.

Cette vue s'exécute au-dessus de deux tables, table1 et table2, où chaque table est une autre requête SELECT. La vue sélectionne les colonnes de table1 et joint les résultats avec table2. La jointure est basée sur la colonne a qui est présente dans les deux tables.

CREATE VIEW view1 AS WITH table1 AS ( SELECT a, MAX(b) AS the_max FROM x GROUP BY a ), table2 AS ( SELECT a, AVG(d) AS the_avg FROM y GROUP BY a) SELECT table1.a, table1.the_max, table2.the_avg FROM table1 JOIN table2 ON table1.a = table2.a;

Pour obtenir des informations sur l'interrogation des vues fédérées, consultez Interrogation des vues fédérées.