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:
- Definieren Sie die Spalte als STRING.
- 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