Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Quando si utilizza il tipo date
per una chiave di partizione proiettata, è necessario specificare un intervallo. Poiché non disponi di dati relativi alle date precedenti alla creazione del flusso di distribuzione di Firehose, puoi utilizzare la data di creazione come inizio. E poiché non si dispone di dati per le date in futuro, è possibile utilizzare il token speciale NOW
come la fine.
Nell'esempio CREATE TABLE
, la data di inizio è specificata come 1 gennaio 2021 a mezzanotte UTC.
Nota
Configurare un intervallo che corrisponda il più possibile ai propri dati in modo che Athena cerchi solo le partizioni esistenti.
Quando viene eseguita una query sulla tabella di esempio, Athena utilizza le condizioni sulla chiave di partizione datehour
insieme all'intervallo per generare i valori. Considera la query seguente:
SELECT *
FROM my_ingested_data
WHERE datehour >= '2020/12/15/00'
AND datehour < '2021/02/03/15'
La prima condizione nella query SELECT
utilizza una data precedente all'inizio dell'intervallo di date specificato dall'istruzione CREATE TABLE
. Poiché la configurazione di proiezione delle partizioni non specifica partizioni per le date precedenti al 1° gennaio 2021, Athena cerca i dati solo nelle posizioni seguenti e ignora le date precedenti nella query.
s3://amzn-s3-demo-bucket/prefix/2021/01/01/00/ s3://amzn-s3-demo-bucket/prefix/2021/01/01/01/ s3://amzn-s3-demo-bucket/prefix/2021/01/01/02/ ... s3://amzn-s3-demo-bucket/prefix/2021/02/03/12/ s3://amzn-s3-demo-bucket/prefix/2021/02/03/13/ s3://amzn-s3-demo-bucket/prefix/2021/02/03/14/
Analogamente, se la query viene eseguita in una data e ora precedenti al 3 febbraio 2021 alle 15:00, l'ultima partizione rifletterebbe la data e l'ora correnti, non la data e l'ora nella condizione della query.
Se si desidera eseguire una query per i dati più recenti, è possibile sfruttare il fatto che Athena non genera date future e specificare solo un inizio datehour
, come nel seguente esempio.
SELECT *
FROM my_ingested_data
WHERE datehour >= '2021/11/09/00'