Tipi supportati per la proiezione delle partizioni - Amazon Athena

Tipi supportati per la proiezione delle partizioni

Una tabella può avere qualsiasi combinazione di enum, integer, date, o tipi di colonna di partizione injected.

Tipi di enumerazione

Utilizzare il tipo enum per le colonne di partizione i cui valori sono membri di un set enumerato (ad esempio, codici aeroportuali o Regioni AWS).

Definire le proprietà della partizione nella tabella come segue:

Nome proprietà Valori di esempio Descrizione
projection.columnName.type

enum

Obbligatorio. Tipo di proiezione da utilizzare per la colonna columnName. Il valore deve essere enum (senza distinzione tra maiuscole e minuscole) per segnalare l'uso del tipo enum. È consentito lo spazio bianco iniziale e finale.
projection.columnName.values

A,B,C,D,E,F,G,Unknown

Obbligatorio. Elenco separato da virgole dei valori delle partizioni enumerate per la colonna columnName. Qualsiasi spazio bianco è considerato parte di un valore enum.
Nota

Come best practice si consiglia di limitare l'uso delle proiezioni delle partizioni basate su enum a poche dozzine o meno. Sebbene non esista un limite specifico per le proiezioni enum, le dimensioni totali dei metadati della tabella non possono superare il limite AWS Glue di circa 1 MB nella compressione gzip. Si noti che questo limite è condiviso tra le parti chiave della tabella, come i nomi delle colonne, la posizione, il formato di archiviazione e altri. Se utilizzi più di poche dozzine di ID univoci in enum, prendi in considerazione un approccio alternativo, ad esempio l'inserimento in un numero minore di valori univoci in un campo surrogato. Negoziando la cardinalità, puoi controllare il numero di valori univoci nel campo enum.

Tipo intero

Utilizzare il tipo intero per le colonne di partizione i cui valori possibili sono interpretabili come numeri interi all'interno di un intervallo definito. Le colonne intere proiettate sono attualmente limitate all'intervallo firmato Java (da -263 a 263-1 incluso).

Nome proprietà Valori di esempio Descrizione
projection.columnName.type

integer

Obbligatorio. Tipo di proiezione da utilizzare per la colonna columnName. Il valore deve essere integer (senza distinzione tra maiuscole e minuscole) per segnalare l'uso del tipo intero. È consentito lo spazio bianco iniziale e finale.
projection.columnName.range

0,10

-1,8675309

0001,9999

Obbligatorio. Elenco separato da virgole a due elementi che fornisce i valori di intervallo minimo e massimo da restituire dalle query sulla colonna columnName. Tieni presente che i valori devono essere separati da virgole, non da trattini. Questi valori sono inclusivi, possono essere negativi e possono avere zeri iniziali. È consentito lo spazio bianco iniziale e finale.
projection.columnName.interval

1

5

Facoltativo. Un numero intero positivo che specifica l'intervallo tra i valori di partizione successivi per la colonna columnName. Ad esempio, un valore range di "1,3" con un valore interval di "1" produce i valori 1, 2 e 3. Lo stesso valore range con un valore interval di "2" produce i valori 1 e 3, saltando 2. È consentito lo spazio bianco iniziale e finale. Il valore di default è 1.
projection.columnName.digits

1

5

Facoltativo. Un numero intero positivo che specifica il numero di cifre da includere nella rappresentazione finale del valore della partizione per la colonna columnName. Ad esempio, un valore range di "1,3" che ha un valore digits di "1" produce i valori 1, 2 e 3. Lo stesso valore range con un valore digits di "2" produce i valori 01, 02 e 03. È consentito lo spazio bianco iniziale e finale. Il valore predefinito non è un numero statico di cifre e nessuno zero iniziale.

Tipo di data

Utilizzare il tipo di data per le colonne di partizione i cui valori sono interpretabili come date (con orari facoltativi) all'interno di un intervallo definito.

Importante

Le colonne della data prevista vengono generate in ora UTC (Coordinated Universal Time) al momento dell'esecuzione della query.

Nome proprietà Valori di esempio Descrizione
projection.columnName.type

date

Obbligatorio. Tipo di proiezione da utilizzare per la colonna columnName. Il valore deve essere date (senza distinzione tra maiuscole e minuscole) per segnalare l'utilizzo del tipo di data. È consentito lo spazio bianco iniziale e finale.
projection.columnName.range

