Ejemplo de Amazon Data Firehose
Cuando se usa Firehose para entregar datos a Amazon S3, la configuración predeterminada escribe objetos con claves que se parecen al siguiente ejemplo:
s3://amzn-s3-demo-bucket/prefix/yyyy/MM/dd/HH/file.extension
Para crear una tabla de Athena que encuentre las particiones de forma automática en el momento de la consulta, en lugar de tener que agregarlas al catálogo de datos de AWS Glue Data Catalog a medida que llegan nuevos datos, puede usar la proyección de particiones.
En el siguiente ejemplo de CREATE TABLE
se usa la configuración predeterminada de Firehose.
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 cláusula TBLPROPERTIES
de la instrucción CREATE TABLE
indica a Athena lo siguiente:
-
Usar la proyección de la partición al consultar la tabla
-
La clave de partición
datehour
es de tipodate
(que incluye una hora opcional) -
Cómo se formatean las fechas
-
El rango de fechas y horas. Tenga en cuenta que los valores deben estar separados por una coma, no por un guion.
-
Dónde encontrar los datos en Amazon S3.
Al consultar la tabla, Athena calcula los valores de datehour
y usa la plantilla de ubicación de almacenamiento para generar una lista de ubicaciones de partición.