web-dev-qa-db-fra.com

Comment obtenir le nom du fichier d'entrée en tant que colonne dans les tables externes AWS Athena

J'ai des tables externes créées dans AWS Athena pour interroger les données S3, cependant, le chemin d'accès contient plus de 1000 fichiers. J'ai donc besoin que le nom de fichier correspondant de l'enregistrement soit affiché sous forme de colonne dans le tableau.

select file_name , col1 from table where file_name = "test20170516"

En bref, j'ai besoin de connaître l'équivalent INPUT__FILE__NAME (Hive) dans AWS Athena Presto ou tout autre moyen d'y parvenir.

24
Rajeev

Vous pouvez le faire avec la pseudo-colonne $ path.

select "$path" from table
55
jens walter

Si vous n'avez besoin que du nom de fichier, vous pouvez l'extraire avec regeexp_extract().

Pour l'utiliser dans Athena sur le "$path" vous pouvez faire quelque chose comme ceci:

SELECT regexp_extract("$path", '[^/]+$') AS filename from table;

Si vous avez besoin du nom de fichier sans l'extension, vous pouvez faire:

SELECT regexp_extract("$path", '[ \w-]+?(?=\.)') AS filename_without_extension from table;

Voici la documentation sur Presto Regular Expression Functions

15
campeterson