201701,201812

01-01-2010,12-31-2018

NOW-3YEARS,NOW

201801,NOW+1MONTH

Obbligatorio. Elenco separato da virgole a due elementi che fornisce i valori range minimo e massimo per la colonna columnName. Questi valori sono inclusivi e possono utilizzare qualsiasi formato compatibile con i tipi di data java.time.* Java. Entrambi i valori minimo e massimo devono utilizzare lo stesso formato. Il formato specificato nella proprietà .format deve corrispondere al formato utilizzato per questi valori.

Questa colonna può anche contenere stringhe di data relative, formattate in questo modello di espressione regolare:

\s*NOW\s*(([\+\-])\s*([0-9]+)\s*(YEARS?|MONTHS?|WEEKS?|DAYS?|HOURS?|MINUTES?|SECONDS?)\s*)?

Gli spazi bianchi sono consentiti, ma nei valori letterali della data sono considerati parte delle stringhe di data stesse.

projection.columnName.format

yyyyMM

dd-MM-yyyy

dd-MM-yyyy-HH-mm-ss

Obbligatorio. Stringa di formato data basata sul formato data Java DateTimeFormatter. Può essere qualsiasi tipo Java.time.* supportato.
projection.columnName.interval

1

5

Un numero intero positivo che specifica l'intervallo tra i valori di partizione successivi per la colonna columnName. Ad esempio, un valore range di 2017-01,2018-12 con un valore interval di 1 e un valore interval.unit di MONTHS produce i valori 2017-01, 2017-02, 2017-03 e così via. Lo stesso valore range con un valore interval di 2 e un valore interval.unit di MONTHS produce i valori 2017-01, 2017-03, 2017-05 e così via. È consentito lo spazio bianco iniziale e finale.

Quando le date sono fornite con la precisione di un singolo giorno o di un mese, interval è facoltativo e il valore predefinito è 1 giorno o 1 mese, rispettivamente. In caso contrario, interval è richiesto.

projection.columnName.interval.unit

YEARS

MONTHS

WEEKS

DAYS

HOURS

MINUTES

SECONDS

MILLIS

Parola di unità di tempo che rappresenta la forma serializzata di un oggetto ChronoUnit. I valori possibili sono YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS o MILLIS. I valori non rispettano la distinzione tra maiuscole e minuscole.

Quando le date sono fornite con la precisione di un singolo giorno o di un mese, interval.unit è facoltativo e il valore predefinito è 1 giorno o 1 mese, rispettivamente. In caso contrario, interval.unit è richiesto.

Esempio Partizione per mese

La seguente tabella di configurazione di esempio partiziona i dati per mese dal 2015 ad oggi.

'projection.month.type'='date', 'projection.month.format'='yyyy-MM', 'projection.month.interval'='1', 'projection.month.interval.unit'='MONTHS', 'projection.month.range'='2015-01,NOW', ...

Tipo iniettato

Utilizzare il tipo iniettato per le colonne di partizione con valori possibili che non possono essere generati proceduralmente all'interno di un intervallo logico, ma che sono forniti nella clausola WHERE di una query come valore singolo.

È importante tenere a mente i seguenti punti:

  • Le query sulle colonne iniettate hanno esito negativo se non viene fornita un'espressione di filtro per ogni colonna iniettata.

  • Le query con più valori per un'espressione filtro su una colonna iniettata hanno esito positivo solo se i valori sono disgiunti.

  • Solo le colonne di tipo string sono supportate.

  • Quando si utilizza la frase WHERE IN con una colonna di partizione iniettata, esiste un limite di 1.000 valori che è possibile specificare nell'elenco. IN Per interrogare un set di dati con più di 1.000 partizioni per una colonna iniettata, suddividi la query in più query più piccole, ognuna con un massimo di 1.000 valori nella WHERE IN clausola, quindi aggrega i risultati.

Nome proprietà Valore Descrizione
projection.columnName.type

injected

Obbligatorio. Tipo di proiezione da utilizzare per la colonna columnName. È supportato solo il tipo string. Il valore specificato deve essere injected (senza distinzione tra maiuscole e minuscole). È consentito lo spazio bianco iniziale e finale.

Per ulteriori informazioni, consulta Quando injected utilizzare il tipo di proiezione.