ALTER TABLE DROP PARTITION - 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à.

ALTER TABLE DROP PARTITION

Rimuove una o più partizioni specificate per la tabella denominata.

Riepilogo

ALTER TABLE table_name DROP [IF EXISTS] PARTITION (partition_spec) [, PARTITION (partition_spec)]

Parametri

[IF EXISTS]

Sopprime il messaggio di errore se la partizione specificata non esiste.

PARTITION (partition_spec)

Ogni partition_spec specifica una combinazione nome/valore di colonna nel modulo partition_col_name = partition_col_value [,...].

Esempi

ALTER TABLE orders DROP PARTITION (dt = '2014-05-14', country = 'IN');
ALTER TABLE orders DROP PARTITION (dt = '2014-05-14', country = 'IN'), PARTITION (dt = '2014-05-15', country = 'IN');

Note

L'istruzione ALTER TABLE DROP PARTITION non fornisce una singola sintassi per eliminare tutte le partizioni contemporaneamente o supporta i criteri di filtraggio per specificare un intervallo di partizioni da eliminare.

Come soluzione alternativa, puoi utilizzare l' AWS Glue API GetPartitionse BatchDeletePartitionle azioni negli script. L'operazione GetPartitions supporta espressioni di filtro complesse come quelle presenti in un'espressione WHERE SQL. Dopo aver utilizzato GetPartitions per creare un elenco filtrato di partizioni da eliminare, è possibile utilizzare l'operazione BatchDeletePartition per eliminare le partizioni in batch di 25.

Importante

A causa di un problema noto, quando viene specificata una partizione non valida per la dichiarazione ALTER TABLE DROP PARTITION, tutte le partizioni della tabella vengono eliminate in AWS Glue. Ad esempio, la seguente dichiarazione eliminerà tutte le partizioni della tabella my_table anche se la partizione specificata non esiste. Come soluzione alternativa, assicurati di inserire correttamente le informazioni sulla partizione prima di eseguire la dichiarazione ALTER TABLE DROP PARTITION.

ALTER TABLE my_table DROP IF EXISTS PARTITION(zzz='');