2017-05-16 3 views
6

Ich habe externe Tabellen in AWS Athena erstellt, um S3-Daten abzufragen, aber der Speicherortpfad hat mehr als 1000 Dateien. Daher muss der entsprechende Dateiname des Datensatzes angezeigt werden Spalte in der Tabelle.So erhalten Sie den Namen der Eingabedatei als Spalte in AWS Athena externe Tabellen

wählen file_name, col1 aus der Tabelle, wo file_name = "test20170516"

Kurz gesagt ich brauche INPUT__FILE__NAME (Bienenstock) gleichwertig in AWS Athena Presto oder andere Wege kennen, um das gleiche zu erreichen.

Antwort

13

Sie können dies mit der Pseudospalte $ path tun.

+0

Vielen Dank für die Info.Bitte können Sie mich jeden Link zu diesem Thema wissen, wie ich für eine Weile gesucht und konnte keine finden. – Rajeev

+1

Ich habe es vor einer Weile durch das folgende GitHub Problem gefunden. https://github.com/prestodb/presto/issues/5486 –

+2

Danke nochmal. Gibt es noch andere Pseudospalten, von denen Sie wissen? – Rajeev

5

Wenn Sie nur den Dateinamen benötigen, können Sie ihn mit regeexp_extract() extrahieren.

Um es in Athena auf der "$path" verwenden Sie so etwas wie dies tun können:

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

Wenn Sie den Dateinamen ohne die Erweiterung benötigen, können Sie tun:

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

Hier ist die Dokumentation auf Presto Regular Expression Functions

+0

Ich habe split_part ("$ PATH", "/", 7) verwendet, um den Dateinamen zu erhalten, Ihr ist jedoch generischer.Thanks. – Rajeev

+0

Das ist fantastisch. Vielen Dank! – PubNub

Verwandte Themen