Esempio di Amazon Data Firehose
Quando si utilizza Firehose per consegnare dati ad Amazon S3, la configurazione di default scrive oggetti con chiavi simili al seguente esempio:
s3://amzn-s3-demo-bucket/prefix/yyyy/MM/dd/HH/file.extension
Per creare una tabella Athena che rileva automaticamente le partizioni al momento della query, invece di doverle aggiungere alla AWS Glue Data Catalog appena arrivano nuovi dati, è possibile utilizzare la proiezione delle partizioni.
Il seguente esempio di CREATE TABLE utilizza la configurazione di default di 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 clausola TBLPROPERTIES nell'istruzione CREATE TABLE indica ad Athena quanto segue:
-
Usa la proiezione delle partizioni durante la query sulla tabella
-
La chiave di partizione
datehourè di tipodate(che include un orario facoltativo) -
Come vengono formattate le date
-
L'intervallo di date e orari Tieni presente che i valori devono essere separati da virgole, non da trattini.
-
Dove trovare i dati su Amazon S3.
Quando si esegue una query sulla tabella, Athena calcola i valori per datehour e utilizza il modello di posizione di archiviazione per generare un elenco di posizioni di partizione.