Come scegliere le chiavi di partizione - Amazon Athena

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à.

Come scegliere le chiavi di partizione

È possibile specificare in che modo la proiezione delle partizioni mappa le posizioni delle partizioni alle chiavi di partizione. Nell'esempio CREATE TABLE nella sezione precedente, la data e l'ora sono state combinate in una chiave di partizione chiamata datehour, ma sono possibili altri schemi. Ad esempio, è possibile configurare una tabella con chiavi di partizione separate per l'anno, il mese, il giorno e l'ora.

Tuttavia, la suddivisione delle date in anno, mese e giorno significa che il tipo di proiezione della partizione date non può essere utilizzato. Un'alternativa consiste nel separare la data dall'ora per sfruttare comunque il tipo di proiezione della partizione date, ma rendere più facili da leggere le query che specificano gli intervalli di ore.

Ricordando questo, nell'esempio CREATE TABLE seguente la data viene separata dall'ora. Poiché date è una parola riservataSQL, nell'esempio viene utilizzata day come nome la chiave di partizione che rappresenta la data.

CREATE EXTERNAL TABLE my_ingested_data2 ( ... ) ... PARTITIONED BY ( day STRING, hour INT ) LOCATION "s3://amzn-s3-demo-bucket/prefix/" TBLPROPERTIES ( "projection.enabled" = "true", "projection.day.type" = "date", "projection.day.format" = "yyyy/MM/dd", "projection.day.range" = "2021/01/01,NOW", "projection.day.interval" = "1", "projection.day.interval.unit" = "DAYS", "projection.hour.type" = "integer", "projection.hour.range" = "0,23", "projection.hour.digits" = "2", "storage.location.template" = "s3://amzn-s3-demo-bucket/prefix/${day}/${hour}/" )

Nell'istruzione CREATE TABLE di esempio, l'ora è una chiave di partizione separata configurata come numero intero. La configurazione per la chiave di partizione dell'ora specifica l'intervallo da 0 a 23 e che l'ora deve essere formattata con due cifre quando Athena genera le posizioni della partizione.

Una query per la tabella my_ingested_data2 potrebbe essere simile alla seguente:

SELECT * FROM my_ingested_data2 WHERE day = '2021/11/09' AND hour > 3

Comprendi la chiave di partizione e i tipi di dati di proiezione della partizione

Tieni presente che la chiave datehour nel primo esempio CREATE TABLE è configurata come date nella configurazione di proiezione della partizione, ma il tipo di chiave di partizione è string. Lo stesso vale per day nel secondo esempio. I tipi nella configurazione di proiezione delle partizioni indicano ad Athena soltanto come formattare i valori quando vengono generate le posizioni della partizione. I tipi specificati non modificano il tipo di chiave di partizione, nelle query, datehour e day sono di tipo string.

Quando una query include una condizione come day = '2021/11/09', Athena analizza la stringa sul lato destro dell'espressione utilizzando il formato data specificato nella configurazione di proiezione della partizione. Una volta che Athena ha verificato che la data rientra nell'intervallo configurato, utilizza nuovamente il formato della data per inserire la data come stringa nel modello di posizione di archiviazione.

Allo stesso modo, per una condizione di query come day > '2021/11/09', Athena analizza il lato destro e genera un elenco di tutte le date corrispondenti all'interno dell'intervallo configurato. Viene quindi utilizzato il formato della data per inserire ogni data nel modello di posizione di archiviazione per creare l'elenco delle posizioni delle partizioni.

Scrivi la stessa condizione come day > '2021-11-09' altrimenti day > DATE '2021-11-09' non funzionerà. Nel primo caso, il formato della data non corrisponde (notare i trattini anziché le barre) mentre nel secondo caso i tipi di dati non corrispondono.