Wie kann ich die Amazon S3-Quelldatei für eine Zeile in einer Athena-Tabelle sehen?
Ich möchte, dass die Ergebnisse meiner Amazon Athena-Abfrage die Speicherorte der Amazon Simple Storage Service (Amazon S3)-Quelldateien für jede Zeile in den Ergebnissen zurückgeben.
Kurzbeschreibung
Du kannst Athena-Abfragen schreiben, die die Pfade der Quelldateien für die von deiner Abfrage zurückgegebenen Daten zurückgeben.
- Um die Amazon S3-Datei zu finden, die Daten enthält, die von einer bestimmten Zeile in einer Athena-Tabelle zurückgegeben werden, führe eine SELECT $path-Abfrage aus.
- Um die Athena-Tabellenzeilen zu finden, die einer bestimmten Amazon S3-Datei zugeordnet sind, führe eine SELECT-Abfrage mit der WHERE $path-Bedingung aus.
Lösung
Voraussetzungen: Bevor du die Abfragen in diesem Artikel ausführst, musst du über Folgendes verfügen:
- Ein Athena-Tisch. Wenn du keine Tabelle hast, führe eine CREATE TABLE-Anweisung aus.
- Ein Benutzer oder eine Rolle von AWS Identity and Access Management (IAM), der über Berechtigungen zum Ausführen von Athena-Abfragen verfügt.
S3-Datei suchen, die einer Zeile aus deiner Athena-Tabelle zugeordnet ist
Um den Pfad der S3-Quelldatei für eine Zeile aus deiner Athena-Tabelle zu finden, führe Abfragen aus, die den folgenden Beispielen ähneln:
-
Führe eine SELECT-Abfrage für deine Tabelle aus, um die gewünschten Daten zurückzugeben:
SELECT * FROM "my_database"."my_table" WHERE year=2019; -
Führe eine Abfrage ähnlich der folgenden aus, um die Amazon S3-Quelldatei für die Daten zu finden:
SELECT "$path" FROM "my_database"."my_table" WHERE year=2019;
Die vorherige Abfrage gibt den Amazon S3-Pfad für die Daten zurück:
s3://awsexamplebucket/datasets_mytable/year=2019/data_file1.json
Athena-Tabellenzeilen suchen, die aus einer bestimmten S3-Datei stammen
Gehe wie folgt vor, um alle Zeilen aus deiner Athena-Tabelle zu finden, die eine bestimmte S3-Quelldatei haben:
-
Bestätige den Namen und Speicherort des Amazon S3-Objekts, für das du Zeilen abrufen möchtest. Wenn du den Objektnamen und den Speicherort nicht kennst, führe den Befehl ls aus, um Objekte unter einem bestimmten S3-Bucket oder -Präfix aufzulisten. Ersetze im folgenden Beispiel s3://awsexamplebucket/my_table/my_partition/ durch deinen Partitionspfad.
aws s3 ls s3://awsexamplebucket/my_table/my_partition/ -
Führe in Athena eine SELECT-Abfrage für deine Tabelle aus, um Daten zurückzugeben, die mit der Amazon S3-Datei verknüpft sind:
SELECT *, "$path" FROM "my_database"."my_table" WHERE regexp_like("$path", 's3://awsexamplebucket/my_table/my_partition/file-01.csv')
Die vorherige Abfrage gibt Daten zurück, die aus dem Amazon S3-Pfad stammen, den du angegeben hast:
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'
Athena-Abfragen unterstützen Platzhalterfunktionen mit der Funktion regexp_like. Um beispielsweise Daten zurückzugeben, die aus allen Quelldateien stammen, die eine gemeinsame Zeichenfolge in ihrem Pfad haben, führe eine Abfrage wie diese aus:
SELECT *, "$path" FROM "my_database"."my_table" WHERE regexp_like("$path", 'file-1')
Diese Abfrage gibt alle Zeilen mit Dateipfadnamen zurück, die file-1 enthalten:
id name year $path 13 Mia 2009 's3://awsexamplebucket/my_table/my_partition/file-10.csv' 14 Mary 2010 's3://awsexamplebucket/my_table/my_partition/file-10.csv' 15 Max 2011 's3://awsexamplebucket/my_table/my_partition/file-11.csv' 16 Merriam 2012 's3://awsexamplebucket/my_table/my_partition/file-12.csv'
Ähnliche Informationen
- Themen
- Analytics
- Tags
- Amazon Athena
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 10 Monaten
AWS OFFICIALAktualisiert vor einem Jahr