Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Schritt 2: Erstellen einer Tabelle

Fokusmodus
Schritt 2: Erstellen einer Tabelle - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Nachdem Sie nun eine Datenbank haben, können Sie eine Athena-Tabelle dafür erstellen. Die Tabelle, die Sie erstellen, basiert auf CloudFront Amazon-Beispielprotokolldaten an dem Standorts3://athena-examples-myregion/cloudfront/plaintext/, an dem myregion sich Ihre aktuellen Daten befinden AWS-Region.

Die Beispielprotokolldaten liegen im Format mit tabulatorgetrennten Werten (TSV) vor, was bedeutet, dass ein Tabulatorzeichen als Trennzeichen zur Trennung der Felder verwendet wird. Die Daten sollten wie das folgende Beispiel aussehen. Zur besseren Lesbarkeit wurden die Tabulatoren im Auszug in Leerzeichen umgewandelt und das letzte Feld gekürzt.

2014-07-05 20:00:09 DFW3 4260 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-1.jpeg 200 - Mozilla/5.0[...] 2014-07-05 20:00:09 DFW3 4252 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-2.jpeg 200 - Mozilla/5.0[...] 2014-07-05 20:00:10 AMS1 4261 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-3.jpeg 200 - Mozilla/5.0[...]

Damit Athena diese Daten lesen kann, könnten Sie eine einfache CREATE EXTERNAL TABLE Anweisung wie die folgende erstellen. Die Anweisung, mit der die Tabelle erstellt wird, definiert Spalten, die den Daten zugeordnet werden, legt fest, wie die Daten getrennt werden, und gibt den Amazon-S3-Speicherort an, an dem die Beispieldaten enthalten sind. Beachten Sie, dass Athena erwartet, alle Dateien in einem Ordner zu scannen, weshalb die LOCATION Klausel einen Amazon S3 S3-Ordnerspeicherort und keine bestimmte Datei angibt.

Verwenden Sie dieses Beispiel noch nicht, da es eine wichtige Einschränkung hat, die in Kürze erläutert wird.

CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs ( `Date` DATE, Time STRING, Location STRING, Bytes INT, RequestIP STRING, Method STRING, Host STRING, Uri STRING, Status INT, Referrer STRING, ClientInfo STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' LOCATION 's3://athena-examples-my-region/cloudfront/plaintext/';

Im Beispiel wird eine Tabelle mit dem Namen cloudfront_logs erstellt und für jedes Feld ein Name und ein Datentyp angegeben. Diese Felder werden zu den Spalten in der Tabelle. Da es date sich um ein reserviertes Wort handelt, wird es mit Backtick-Zeichen (`) maskiert. ROW FORMAT DELIMITEDbedeutet, dass Athena eine Standardbibliothek verwendet, die aufgerufen wird LazySimpleSerDe, um die eigentliche Arbeit des Parsens der Daten zu erledigen. Das Beispiel gibt auch an, dass die Felder durch Tabulatoren getrennt sind (FIELDS TERMINATED BY '\t') und dass jeder Datensatz in der Datei mit einem Zeilenumbruchzeichen (LINES TERMINATED BY '\n) endet. Schließlich gibt die LOCATION-Klausel den Pfad in Amazon S3 an, in dem sich die tatsächlich zu lesenden Daten befinden.

Wenn Sie über eigene Tabulatoren oder durch Kommas getrennte Daten verfügen, können Sie eine CREATE TABLE Anweisung wie das gerade vorgestellte Beispiel verwenden, sofern Ihre Felder keine verschachtelten Informationen enthalten. Wenn Sie jedoch eine solche Spalte haben, die verschachtelte Informationen enthältClientInfo, die ein anderes Trennzeichen verwenden, ist ein anderer Ansatz erforderlich.

Extrahieren von Daten aus dem Feld ClientInfo

Wenn wir uns die Beispieldaten ansehen, sehen Sie hier ein vollständiges Beispiel für das endgültige FeldClientInfo:

Mozilla/5.0%20(Android;%20U;%20Windows%20NT%205.1;%20en-US;%20rv:1.9.0.9)%20Gecko/2009040821%20IE/3.0.9

Wie Sie sehen können, ist dieses Feld mehrwertig. Da in der gerade vorgestellten CREATE TABLE Beispielanweisung Tabulatoren als Feldtrennzeichen angegeben sind, können die einzelnen Komponenten innerhalb des ClientInfo Felds nicht in separate Spalten aufgeteilt werden. Daher ist eine neue CREATE TABLE Anweisung erforderlich.

Um Spalten aus den Werten innerhalb des ClientInfo Felds zu erstellen, können Sie einen regulären Ausdruck (Regex) verwenden, der Regex-Gruppen enthält. Die von Ihnen angegebenen Regex-Gruppen werden zu separaten Tabellenspalten. Um eine Regex in Ihrer CREATE TABLE-Anweisung zu verwenden, verwenden Sie eine Syntax wie die folgende. Diese Syntax weist Athena an, die Regex SerDe-Bibliothek und den von Ihnen angegebenen regulären Ausdruck zu verwenden.

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ("input.regex" = "regular_expression")

Reguläre Ausdrücke können nützlich sein, um Tabellen aus komplexen CSV TSV Daten zu erstellen, können jedoch schwierig zu schreiben und zu verwalten sein. Zum Glück gibt es andere Bibliotheken, die Sie für Formate wie JSON Parquet und verwenden könnenORC. Weitere Informationen finden Sie unter Wählen Sie eine SerDe für Ihre Daten.

Jetzt können Sie die Tabelle im Athena-Abfrage-Editor erstellen. Die CREATE TABLE-Anweisung und Regex werden für Sie bereitgestellt.

So erstellen Sie eine Tabelle in Athena
  1. Stellen Sie im Navigationsbereich für Database (Datenbank) sicher, dass mydatabase ausgewählt ist.

  2. Um mehr Platz im Abfrageeditor zu schaffen, können Sie das Pfeilsymbol auswählen, um den Navigationsbereich zu reduzieren.

    Wählen Sie den Pfeil aus, um den Navigationsbereich auszublenden.
  3. Um eine Registerkarte für eine neue Abfrage zu erstellen, wählen Sie im Abfrageeditor das Pluszeichen (+). Sie können bis zu zehn Abfrageregisterkarten gleichzeitig öffnen.

    Wählen Sie das Plus-Symbol aus, um eine neue Abfrage zu erstellen.
  4. Um eine oder mehrere Abfrage-Registerkarten zu schließen, wählen Sie den Pfeil neben dem Pluszeichen aus. Um alle Registerkarten gleichzeitig zu schließen, wählen Sie den Pfeil und wählen Sie dann Close all tabs (Schließen aller Tabs) aus.

    Wählen Sie das Pfeilsymbol, um eine oder mehrere Abfrage-Registerkarten zu schließen.
  5. Geben Sie im Abfragebereich die folgende CREATE EXTERNAL TABLE-Anweisung ein. Die Regex bricht die Informationen zu Betriebssystem, Browser und Browserversion aus dem ClientInfo-Feld in den Protokolldaten aus.

    Anmerkung

    Die im folgenden Beispiel verwendete Regex ist so konzipiert, dass sie mit den öffentlich verfügbaren CloudFront Beispielprotokolldaten am athena-examples Amazon S3 S3-Speicherort funktioniert und dient nur der Veranschaulichung. Weitere reguläre Ausdrücke up-to-date, die sowohl Standard- als auch CloudFront Echtzeit-Protokolldateien abfragen, finden Sie unter. CloudFront Amazon-Logs abfragen

    CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs ( `Date` DATE, Time STRING, Location STRING, Bytes INT, RequestIP STRING, Method STRING, Host STRING, Uri STRING, Status INT, Referrer STRING, os STRING, Browser STRING, BrowserVersion STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$" ) LOCATION 's3://athena-examples-myregion/cloudfront/plaintext/';
  6. Ersetzen Sie die LOCATION Anweisung myregion durch AWS-Region das, was Sie gerade verwenden (z. B.us-west-1).

  7. Wählen Sie Ausführen aus.

    Die Tabelle „cloudfront_logs“ wird erstellt und unter der Liste Tables (Tabellen) für die mydatabase-Datenbank angezeigt.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.