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à.
ALTER TABLE ADD PARTITION
Crea una o più colonne di partizione per la tabella. Ogni partizione è composta da una o più combinazioni diverse di nome/valore. Viene creata una directory di dati separata per ciascuna combinazione specificata; in alcune circostanze ciò può migliorare le prestazioni delle query. Le colonne partizionate non sono presenti all'interno della tabella di dati stessa, perciò se si utilizza un nome di colonna uguale a un nome di una colonna nella tabella, si riceverà un messaggio di errore. Per ulteriori informazioni, consulta Come partizionare i dati.
In Athena, una tabella e le relative partizioni devono utilizzare gli stessi formati di dati, tuttavia i loro schemi possono differire. Per ulteriori informazioni, consulta Aggiorna tabelle con partizioni.
Per informazioni sulle autorizzazioni a livello di risorsa richieste nelle IAM politiche (incluseglue:CreatePartition
), vedere AWS Glue APIpermissions: Actions and resources reference and. Configurare l'accesso a database e tabelle in AWS Glue Data Catalog Per informazioni sulla risoluzione dei problemi relativi alle autorizzazioni quando si utilizza Athena, consulta la sezione Autorizzazioni dell'argomento Risolvi i problemi in Athena.
Riepilogo
ALTER TABLE table_name ADD [IF NOT EXISTS]
PARTITION
(partition_col1_name = partition_col1_value
[,partition_col2_name = partition_col2_value]
[,...])
[LOCATION 'location1']
[PARTITION
(partition_colA_name = partition_colA_value
[,partition_colB_name = partition_colB_value
[,...])]
[LOCATION 'location2']
[,...]
Parametri
Quando si aggiunge una partizione, è necessario specificare una o più coppie nome/valore colonna per la partizione e il percorso Amazon S3 in cui risiedono i file di dati per tale partizione.
- [SE] NOT EXISTS
-
Provoca l'errore da sopprimere se una partizione con la stessa definizione è già esistente.
- PARTITION(partition_col_name = partition_col_value [,...])
-
Crea una partizione con le combinazioni nome/valore colonna specificate dall'utente. Racchiudere
partition_col_value
in caratteri di stringa solo se il tipo di dati della colonna è una stringa. - LOCATION['posizione']
-
Specifica la directory in cui memorizzare la partizione definita dalla dichiarazione precedente. La clausola
LOCATION
è facoltativa quando i dati utilizzano il partizionamento in modalità Hive (pk1=v1/pk2=v2/pk3=v3
). Con il partizionamento in stile Hive, l'intero Amazon S3 URI viene creato automaticamente dalla posizione della tabella, dai nomi delle chiavi di partizione e dai valori delle chiavi di partizione. Per ulteriori informazioni, consulta Come partizionare i dati.
Considerazioni
Amazon Athena non impone un limite specifico al numero di partizioni che è possibile aggiungere in una singola istruzione. ALTER TABLE ADD PARTITION
DDL Tuttavia, se devi aggiungere un numero significativo di partizioni, valuta la possibilità di suddividere l'operazione in batch più piccoli per evitare potenziali problemi di prestazioni. L'esempio seguente utilizza comandi successivi per aggiungere partizioni singolarmente e utilizza comandi IF NOT EXISTS
per evitare l'aggiunta di duplicati.
ALTER TABLE
table_name
ADD IF NOT EXISTS PARTITION (ds='2023-01-01') ALTER TABLEtable_name
ADD IF NOT EXISTS PARTITION (ds='2023-01-02') ALTER TABLEtable_name
ADD IF NOT EXISTS PARTITION (ds='2023-01-03')
Quando lavori con le partizioni in Athena, tieni presente anche i seguenti punti:
-
Sebbene Athena supporti l'interrogazione di AWS Glue tabelle con 10 milioni di partizioni, Athena non è in grado di leggere più di 1 milione di partizioni in una singola scansione.
-
Per ottimizzare le query e ridurre il numero di partizioni analizzate, prendete in considerazione strategie come l'eliminazione delle partizioni o l'utilizzo degli indici di partizione.
Per ulteriori considerazioni sull'utilizzo delle partizioni in Athena, vedere. Come partizionare i dati
Esempi
L'esempio seguente aggiunge una singola partizione a una tabella di dati partizionati in modalità Hive.
ALTER TABLE orders ADD PARTITION (dt = '2016-05-14', country = 'IN');
L'esempio seguente aggiunge più partizioni a una tabella per dati partizionati in stile Hive.
ALTER TABLE orders ADD PARTITION (dt = '2016-05-31', country = 'IN') PARTITION (dt = '2016-06-01', country = 'IN');
Quando la tabella non è per dati partizionati in stile Hive, la LOCATION
clausola è obbligatoria e deve essere l'Amazon S3 completo URI per il prefisso che contiene i dati della partizione.
ALTER TABLE orders ADD PARTITION (dt = '2016-05-31', country = 'IN') LOCATION 's3://amzn-s3-demo-bucket/path/to/INDIA_31_May_2016/' PARTITION (dt = '2016-06-01', country = 'IN') LOCATION 's3://amzn-s3-demo-bucket/path/to/INDIA_01_June_2016/';
Per ignorare gli errori quando la partizione già esiste, utilizza la clausola IF NOT EXISTS
, come nell'esempio seguente.
ALTER TABLE orders ADD IF NOT EXISTS PARTITION (dt = '2016-05-14', country = 'IN');
File _$folder$
di zero byte
Se esegui un'istruzione ALTER TABLE ADD PARTITION
e specifichi erroneamente una partizione già esistente e una posizione Amazon S3 errata, vengono creati in Amazon S3 i file segnaposto di zero byte del formato
. È necessario rimuovere questi file manualmente.partition_value
_$folder$
Per evitare che ciò accada, utilizza la sintassi ADD IF NOT EXISTS
nella dichiarazione ALTER TABLE ADD PARTITION
, come nell'esempio seguente.
ALTER TABLE table_name ADD IF NOT EXISTS PARTITION […]