

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éation de tables
<a name="tables-described"></a>

Même si l'exécution d'un robot est la méthode recommandée pour inventorier les données de vos magasins de données, vous pouvez y ajouter des tables de métadonnées AWS Glue Data Catalog manuellement. Cette approche vous permet de mieux contrôler les définitions des métadonnées et de les personnaliser en fonction de vos besoins spécifiques.

Vous pouvez également ajouter manuellement des tables au catalogue de données de la manière suivante :
+ Utilisez la console AWS Glue pour créer manuellement une table dans l’ AWS Glue Data Catalog. Pour de plus amples informations, veuillez consulter [Création de tables à l’aide de la console](#console-tables).
+ Utilisez l'opération `CreateTable` de l'[AWS Glue API](aws-glue-api.md) pour créer une table dans le AWS Glue Data Catalog. Pour de plus amples informations, veuillez consulter [CreateTable action (Python : créer\$1table)](aws-glue-api-catalog-tables.md#aws-glue-api-catalog-tables-CreateTable).
+ Utilisez CloudFormation des modèles. Pour de plus amples informations, veuillez consulter [AWS CloudFormation pour AWS Glue](populate-with-cloudformation-templates.md).

Lorsque vous définissez une table manuellement à l'aide de la console ou d’une API, vous spécifiez le schéma de table et la valeur d'un champ de classification qui indique le type et le format des données de la source de données. Si un crawler crée la table, le format et le schéma des données sont déterminés par un classifieur intégré ou un classifieur personnalisé. Pour plus d'informations sur la création d'une table à l'aide de la console AWS Glue, consultez [Création de tables à l’aide de la console](#console-tables).

**Topics**
+ [Partitions de table](#tables-partition)
+ [Liens de ressources de table](#tables-resource-links)
+ [Création de tables à l’aide de la console](#console-tables)
+ [Création d’index de partition](partition-indexes.md)
+ [Mise à jour de tables Data Catalog créées manuellement à l’aide d’crawlers](#update-manual-tables)
+ [Propriétés de la table Catalogue de données](#table-properties)

## Partitions de table
<a name="tables-partition"></a>

Une définition de table AWS Glue d'un dossier Amazon Simple Storage Service (Amazon S3) peut décrire une table partitionnée. Par exemple, pour améliorer la performance des requêtes, une table partitionnée peut séparer les données mensuelles dans différents fichiers en utilisant le nom du mois en tant que clé. Dans AWS Glue, les définitions de table incluent la clé de partitionnement d'une table. Lorsque AWS Glue évalue les données dans les dossiers Amazon S3 pour faire l'inventaire d'une table, il détermine si une table individuelle ou une table partitionnée est ajoutée. 

Vous pouvez créer des index de partition sur une table pour récupérer un sous-ensemble des partitions au lieu de charger toutes les partitions de la table. Pour en savoir plus sur l'utilisation des index de partition, consultez [Création d’index de partition](partition-indexes.md).

Toutes les conditions suivantes doivent être remplies pour que AWS Glue crée une table partitionnée pour un dossier Amazon S3 :
+ Les schémas des fichiers sont similaires, comme déterminé par AWS Glue.
+ Le format de données des fichiers est le même.
+ Le format de compression des fichiers est le même.

Par exemple, imaginons que vous possédez un compartiment Amazon S3 nommé `my-app-bucket`, où vous stockez des données de vente d'applications iOS et Android. Les données sont partitionnées par année, mois et jour. Les fichiers de données pour les ventes iOS et Android ont le même schéma, format de données et format de compression. Dans le AWS Glue Data Catalog, le AWS Glue robot crée une définition de table avec des clés de partitionnement pour l'année, le mois et le jour. 

La liste Amazon S3 `my-app-bucket` suivante présente certaines partitions. Le symbole `=` est utilisé pour attribuer des valeurs de clé de partition. 

```
   my-app-bucket/Sales/year=2010/month=feb/day=1/iOS.csv
   my-app-bucket/Sales/year=2010/month=feb/day=1/Android.csv
   my-app-bucket/Sales/year=2010/month=feb/day=2/iOS.csv
   my-app-bucket/Sales/year=2010/month=feb/day=2/Android.csv
   ...
   my-app-bucket/Sales/year=2017/month=feb/day=4/iOS.csv
   my-app-bucket/Sales/year=2017/month=feb/day=4/Android.csv
```

## Liens de ressources de table
<a name="tables-resource-links"></a>


|  | 
| --- |
| La console AWS Glue a été récemment mise à jour. La version actuelle de la console ne prend pas en charge les liens de ressources de table. | 

Le catalogue de données peut également contenir des *liens de ressources* vers des tables. Un lien de ressource de table est un lien vers une table locale ou partagée. Actuellement, vous ne pouvez créer des liens de ressources que dans AWS Lake Formation. Après avoir créé un lien de ressource vers une table, vous pouvez utiliser le nom du lien de ressource partout où vous utiliseriez le nom de la table. Avec les tables que vous possédez ou qui sont partagées avec vous, les liens de ressources de table sont renvoyés par `glue:GetTables()` et apparaissent sous la forme d'entrées sur la page **Tables** de la console AWS Glue.

Le catalogue de données peut également contenir des liens de ressources de base de données.

Pour plus d'informations sur les liens de ressources, veuillez consulter la rubrique [Création de liens de ressources](https://docs.aws.amazon.com/lake-formation/latest/dg/creating-resource-links.html) dans le *Guide du développeur AWS Lake Formation *.

## Création de tables à l’aide de la console
<a name="console-tables"></a>

Un tableau figurant dans le AWS Glue Data Catalog est la définition des métadonnées qui représente les données d'un magasin de données. Vous créez des tables lorsque vous exécutez un crawler ; vous pouvez aussi créer une table manuellement dans la console AWS Glue . La liste **Tables** de la console AWS Glue affiche les valeurs des métadonnées de votre table. Les définitions de table vous permettent de spécifier des sources et des cibles lors de la création de tâches ETL (extraction, transformation et chargement). 

**Note**  
Compte tenu des récentes modifications apportées à la console de AWS gestion, il se peut que vous deviez modifier vos rôles IAM existants pour [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-SearchTables](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-SearchTables)obtenir l'autorisation. Pour la création de nouveaux rôles, l'autorisation d'API `SearchTables` a déjà été ajoutée par défaut.

Pour commencer, connectez-vous à la AWS Glue console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). Choisissez l'onglet **Tables** et utilisez le bouton **Add tables** (Ajouter des tables) pour créer des tables avec un crawler ou en saisissant manuellement les attributs. 

### Ajout de tableaux sur la console
<a name="console-tables-add"></a>

Pour utiliser un crawler afin d'ajouter des tables, choisissez **Add tables** (Ajouter des tables), puis **Add tables using a crawler** (Ajouter des tables à l'aide d'un crawler). Ensuite, suivez les instructions fournies dans l'assistant **Add crawler** (Ajouter un crawler). Une fois que l'crawler s'exécute, les tables sont ajoutées à l' AWS Glue Data Catalog. Pour de plus amples informations, veuillez consulter [Utilisation de robots pour alimenter le catalogue de données](add-crawler.md).

Si vous connaissez les attributs requis pour créer une définition de table Amazon Simple Storage Service (Amazon S3) dans votre Data Catalog, vous pouvez la créer avec l'assistant de table. Choisissez **Add tables** (Ajouter des tables), **Add table manually** (Ajouter une table manuellement), et suivez les instructions fournies dans l'assistant **Add table** (Ajouter une table).

Lors de l'ajout manuel d'une table à l'aide de la console, tenez compte des points suivants :
+ Si vous prévoyez d'accéder à la table depuis Amazon Athena, fournissez un nom contenant uniquement des caractères alphanumériques et des traits de soulignement. Pour plus d'informations, consultez [Noms Athena](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html#ate-table-database-and-column-names-allow-only-underscore-special-characters).
+ L'emplacement de vos données sources doit être un chemin d'accès Amazon S3.
+ Le format des données doit correspondre à l'un des formats répertoriés dans l'assistant. La classification correspondante et SerDe les autres propriétés du tableau sont automatiquement renseignées en fonction du format choisi. Vous pouvez définir des tables aux formats suivants :   
**Avro**  
Format binaire JSON Apache Avro.  
**CSV**  
Valeurs séparées par des caractères. Vous spécifiez également le délimiteur de virgule, de tube, de point-virgule, de tabulation ou de Ctrl-A.  
**JSON**  
JavaScript Notation d'objets.  
**xml**  
Format XML (Extensible Markup Language). Spécifiez la balise XML qui définit une ligne dans les données. Les colonnes sont définies dans des balises de ligne.  
**Parquet**  
Stockage en colonnes Apache Parquet.  
**ORC**  
Format de fichier Optimized Row Columnar (ORC). Un format conçu pour stocker efficacement les données Hive.
+ Vous pouvez définir une clé de partition pour la table.
+ Actuellement, les tables partitionnées que vous créez avec la console ne peuvent pas être utilisées dans les tâches ETL.

### Attributs des tables
<a name="console-tables-attributes"></a>

Les attributs suivants font partie des plus importants de votre table :

**Nom**  
Le nom est déterminé lorsque la table est créée, et vous ne pouvez pas le modifier. Vous vous référez à un nom de table dans de nombreuses opérations AWS Glue.

**Base de données**  
Objet conteneur dans lequel se trouve votre table. Cet objet contient une organisation de vos tables qui existe au sein de votre banque de données AWS Glue Data Catalog et qui peut être différente de celle d'une organisation dans votre magasin de données. Lorsque vous supprimez une base de données, toutes les tables que celle-ci contient sont également supprimées de Data Catalog. 

**Description**  
Description de la table. Vous pouvez écrire une description vous aidant à comprendre le contenu de la table.

**Format de tableau**  
Spécifiez la création d'une AWS Glue table standard ou d'une table au format Apache Iceberg.  
Le catalogue de données fournit les options d’optimisation des tables suivantes pour gérer le stockage des tables et améliorer les performances des requêtes pour les tables Iceberg.  
+ **Compactage** : les fichiers de données sont fusionnés et réécrits pour supprimer les données obsolètes et regrouper les données fragmentées dans des fichiers plus volumineux et plus efficaces.
+ **Conservation des instantanés** : les instantanés sont des versions horodatées d’une table Iceberg. Les configurations de conservation des instantanés permettent aux clients de définir la durée de conservation des instantanés et le nombre d’instantanés à conserver. La configuration d’un optimiseur de conservation des instantanés peut aider à gérer la charge de stockage en supprimant les instantanés plus anciens et inutiles, ainsi que leurs fichiers sous-jacents associés.
+ **Suppression de fichiers orphelins** : les fichiers orphelins sont des fichiers qui ne sont plus référencés par les métadonnées de la table Iceberg. Ces fichiers peuvent s’accumuler au fil du temps, en particulier après des opérations telles que la suppression de tables ou l’échec de tâches ETL. L'activation de la suppression des fichiers orphelins permet AWS Glue d'identifier et de supprimer périodiquement ces fichiers inutiles, libérant ainsi de l'espace de stockage.
Pour de plus amples informations, veuillez consulter [Optimisation des tables Iceberg](table-optimizers.md).

**Configuration de l’optimisation**  
Vous pouvez utiliser les paramètres par défaut ou personnaliser les paramètres pour activer les optimiseurs de table.

**Rôle IAM**  
 Pour exécuter les optimiseurs de table, le service endosse un rôle IAM en votre nom. Vous pouvez choisir un rôle IAM à l'aide de la liste déroulante. Assurez-vous que le rôle dispose des autorisations requises pour activer le compactage.  
Pour en savoir plus sur les autorisations requises pour le rôle IAM, consultez [Conditions préalables requises pour l’optimisation des tables](optimization-prerequisites.md).

**Location**  
Pointeur de l'emplacement des données dans un magasin de données que cette définition de table représente.

**Classification**  
Valeur de catégorie fournie lors de la création de la table. En général, elle est écrite lors de l'exécution d'un crawler et spécifie le format de la source des données.

**Dernière mise à jour**  
Date et heure (UTC) auxquelles cette table a été mise à jour dans Data Catalog.

**Date ajoutée**  
Date et heure (UTC) auxquelles cette table a été ajoutée dans Data Catalog.

**Obsolète**  
Si AWS Glue détecte qu'une table du Data Catalog n'existe plus dans son magasin de données d'origine, il la marque comme obsolète dans le catalogue de données. Si vous exécutez une tâche qui fait référence à une table obsolète, la tâche peut échouer. Modifiez les tâches qui font référence à des tables obsolètes pour les supprimer en tant que sources et cibles. Nous vous recommandons de supprimer les tables obsolètes lorsqu'ils ne sont plus nécessaires. 

**Connexion**  
Si AWS Glue nécessite une connexion à votre magasin de données, le nom de la connexion est associé à la table.

### Affichage et gestion des détails d’une table
<a name="console-tables-details"></a>

Pour afficher les détails d'une table existante, choisissez le nom de la table dans la liste, puis **Action, View details** (Action, Afficher les détails).

Les détails de la table comprennent les propriétés de votre table et son schéma. Cette vue affiche le schéma de la table, y compris les noms de colonnes dans l'ordre défini pour la table, les types de données et les colonnes de clés pour les partitions. Si une colonne est de type complexe, vous pouvez choisir **View properties** (Afficher les propriétés) pour afficher les détails de la structure de ce champ, comme illustré dans l'exemple suivant :

```
{
"StorageDescriptor": 
    {
      "cols": {
         "FieldSchema": [
           {
             "name": "primary-1",
             "type": "CHAR",
             "comment": ""
           },
           {
             "name": "second ",
             "type": "STRING",
             "comment": ""
           }
         ]
      },
      "location": "s3://aws-logs-111122223333-us-east-1",
      "inputFormat": "",
      "outputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
      "compressed": "false", 
      "numBuckets": "0",
      "SerDeInfo": {
           "name": "",
           "serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
           "parameters": {
               "separatorChar": "|"
            }
      },
      "bucketCols": [],
      "sortCols": [],
      "parameters": {},
      "SkewedInfo": {},
      "storedAsSubDirectories": "false"
    },
    "parameters": {
       "classification": "csv"
    }
}
```

Pour plus d'informations sur les propriétés d'une table, comme `StorageDescriptor`, consultez [StorageDescriptor structure](aws-glue-api-catalog-tables.md#aws-glue-api-catalog-tables-StorageDescriptor).

Pour modifier le schéma d'une table, choisissez **Edit schema** (Modifier le schéma) pour ajouter et supprimer des colonnes, modifier les noms de colonnes et modifier les types de données.

 Pour comparer différentes versions d'une table, y compris son schéma, choisissez **Comparer les versions** pour voir une side-by-side comparaison des deux versions du schéma d'une table. Pour de plus amples informations, veuillez consulter [Comparaison des versions de schéma de table](#console-tables-schema-comparison). 

Pour afficher les fichiers qui constituent une partition Amazon S3, sélectionnez **View partition** (Afficher la partition). Pour les tables Amazon S3, la colonne **Key** (Clé) affiche les clés de partition qui sont utilisées pour partitionner la table dans le magasin de données source. Le partitionnement permet de diviser un tableau en parties connexes en fonction des valeurs d'une colonne clé, telle que la date, le lieu ou le département. Pour plus d'informations sur les partitions, effectuez une recherche sur Internet pour en savoir plus sur « le partitionnement Hive ».

**Note**  
Pour obtenir step-by-step des conseils sur l'affichage des détails d'un tableau, consultez le didacticiel **Explore le tableau** dans la console.

### Comparaison des versions de schéma de table
<a name="console-tables-schema-comparison"></a>

 Lorsque vous comparez deux versions de schémas de table, vous pouvez comparer les modifications des lignes imbriquées en développant et en réduisant les lignes imbriquées, comparer les schémas de deux versions et afficher les side-by-side propriétés des tables. side-by-side 

 Pour comparer les versions 

1.  Dans la console AWS Glue, choisissez **Tables**, puis **Actions** et choisissez **Comparer les versions**.   
![\[La capture d'écran montre le bouton Actions lorsqu'il est sélectionné. Le menu déroulant affiche l'option Comparer les versions.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/catalog-table-compare-versions.png)

1.  Choisissez une version à comparer en sélectionnant le menu déroulant des versions. Lorsque vous comparez des schémas, l'onglet Schéma est surligné en orange. 

1.  Lorsque vous comparez des tables entre deux versions, les schémas des tables s'affichent à gauche et à droite de l'écran. Cela vous permet de déterminer visuellement les modifications en comparant le nom de colonne, le type de données, la clé et les champs de commentaire side-by-side. En cas de modification, une icône colorée indique le type de modification apportée. 
   +  Supprimé : représenté par une icône rouge, indique l'endroit où la colonne a été supprimée d'une version précédente du schéma de table. 
   +  Modifié ou déplacé : représenté par une icône bleue, indique l'endroit où la colonne a été modifiée ou déplacée dans une version plus récente du schéma de table. 
   +  Ajouté : représenté par une icône verte, indique l'endroit où la colonne a été ajoutée à une version plus récente du schéma de table. 
   +  Modifications imbriquées : représentées par une icône jaune, indiquent où se trouvent les modifications dans la colonne imbriquée. Choisissez la colonne à développer et affichez les colonnes qui ont été supprimées, modifiées, déplacées ou ajoutées.   
![\[La capture d'écran affiche la comparaison du schéma de table entre deux versions. L'ancienne version se trouve sur le côté gauche. La version plus récente est à droite. L'icône de suppression se trouve à côté d'une colonne qui a été supprimée de l'ancienne version et qui ne figure plus dans la nouvelle version.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/catalog-table-version-comparison.png)

1.  Utilisez la barre de recherche des champs de filtre pour afficher les champs en fonction des caractères que vous saisissez ici. Si vous saisissez un nom de colonne dans l'une ou l'autre des versions de table, les champs filtrés s'affichent dans les deux versions de la table pour vous indiquer l'emplacement des modifications. 

1.  Pour comparer les propriétés, cliquez sur l'**onglet Propriétés**. 

1.  Pour arrêter la comparaison des versions, choisissez **Arrêter la comparaison** pour revenir à la liste des tables. 

# Création d’index de partition
<a name="partition-indexes"></a>

Au fil du temps, des centaines de milliers de partitions sont ajoutées à une table. L'[GetPartitions API](https://docs.aws.amazon.com/glue/latest/webapi/API_GetPartitions.html) est utilisée pour récupérer les partitions de la table. L’API renvoie des partitions qui correspondent à l’expression fournie dans la demande.

Prenons comme exemple une table *sales\$1data* qui est partitionnée par les clés *Country*, *Category*, *Year*, *Month* et *creationDate*. Si vous souhaitez obtenir des données de ventes pour tous les articles vendus pour la catégorie *Livres* en 2020, après le *2020-08-15*, vous devez faire une demande `GetPartitions` avec l’expression « Category = ’Books’ and creationDate > ’2020-08-15’ » au catalogue de données.

Si aucun index de partition n’est présent sur la table, AWS Glue charge toutes les partitions de la table, puis filtre les partitions chargées à l’aide de l’expression de requête fournie par l’utilisateur dans la demande `GetPartitions`. L’exécution de la requête prend plus de temps à mesure que le nombre de partitions augmente sur une table sans index. Avec un index, la requête `GetPartitions` essaiera de récupérer un sous-ensemble des partitions au lieu de charger toutes les partitions de la table.

**Topics**
+ [À propos des index de partition](#partition-index-1)
+ [Création d’un tableau avec index de partition](#partition-index-creating-table)
+ [Ajout d’un index de partition à une table existante](#partition-index-existing-table)
+ [Description des indexes de partition sur une table](#partition-index-describing)
+ [Limitations de l’utilisation des index de partition](#partition-index-limitations)
+ [Utilisation d'index pour un appel optimisé GetPartitions](#partition-index-getpartitions)
+ [Intégration avec les moteurs](#partition-index-integration-engines)

## À propos des index de partition
<a name="partition-index-1"></a>

Lorsque vous créez un index de partition, vous spécifiez une liste de clés de partition qui existent déjà sur une table donnée. L’index de partition est une sous-liste des clés de partition définies dans la table. Un index de partition peut être créé sur n’importe quelle permutation de clés de partition définie sur la table. Pour la table *sales\$1data* ci-dessus, les index possibles sont (country, category, creationDate), (country, category, year), (country, category), (country), (category, country, year, month), etc.

Data Catalog concaténera les valeurs de partition dans l’ordre fourni au moment de la création de l’index. L’index est créé de manière cohérente à mesure que des partitions sont ajoutées à la table. Des index peuvent être créés pour les types de colonnes String (string, char et varchar) Numeric (int, bigint, long, tinyint, and smallint) et Date (yyyy-MM-dd). 

**Types de données pris en charge**
+ Date : date au format ISO, par exemple `YYYY-MM-DD`. Par exemple, date `2020-08-15`. Le format utilise des tirets (‐) pour séparer l’année, le mois et le jour. La plage de dates autorisée pour l’indexation s’étend de `0000-01-01` à `9999-12-31`.
+ String : libellé chaîne entre guillemets simples ou doubles. 
+ Char : données en caractères de longueur fixe, avec une longueur spécifiée entre 1 et 255, par exemple char(10).
+ Varchar : données en caractères de longueur variable, avec une longueur spécifiée entre 1 et 65535, par exemple varchar(10).
+ Numeric : int, bigint, long, tinyint, and smallint

Les index sur les types de données Numeric, String et Date prennent en charge les opérateurs =, >, >=, <, <= et BETWEEN. La solution d’indexation ne prend actuellement en charge que l’opérateur logique `AND`. Les sous-expressions avec les opérateurs « LIKE », « IN », « OR » et « NOT » sont ignorées dans l’expression pour le filtrage à l’aide d’un index. Le filtrage de la sous-expression ignorée est effectué sur les partitions récupérées après application du filtrage d’index.

Pour chaque partition ajoutée à une table, un élément d’index correspondant est créé. Pour une table avec ’n’ partitions, 1 index de partition entraînera ’n’ éléments d’index de partition. L’index de partition ’m’ sur la même table se traduira par des éléments d’index de partition ’m\$1n’. Chaque élément d’index de partition sera facturé selon la politique de tarification AWS Glue en vigueur pour le stockage du catalogue de données. Pour plus de détails sur la tarification des objets de stockage, consultez la [tarification AWS Glue](https://aws.amazon.com/glue/pricing/).

## Création d’un tableau avec index de partition
<a name="partition-index-creating-table"></a>

Vous pouvez créer un index de partition lors de la création d’une table. La demande `CreateTable` prend une liste d’[objets `PartitionIndex`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-PartitionIndex) comme entrée. 3 index de partition au maximum peuvent être créés sur une table donnée. Chaque index de partition nécessite un nom et une liste de `partitionKeys` définie pour la table. Les index créés sur une table peuvent être récupérés à l’aide de l’[API `GetPartitionIndexes`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-GetPartitionIndexes)

## Ajout d’un index de partition à une table existante
<a name="partition-index-existing-table"></a>

Pour ajouter un index de partition à une table existante, utilisez l’opération `CreatePartitionIndex`. Vous pouvez créer un `PartitionIndex` par opération `CreatePartitionIndex`. L’ajout d’un index n’affecte pas la disponibilité d’une table, car la table reste disponible pendant la création des index.

L’état d’index d’une partition ajoutée est défini sur CREATING et la création des données d’index est lancée. Si le processus de création des index réussit, l’indexStatus est mis à jour sur ACTIVE et pour un processus infructueux, l’état de l’index est mis à jour sur FAILED. La création d’index peut échouer pour plusieurs raisons et vous pouvez utiliser l’opération `GetPartitionIndexes` pour récupérer les détails de l’échec. Les échecs possibles sont :
+ ENCRYPTED\$1PARTITION\$1ERROR – la création d’index sur une table avec des partitions chiffrées n’est pas prise en charge.
+ INVALID\$1PARTITION\$1TYPE\$1DATA\$1ERROR – observé lorsque la valeur `partitionKey` n’est pas une valeur valide pour le type de données `partitionKey` correspondant. Par exemple : un `partitionKey` avec le type de données ’int’ a une valeur ’foo’.
+ MISSING\$1PARTITION\$1VALUE\$1ERROR – observé lorsque le for `partitionValue` pour un `indexedKey` est absent. Cela peut se produire lorsqu’une table n’est pas partitionnée de manière cohérente.
+ UNSUPPORTED\$1PARTITION\$1CHARACTER\$1ERROR – observé lorsque la valeur d’une clé de partition indexée contient les caractères \$1u0000, \$1u0001 ou \$1u0002
+ INTERNAL\$1ERROR – une erreur interne s’est produite lors de la création des index. 

## Description des indexes de partition sur une table
<a name="partition-index-describing"></a>

Pour extraire les index de partition créés sur une table, utilisez l’opération `GetPartitionIndexes`. La réponse renvoie tous les index de la table, ainsi que le statut actuel de chaque index (`IndexStatus`).

Le `IndexStatus` pour un index de partition sera l’un des suivants :
+ `CREATING` – l’index est en cours de création et n’est pas encore disponible pour utilisation.
+ `ACTIVE` – l’index est prêt à l’emploi. Les requêtes peuvent utiliser l’index pour effectuer une requête optimisée.
+ `DELETING` – l’index est actuellement en cours de suppression et ne peut plus être utilisé. Un index à l’état actif peut être supprimé à l’aide de la demande `DeletePartitionIndex`, qui fait passer l’état de ACTIVE à DELETING.
+ `FAILED` – échec de la création d’index sur une table existante. Chaque table stocke les 10 derniers index ayant échoué.

Les transitions d’état possibles pour les index créés sur une table existante sont :
+ CREATING → ACTIVE → DELETING
+ CREATING → FAILED

## Limitations de l’utilisation des index de partition
<a name="partition-index-limitations"></a>

Une fois que vous avez créé un index de partition, notez ces modifications apportées aux fonctionnalités de table et de partition :

**Création d’une partition (après ajout d’index)**  
Une fois qu’un index de partition est créé sur une table, toutes les nouvelles partitions ajoutées à la table seront validées pour les vérifications de type de données pour les clés indexées. La valeur de partition des clés indexées sera validée pour le format de type de données. Si la vérification du type de données échoue, l’opération de création de partition échouera. Pour la table *sales\$1data*, si un index est créé pour les clés (category, year) où la catégorie est de type `string` et l’année de type `int`, la création de la nouvelle partition avec une valeur de YEAR telle que "foo" échouera.

Une fois les index activés, l’ajout de partitions avec des valeurs de clé indexées ayant les caractères U\$10000, U\$100001 et U\$10002 commencera à échouer.

**Mises à jour des tables**  
Une fois qu’un index de partition est créé sur une table, vous ne pouvez pas modifier les noms de clé de partition pour les clés de partition existantes, et vous ne pouvez pas changer le type ou l’ordre des clés qui sont enregistrées avec l’index.

## Utilisation d'index pour un appel optimisé GetPartitions
<a name="partition-index-getpartitions"></a>

Lorsque vous appelez `GetPartitions` une table avec un index, vous pouvez inclure une expression et, le cas échéant, Data Catalog utilisera un index si possible. La première clé de l’index doit être passée dans l’expression pour les index à utiliser dans le filtrage. L’optimisation de l’index dans le filtrage est appliquée au mieux. Data Catalog essaie d’utiliser l’optimisation d’index autant que possible, mais en cas d’index manquant ou d’opérateur non pris en charge, il revient à l’implémentation existante de chargement de toutes les partitions. 

Pour la table *sales\$1data* ci-dessus, ajoutons l’index [Country, Category, Year]. Si « Country » (Pays) n’est pas passé dans l’expression, l’index enregistré ne pourra pas filtrer les partitions à l’aide d’index. Vous pouvez ajouter jusqu’à 3 index pour prendre en charge divers modèles de requête.

Prenons quelques exemples d’expressions et voyons comment les index fonctionnent dessus :


| Expressions | Comment l’index sera utilisé | 
| --- | --- | 
|  Country = ’US’  |  Index sera utilisé pour filtrer les partitions.  | 
|  Country = ’US’ and Category = ’Shoes’  |  Index sera utilisé pour filtrer les partitions.  | 
|  Category = ’Shoes’  |  Les index ne seront pas utilisés, car la valeur « country » (pays) n’est pas fournie dans l’expression. Toutes les partitions seront chargées pour renvoyer une réponse.  | 
|  Country = ’US’ and Category = ’Shoes’ and Year > ’2018’  |  Index sera utilisé pour filtrer les partitions.  | 
|  Country = ’US’ and Category = ’Shoes’ and Year > ’2018’ and month = 2  |  L’index sera utilisé pour récupérer toutes les partitions avec pays = "US" and category = "shoes" and year > 2018. Ensuite, le filtrage sur l’expression du mois sera effectué.  | 
|  Country = ’US’ AND Category = ’Shoes’ OR Year > ’2018’  |  Les index ne seront pas utilisés, car un opérateur `OR` est présent dans l’expression.  | 
|  Country = ’US’ AND Category = ’Shoes’ AND (Year = 2017 OR Year = ’2018’)  |  Index sera utilisé pour récupérer toutes les partitions avec country = "US" and category = "shoes", puis un filtrage sur l’expression de l’année sera effectué.  | 
|  Country in (’US’, ’UK’) AND Category = ’Shoes’  |  Les index ne seront pas utilisés pour le filtrage, car l’opérateur `IN` n’est pas pris en charge actuellement.  | 
|  Country = ’US’ AND Category in (’Shoes’, ’Books’)  |  L’index sera utilisé pour récupérer toutes les partitions avec country = "US", puis un filtrage sur l’expression Category sera effectué.  | 
|  Country = ’US’ AND Category in (’Shoes’, ’Books’) AND (creationDate > ’2023-9-01’  |  L’index sera utilisé pour récupérer toutes les partitions avec country = "US", avec creationDate > ’2023-9-01’, puis un filtrage sur l’expression Category sera effectué.  | 

## Intégration avec les moteurs
<a name="partition-index-integration-engines"></a>

Redshift Spectrum, Amazon EMR et AWS Glue ETL Spark peuvent utiliser des index pour récupérer des partitions une fois que les index DataFrames sont à l'état ACTIF dans. AWS Glue [Athena](https://docs.aws.amazon.com/athena/latest/ug/glue-best-practices.html#glue-best-practices-partition-index) et les [trames dynamiques AWS Glue d’extraction, de transfert et de chargement](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html#aws-glue-programming-etl-partitions-cat-predicates) vous obligent à suivre des étapes supplémentaires pour utiliser les index à des fins d’amélioration des requêtes.

### Activation du filtrage de partition
<a name="enable-partition-filtering-athena"></a>

Pour activer le filtrage de partition dans Athena, vous devez mettre à jour les propriétés de la table comme suit :

1. Dans la AWS Glue console, sous **Catalogue de données**, sélectionnez **Tables**.

1. Choisissez une table .

1. Sous **Actions**, choisissez **Modifier la table**.

1. Sous **Propriétés de la table**, ajoutez ce qui suit :
   + Clé : `partition_filtering.enabled`
   + Valeur : `true`

1. Cliquez sur **Appliquer**.

Vous pouvez également définir ce paramètre en exécutant une requête [ALTER TABLE SET PROPERTIES](https://docs.aws.amazon.com/athena/latest/ug/alter-table-set-tblproperties.html) dans Athena.

```
ALTER TABLE partition_index.table_with_index
SET TBLPROPERTIES ('partition_filtering.enabled' = 'true')
```

## Mise à jour de tables Data Catalog créées manuellement à l’aide d’crawlers
<a name="update-manual-tables"></a>

Vous souhaiterez peut-être créer des AWS Glue Data Catalog tables manuellement, puis les mettre à jour à l'aide de AWS Glue robots d'exploration. Les crawlers respectant un calendrier peuvent ajouter de nouvelles partitions et mettre à jour les tables avec des modifications de schéma. Cela s'applique également aux tables migrées depuis un métastore Apache Hive.

Pour ce faire, lorsque vous définissez un crawler, au lieu de spécifier un ou plusieurs magasins de données en tant que source d'une analyse, vous spécifiez une ou plusieurs tables Data Catalog existantes. L'crawler analyse ensuite les magasins de données spécifiés par les tables du catalogue. Dans ce cas, aucune nouvelle table n’est créée ; au lieu de cela, vos tables créées manuellement sont mises à jour.

Voici d'autres raisons qui peuvent vous amener à vouloir créer manuellement des tables de catalogue et spécifier les tables de catalogue en tant qu'crawler source :
+ Vous voulez choisir le nom de la table de catalogue et de ne pas vous fier à l'algorithme d'attribution de noms de la table de catalogue.
+ Vous souhaitez empêcher de nouvelles tables d'être créées au cas où des fichiers dont le format pourrait perturber la détection de partition soient enregistrés par erreur dans le chemin de la source de données.

Pour de plus amples informations, veuillez consulter [Étape 2 : Choisir des sources de données et des classificateurs.](define-crawler-choose-data-sources.md).

## Propriétés de la table Catalogue de données
<a name="table-properties"></a>

 Les propriétés de table, ou paramètres, comme on les appelle dans la AWS CLI, sont des chaînes de clés et de valeurs non validées. Vous pouvez définir vos propres propriétés sur la table pour prendre en charge les utilisations du Catalogue de données en dehors d' AWS Glue. D'autres services utilisant le catalogue de données peuvent également le faire. AWS Glue définit certaines propriétés de table lors de l'exécution de jobs ou de robots d'exploration. Sauf indication contraire, ces propriétés sont destinées à un usage interne. Nous ne garantissons pas le fait qu'elles continueront d'exister sous leur forme actuelle, et nous ne garantissons pas le comportement du produit si ces propriétés sont modifiées manuellement. 

 Pour plus d'informations sur les propriétés de table définies par AWS Glue les robots d'exploration, consultez[Paramètres définis sur les tables du Catalogue de données par un Crawler](table-properties-crawler.md). 