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.
Crée une ou plusieurs colonnes de partition pour la table. Chaque partition se compose d'une ou plusieurs combinaisons nom/valeur de colonne distinctes. Un répertoire de données distinct est créé pour chaque combinaison spécifiée, ce qui peut améliorer les performances des requêtes dans certaines circonstances. Les colonnes partitionnées n'existent pas dans les données de table elles-mêmes. Par conséquent, si vous utilisez un nom de colonne qui porte le même nom qu'une colonne dans la table elle-même, vous obtenez une erreur. Pour de plus amples informations, veuillez consulter Partitionner vos données.
Dans Athena, une table et ses partitions doivent utiliser les mêmes formats de données, mais leurs schémas peuvent différer. Pour de plus amples informations, veuillez consulter Mettre à jour les tables avec des partitions.
Pour plus d'informations sur les autorisations au niveau des ressources requises dans IAM les politiques (y comprisglue:CreatePartition
), voir AWS Glue APIAutorisations : référence aux actions et aux ressources et. Configurez l'accès aux bases de données et aux tables dans le AWS Glue Data Catalog Pour des informations de résolution de problèmes concernant les autorisations lors de l'utilisation d'Athena, consultez la section Autorisations de la rubrique Résoudre les problèmes dans Athena.
Résumé
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']
[,...]
Paramètres
Lorsque vous ajoutez une partition, vous spécifiez une ou plusieurs paires nom/valeur de colonnes pour la partition et le chemin d'accès Simple Storage Service (Amazon S3) où résident les fichiers de données de cette partition.
- [SI NOTEXISTS]
-
Entraîne la suppression de l'erreur si une partition avec la même définition existe déjà.
- PARTITION(partition_col_name = partition_col_value [,...])
-
Crée une partition avec les combinaisons nom/valeur de colonne que vous spécifiez. Placez
partition_col_value
dans des caractères de chaîne uniquement si le type de données de la colonne est une chaîne. - [LOCATION'emplacement']
-
Spécifie le répertoire dans lequel la partition définie par l'instruction précédente doit être stockée. La clause
LOCATION
est facultative lorsque les données utilisent le partitionnement de style Hive (pk1=v1/pk2=v2/pk3=v3
). Avec le partitionnement de type Hive, l'intégralité d'Amazon S3 URI est construite automatiquement à partir de l'emplacement de la table, des noms des clés de partition et des valeurs des clés de partition. Pour de plus amples informations, veuillez consulter Partitionner vos données.
Considérations
Amazon Athena n'impose pas de limite spécifique au nombre de partitions que vous pouvez ajouter dans une seule ALTER TABLE ADD PARTITION
DDL instruction. Toutefois, si vous devez ajouter un nombre important de partitions, pensez à diviser l'opération en lots plus petits afin d'éviter d'éventuels problèmes de performances. L'exemple suivant utilise des commandes successives pour ajouter des partitions individuellement et IF NOT EXISTS
pour éviter d'ajouter des doublons.
ALTER TABLE table_name
ADD IF NOT EXISTS PARTITION (ds='2023-01-01')
ALTER TABLE table_name
ADD IF NOT EXISTS PARTITION (ds='2023-01-02')
ALTER TABLE table_name
ADD IF NOT EXISTS PARTITION (ds='2023-01-03')
Lorsque vous travaillez avec des partitions dans Athena, gardez également à l'esprit les points suivants :
-
Bien qu'Athena prenne en charge l'interrogation de AWS Glue tables contenant 10 millions de partitions, Athena ne peut pas lire plus d'un million de partitions en un seul scan.
-
Pour optimiser vos requêtes et réduire le nombre de partitions scannées, envisagez des stratégies telles que l'élagage des partitions ou l'utilisation d'index de partition.
Pour des considérations supplémentaires concernant l'utilisation des partitions dans Athena, voir. Partitionner vos données
Exemples
L'exemple suivant ajoute une partition unique à une table pour les données partitionnées de style Hive.
ALTER TABLE orders ADD
PARTITION (dt = '2016-05-14', country = 'IN');
L'exemple suivant ajoute plusieurs partitions à une table pour les données partitionnées de style Hive.
ALTER TABLE orders ADD
PARTITION (dt = '2016-05-31', country = 'IN')
PARTITION (dt = '2016-06-01', country = 'IN');
Lorsque la table ne concerne pas les données partitionnées de style Hive, la LOCATION
clause est obligatoire et doit être le préfixe Amazon S3 URI complet contenant les données de la partition.
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/';
Pour ignorer les erreurs lorsque la partition existe déjà, utilisez la clause IF NOT EXISTS
comme dans l'exemple suivant.
ALTER TABLE orders ADD IF NOT EXISTS
PARTITION (dt = '2016-05-14', country = 'IN');
Fichiers _$folder$
zéro octet
Si vous exécutez une instruction ALTER TABLE ADD PARTITION
et spécifiez par erreur une partition déjà existante et un emplacement Simple Storage Service (Amazon S3) incorrect, des fichiers d'emplacement zéro octet du format
sont créés dans Simple Storage Service (Amazon S3). Vous devez supprimer ces fichiers manuellement.partition_value
_$folder$
Pour éviter que cela ne se produise, utilisez la syntaxe ADD IF NOT EXISTS
de votre instruction ALTER TABLE ADD PARTITION
, comme dans l'exemple suivant.
ALTER TABLE table_name ADD IF NOT EXISTS PARTITION […]