

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.

# Types pris en charge pour la projection de partition
<a name="partition-projection-supported-types"></a>

Une table peut avoir n'importe quelle combinaison de types de colonnes de partition `enum`, `integer`, `date,` ou `injected`.

## Type d'énumération
<a name="partition-projection-enum-type"></a>

Utilisez le `enum` type pour les colonnes de partition dont les valeurs sont membres d'un ensemble énuméré (par exemple, des codes d'aéroport ou Régions AWS).

Définissez les propriétés de partition dans le tableau comme suit :


****  

| Nom de la propriété | Exemples de valeur | Description | 
| --- | --- | --- | 
| projection.{{columnName}}.type | `enum` | Obligatoire. Type de projection à utiliser pour la colonne{{columnName}}. La valeur doit être enum (insensible à la casse) pour signaler l'utilisation du type énumération. L'espace de début et de fin est autorisé. | 
| projection.{{columnName}}.values | `A,B,C,D,E,F,G,Unknown` | Obligatoire. Liste séparée par des virgules des valeurs de partition énumérées pour la colonne. {{columnName}} Tout espace est considéré comme faisant partie d'une valeur d'énumération. | 

**Note**  
En tant que bonne pratique, nous recommandons de limiter l'utilisation des projections de partitions basées sur `enum` à quelques dizaines ou moins. Bien qu'il n'existe aucune limite spécifique pour les `enum` projections, la taille totale des métadonnées de votre table ne peut pas dépasser la AWS Glue limite d'environ 1 Mo lors de la compression gzip. Notez que cette limite est partagée entre les éléments clés de votre table, comme les noms de colonnes, l'emplacement, le format de stockage, etc. Si vous utilisez plus de quelques dizaines d'unités uniques IDs dans votre `enum` projection, envisagez une autre approche, par exemple en répartissant un plus petit nombre de valeurs uniques dans un champ de substitution. En échangeant la cardinalité, vous pouvez contrôler le nombre de valeurs uniques dans votre champ `enum`. 

## Type d'entier
<a name="partition-projection-integer-type"></a>

Utilisez le type entier pour les colonnes de partition dont les valeurs possibles peuvent être interprétées comme des entiers dans une plage définie. Les colonnes d'entier projetées sont actuellement limitées à la plage d'un entier Java long signé (-263 à 263-1 inclus).


****  

| Nom de la propriété | Exemples de valeur | Description | 
| --- | --- | --- | 
| projection.{{columnName}}.type | `integer` | Obligatoire. Type de projection à utiliser pour la colonne{{columnName}}. La valeur doit être integer (insensible à la casse) pour signaler l'utilisation du type entier. L'espace de début et de fin est autorisé. | 
| projection.{{columnName}}.range | `0,10`<br />`-1,8675309`<br />`0001,9999` | Obligatoire. Liste à deux éléments séparés par des virgules qui fournit les valeurs de plage minimale et maximale à renvoyer par les requêtes sur la colonne. {{columnName}} Notez que les valeurs doivent être séparées par une virgule, et non par un tiret. Ces valeurs sont inclusives, peuvent être négatives et peuvent contenir des zéros de début. L'espace de début et de fin est autorisé. | 
| projection.{{columnName}}.interval | `1`<br />`5` | Facultatif. Un entier positif qui indique l'intervalle entre les valeurs de partition successives de la colonne{{columnName}}. Par exemple, la valeur range « 1,3 » avec une valeur interval correspondant à « 1 » génère les valeurs 1, 2 et 3. La même valeur range avec une valeur interval correspondant à « 2 » génère les valeurs 1 et 3 et ignore 2. L'espace de début et de fin est autorisé. La valeur par défaut est 1. | 
| projection.{{columnName}}.digits | `1`<br />`5` | Facultatif. Un entier positif qui indique le nombre de chiffres à inclure dans la représentation finale de la valeur de partition pour la colonne{{columnName}}. Par exemple, la valeur range « 1,3 » avec une valeur digits correspondant à « 1 » génère les valeurs 1, 2 et 3. La même valeur range avec une valeur digits correspondant à « 2 » génère les valeurs 01, 02 et 03. L'espace de début et de fin est autorisé. La valeur par défaut est un nombre non statique de chiffres et ne contient aucun zéro de début. | 

## Type de date
<a name="partition-projection-date-type"></a>

Utilisez le type de date pour les colonnes de partition dont les valeurs sont interprétables comme des dates (avec des heures facultatives) dans une plage définie.

**Important**  
Les colonnes de date projetée sont générées en temps universel coordonné (UTC) au moment de l'exécution de la requête.


****  

