Lorsque j'interroge une table dans Amazon Athena, le résultat TIMESTAMP est vide
Date de la dernière mise à jour : 17/11/2020
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. Comment puis-je résoudre ce problème?
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é :
- Définissez la colonne en tant que STRING.
- 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. Pour plus d'informations, consultez Fonctions de date MySQL, dans la documentation Presto.
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
Cet article vous a-t-il été utile ?
Besoin d'aide pour une question technique ou de facturation ?