ALTER TABLE DROP PARTITION - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

ALTER TABLE DROP PARTITION

Supprime une ou plusieurs partitions spécifiées pour la table nommée.

Résumé

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

Paramètres

[IF EXISTS]

Supprime le message d'erreur si la partition spécifiée n'existe pas.

PARTITION (partition_spec)

Chaque partition_spec indique une combinaison nom/valeur de colonne au format partition_col_name = partition_col_value [,...].

Exemples

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');

Remarques

L'instruction ALTER TABLE DROP PARTITION ne fournit pas de syntaxe unique pour supprimer toutes les partitions en une seule fois ni ne prend en charge les critères de filtrage pour spécifier une gamme de partitions à supprimer.

Pour contourner ce problème, vous pouvez utiliser les actions d'API AWS Glue GetPartitions et BatchDeletePartition dans un script. L'action GetPartitions prend en charge des expressions de filtre complexes comme celles d'une expression SQL WHERE. Après avoir utilisé GetPartitions pour créer une liste filtrée de partitions à supprimer, vous pouvez utiliser l'action BatchDeletePartition pour supprimer les partitions par lots de 25.

Important

En raison d'un problème connu, lorsqu'une partition non valide est spécifiée pour l'instruction ALTER TABLE DROP PARTITION, toutes les partitions de la table sont supprimées dans AWS Glue. Par exemple, l'instruction suivante supprimera toutes les partitions de la table my_table même si la partition spécifiée n'existe pas. Pour contourner le problème, assurez-vous de saisir correctement les informations de partition avant d'exécuter l'instruction ALTER TABLE DROP PARTITION.

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