| Nom de la propriété | Exemples de valeur | Description | 
| --- | --- | --- | 
| projection.{{columnName}}.type | `date` | Obligatoire. Type de projection à utiliser pour la colonne{{columnName}}. La valeur doit être date (insensible à la casse) pour signaler l'utilisation du type date. L'espace de début et de fin est autorisé. | 
| projection.{{columnName}}.range | `201701,201812`<br />`01-01-2010,12-31-2018`<br />`NOW-3YEARS,NOW`<br />`201801,NOW+1MONTH` | Obligatoire. Liste à deux éléments séparés par des virgules qui fournit les `range` valeurs minimale et maximale de la colonne. {{columnName}} Ces valeurs sont inclusives et peuvent utiliser n'importe quel format compatible avec les types de date Java `java.time.*`. Les valeurs minimales et maximales doivent utiliser le même format. Le format spécifié dans la propriété `.format` doit correspondre au format utilisé pour ces valeurs.<br />Cette colonne peut également contenir des chaînes de date relatives, formatées dans ce modèle d'expression régulière :<br />`\s*NOW\s*(([\+\-])\s*([0-9]+)\s*(YEARS?\|MONTHS?\|WEEKS?\|DAYS?\|HOURS?\|MINUTES?\|SECONDS?)\s*)?`<br />Les espaces sont autorisés, mais les littéraux de type date sont considérés comme faisant partie des chaînes de date elles-mêmes. | 
| projection.{{columnName}}.format | `yyyyMM`<br />`dd-MM-yyyy`<br />`dd-MM-yyyy-HH-mm-ss` | Obligatoire. Chaîne de format de date basée sur le format de date Java [DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html). Il peut s'agir de n'importe quel type Java.time.\* pris en charge. | 
| projection.{{columnName}}.interval | `1`<br />`5` | Un entier positif qui indique l'intervalle entre les valeurs de partition successives d'une colonne{{columnName}}. Par exemple, la valeur `range` `2017-01,2018-12` avec une valeur `interval` correspondant à `1` et une valeur `interval.unit` correspondant à `MONTHS` génère les valeurs 2017-01, 2017-02, 2017-03, etc. La même valeur `range` avec une valeur `interval` correspondant à `2` et une valeur `interval.unit` correspondant `MONTHS` génère les valeurs 2017-01, 2017-03, 2017-05, etc. L'espace de début et de fin est autorisé.<br />Lorsque les dates fournies sont précises à un jour ou à un mois, la valeur `interval` est facultative, et la valeur par défaut est 1 jour ou 1 mois, respectivement. Dans le cas contraire, la valeur `interval` est obligatoire. | 
| projection.{{columnName}}.interval.unit | `YEARS`<br />`MONTHS`<br />`WEEKS`<br />`DAYS`<br />`HOURS`<br />`MINUTES`<br />`SECONDS`<br />`MILLIS` | Un mot d'unité de temps qui représente la forme sérialisée de a. [ChronoUnit](https://docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoUnit.html) Les valeurs possibles sont `YEARS`, `MONTHS`, `WEEKS`, `DAYS`, `HOURS`, `MINUTES`, `SECONDS` ou `MILLIS`. Ces valeurs ne sont pas sensibles à la casse.<br />Lorsque les dates fournies sont précises à un jour ou à un mois, la valeur `interval.unit` est facultative, et la valeur par défaut est 1 jour ou 1 mois, respectivement. Dans le cas contraire, la valeur `interval.unit` est obligatoire. | 

**Example : partitionnement par mois**  
L’exemple de configuration de table ci-dessous partitionne les données par mois de 2015 à aujourd’hui.  

```
'projection.month.type'='date', 
'projection.month.format'='yyyy-MM', 
'projection.month.interval'='1', 
'projection.month.interval.unit'='MONTHS', 
'projection.month.range'='2015-01,NOW', 
...
```

## Type injecté
<a name="partition-projection-injected-type"></a>

Utilisez le type injecté pour les colonnes de partition avec des valeurs possibles qui ne peuvent pas être générées de manière procédurale dans une plage logique, mais qui sont fournies dans la clause `WHERE` d'une requête en tant que valeur unique.

Il est important de garder à l'esprit les points suivants :
+ Les requêtes au niveau des colonnes injectées échouent si aucune expression de filtre n'est fournie pour chaque colonne injectée.
+ Les requêtes comportant plusieurs valeurs pour une expression de filtre sur une colonne injectée réussissent uniquement si les valeurs sont disjointes.
+ Seules les colonnes de type `string` sont prises en charge.
+ Lorsque vous utilisez la clause `WHERE IN` avec une colonne de partition injectée, vous pouvez spécifier au maximum 1 000 valeurs dans la liste `IN`. Pour interroger un jeu de données contenant plus de 1 000 partitions pour une colonne injectée, divisez la requête en plusieurs requêtes de plus petite taille contenant chacune jusqu’à 1 000 valeurs dans la clause `WHERE IN`, puis agrégez les résultats.


****  

| Nom de la propriété | Value | Description | 
| --- | --- | --- | 
| projection.{{columnName}}.type | `injected` | Obligatoire. Type de projection à utiliser pour la colonne{{columnName}}. Seul le type string est pris en charge. La valeur spécifiée doit être injected (insensible à la casse). L'espace de début et de fin est autorisé. | 

Pour de plus amples informations, veuillez consulter [Quand utiliser le type de projection `injected`](partition-projection-dynamic-id-partitioning.md#partition-projection-injection).