Comment puis-je voir le fichier source Amazon S3 d'une ligne de table Athena ?

Date de la dernière mise à jour : 06/11/2019

J'interroge une table dans Amazon Athena. Comment puis-je savoir quel fichier Amazon Simple Storage Service (Amazon S3) est le fichier source pour chaque ligne de la sortie, ou quelles lignes correspondent à un fichier spécifique ?

Brève description

  • Exécutez une requête « SELECT $path » (SÉLECTIONNER un chemin) pour savoir quel fichier Amazon S3 contient les données renvoyées par une ligne spécifique d'une table Athena.
  • Pour savoir quelles lignes de table Athena sont associées à un fichier Amazon S3 spécifique, exécutez une requête « SELECT » (SÉLECTIONNER) avec la condition « WHERE $path » (EMPLACEMENT de chemin).

Ces requêtes sont doublement utiles : elles aident à examiner les données inattendues d'une part et, d'autre part, à créer des requêtes qui nécessitent des informations sur les données sources.

Résolution

Avant d'exécuter les requêtes suivantes, assurez-vous d'avoir :

  • Une table Athena. Si vous n'avez pas de table, exécutez une instruction « CREATE TABLE » (CRÉER UNE TABLE).
  • Un utilisateur ou un rôle AWS Identity and Access Management (IAM) qui dispose des autorisations nécessaires pour exécuter des requêtes Athena.

Pour rechercher le fichier S3 associé à une ligne dans une table Athena :

1.    Exécutez une requête « SELECT » (SÉLECTIONNER) sur votre table pour renvoyer les données souhaitées.

SELECT * FROM "my_database"."my_table" WHERE year=2019;

2.    Pour trouver le fichier source Amazon S3 pour les données, exécutez une requête similaire à ce qui suit :

SELECT "$path" FROM "my_database"."my_table" WHERE year=2019;

La requête renvoie le chemin Amazon S3 pour les données :

s3://awsexamplebucket/datasets_mytable/year=2019/data_file1.json

Pour renvoyer des lignes de table Athena provenant d'un fichier Amazon S3 spécifique :

1.    Confirmez le nom et l'emplacement de l'objet Amazon S3 pour lequel vous souhaitez récupérer des lignes. Si vous ne connaissez pas le nom et l'emplacement de l'objet, exécutez la commande « ls » pour répertorier les objets sous un compartiment S3 ou un préfixe spécifique. Dans l'exemple suivant, remplacez s3://awsexamplebucket/my_table/my_partition/ par votre chemin de partition.

aws s3 ls s3://awsexamplebucket/my_table/my_partition/

2.    Dans Athena, exécutez une requête « SELECT » (SÉLECTIONNER) sur votre table pour renvoyer les données associées au fichier Amazon S3 :

SELECT *,"$path" FROM "my_database"."my_table" WHERE "$path" LIKE 's3://awsexamplebucket/my_table/my_partition/file-01.csv'

La requête renvoie les données qui correspondent au chemin d'Amazon S3 :

id    name    year    $path
3     John    1999    's3://awsexamplebucket/my_table/my_partition/file-01.csv'
4     Jane    2000    's3://awsexamplebucket/my_table/my_partition/file-01.csv'

Cette requête prend également en charge certaines fonctionnalités génériques. Par exemple, pour renvoyer toutes les données qui contiennent une partie d'un nom de fichier, exécutez une requête comme celle-ci :

SELECT *,"$path" FROM "my_database"."my_table" WHERE "$path" LIKE '%-02%'

Cette requête renvoie toutes les lignes avec des noms de fichier qui contiennent -02:

id    name    year    $path
13    Mia     2009    's3://awsexamplebucket/my_table/my_partition/file-02.csv'
14    Mary    2010    's3://awsexamplebucket/my_table/my_partition/file-02.csv'
15    Max     2011    's3://awsexamplebucket/my_table/my_partition/file-02.csv'
16    Merriam 2012    's3://awsexamplebucket/my_table/my_partition/file-02.csv'

Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?