Example – Amazon Data Firehose - Amazon Athena

Example – Amazon Data Firehose

Lorsque vous utilisez Firehose pour fournir des données à Amazon S3, la configuration par défaut écrit des objets avec des clés semblables à l’exemple suivant :

s3://amzn-s3-demo-bucket/prefix/yyyy/MM/dd/HH/file.extension

Pour créer une table Athena qui trouve automatiquement les partitions au moment de la requête, au lieu de les ajouter au AWS Glue Data Catalog lorsque de nouvelles données arrivent, vous pouvez utiliser la projection de partition.

L’exemple d’instruction CREATE TABLE suivant utilise la configuration Firehose par défaut.

CREATE EXTERNAL TABLE my_ingested_data ( ... ) ... PARTITIONED BY ( datehour STRING ) LOCATION "s3://amzn-s3-demo-bucket/prefix/" TBLPROPERTIES ( "projection.enabled" = "true", "projection.datehour.type" = "date", "projection.datehour.format" = "yyyy/MM/dd/HH", "projection.datehour.range" = "2021/01/01/00,NOW", "projection.datehour.interval" = "1", "projection.datehour.interval.unit" = "HOURS", "storage.location.template" = "s3://amzn-s3-demo-bucket/prefix/${datehour}/" )

La clause TBLPROPERTIES dans l'instruction CREATE TABLE indique à Athena ce qui suit :

  • Utiliser la projection de partition lors de l'interrogation de la table

  • La clé de partition datehour est de type date (qui inclut une heure facultative)

  • Comment les dates sont formatées

  • La plage de dates et heures. Notez que les valeurs doivent être séparées par une virgule, et non par un tiret.

  • Où trouver les données sur Amazon S3.

Lorsque vous interrogez la table, Athena calcule les valeurs pour datehour et utilise le modèle d'emplacement de stockage pour générer une liste d'emplacements de partition.