Warum ist das TIMESTAMP-Ergebnis leer, wenn ich eine Tabelle in Amazon Athena abfrage?

Lesedauer: 2 Minute
0

Wenn ich eine Spalte mit TIMESTAMP-Daten in meiner Amazon Athena-Tabelle abfrage, erhalte ich leere Ergebnisse oder die Abfrage schlägt fehl. Die Daten sind in der Eingabedatei vorhanden.

Kurzbeschreibung

Die TIMESTAMP-Daten haben möglicherweise ein falsches Format. Athena benötigt das Java TIMESTAMP-Format:

YYYY-MM-DD HH:MM:SS.fffffffff

Um TIMESTAMP-Daten in das richtige Format zu ändern:

  1. Definieren Sie die Spalte als STRING.
  2. Verwenden Sie die Datums- und Uhrzeitfunktionen von Presto, um die Spalte in Ihrer Abfrage als DATUM oder TIMESTAMP zu lesen.

Behebung

Definieren Sie die Spalte als STRING

Führen Sie einen Befehl ähnlich dem folgenden aus:

CREATE EXTERNAL TABLE 'test' ('ts' STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
LOCATION 's3://doc-example-bucket/path-to-data/'

Verwenden Sie die Datums- und Uhrzeitfunktionen von Presto, um die Spalte in Ihrer Abfrage als DATUM oder TIMESTAMP zu lesen

Wenn Ihre Eingabedaten das folgende Format haben:

20200921T015005
20200923T095605

Verwenden Sie dann die Funktion date_parse, wie im folgenden Beispiel gezeigt:

SELECT date_parse(ts,'%Y%m%dT%h%i%s') FROM timestamptestcsv3

**Hinweis:**Das Format in der Funktion date_parse(string, format) muss das TIMESTAMP-Format sein, das in Ihren Daten verwendet wird.

Wenn Ihre Eingabedaten im ISO 8601-Format vorliegen, wie im Folgenden:

2020-11-14T02:34:48Z

Verwenden Sie dann die Funktion from_iso8601_timestamp(), um das Feld ts als TIMESTAMP zu lesen. Beispiel:

SELECT from_iso8601_timestamp(ts) FROM timestamptestcsv3

Verwandte Informationen

Datentypen in Amazon Athena

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren