Lorsque j'effectue une requête sur une table dans Amazon Athena, le résultat TIMESTAMP est vide?

Lecture de 2 minute(s)
0

Lorsque j'interroge une colonne de données TIMESTAMP dans ma table Amazon Athena, j'obtiens des résultats vides ou la requête échoue. Les données existent dans le fichier d'entrée.

Brève description

Il est possible que le format des données TIMESTAMP soit incorrect. Athena requiert le format Java pour TIMESTAMP :

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

Afin que le format des données TIMESTAMP soit approprié :

  1. Définissez la colonne en tant que STRING.
  2. Utilisez les fonctions d'heure et de date de Presto afin de lire la colonne en tant que DATE ou TIMESTAMP dans votre requête.

Résolution

Définir la colonne en tant que STRING

Exécutez une commande similaire à la suivante :

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

Utiliser les fonctions d'heure et de date de Presto afin de lire la colonne en tant que DATE ou TIMESTAMP dans votre requête

Si vos données d'entrée sont au format suivant :

20200921T015005
20200923T095605

Ensuite, utilisez la fonction date_parse, comme l'illustre l'exemple suivant :

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

Remarque : le format de la fonction date_parse(string,format) doit être au format TIMESTAMP utilisé dans vos données.

Si vos données d'entrée sont au format ISO 8601, comme suit :

2020-11-14T02:34:48Z

Ensuite, utilisez la fonction from_iso8601_timestamp() afin de lire le champ ts en tant que TIMESTAMP. Exemple :

SELECT from_iso8601_timestamp(ts) FROM timestamptestcsv3

Informations connexes

Types de données dans Amazon Athena

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans