

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.

# Référence de SerDe propriété Amazon Ion
<a name="ion-serde-using-ion-serde-properties"></a>

Cette rubrique contient des informations sur les SerDe propriétés des `CREATE TABLE` instructions dans Athena. Pour plus d'informations et des exemples d'utilisation des SerDe propriétés Amazon Ion, consultez les [SerDe propriétés](https://github.com/amzn/ion-hive-serde/blob/master/docs/serde-properties.md) dans la SerDe documentation Amazon Ion Hive sur [GitHub](https://github.com/amzn/ion-hive-serde/tree/master/docs).

## Comment spécifier les SerDe propriétés d'Amazon Ion
<a name="ion-serde-specifying-ion-serde-properties"></a>

Pour spécifier les propriétés d'Amazon Ion Hive SerDe dans votre `CREATE TABLE` relevé, utilisez la `WITH SERDEPROPERTIES` clause. Comme il `WITH SERDEPROPERTIES` s'agit d'un sous-champ de la `ROW FORMAT SERDE` clause, vous devez d'abord spécifier `ROW FORMAT SERDE` le chemin de SerDe classe Amazon Ion Hive, comme le montre la syntaxe suivante.

```
...
ROW FORMAT SERDE
 'com.amazon.ionhiveserde.IonHiveSerDe'
WITH SERDEPROPERTIES (
 'property' = 'value',
 'property' = 'value',
...
)
```

Remarque : bien que la clause `ROW FORMAT SERDE` est obligatoire si vous voulez utiliser `WITH SERDEPROPERTIES`, vous pouvez utiliser `STORED AS ION` ou le plus long `INPUTFORMAT` et la syntaxe `OUTPUTFORMAT` pour spécifier le format Amazon Ion.

## SerDe Propriétés d'Amazon Ion
<a name="ion-serde-ion-serde-properties"></a>

Vous trouverez ci-dessous les SerDe propriétés Amazon Ion qui peuvent être utilisées dans les `CREATE TABLE` instructions d'Athena.

**ion.codage**  
Facultatif  
Valeur par défaut : `BINARY`  
Valeurs: `BINARY`, `TEXT`  
Cette propriété déclare si les nouvelles valeurs ajoutées sont sérialisées en tant que [binaire Amazon Ion](https://amzn.github.io/ion-docs/docs/binary.html) ou au format texte Amazon Ion.  
L'exemple de SerDe propriété suivant indique le format de texte Amazon Ion.  

```
'ion.encoding' = 'TEXT'
```

**ion.fail\$1on\$1overflow**  
Facultatif  
Valeur par défaut : `true`  
Valeurs: `true`, `false`  
Amazon Ion autorise des types numériques de taille arbitraire, tandis que Hive ne le fait pas. Par défaut, elle SerDe échoue si la valeur Amazon Ion ne correspond pas à la colonne Hive, mais vous pouvez utiliser l'option de `fail_on_overflow` configuration pour laisser la valeur déborder au lieu d'échouer.  
Cette propriété peut être définie au niveau de la table ou de la colonne. Pour le spécifier au niveau de la table, spécifiez `ion.fail_on_overflow` comme dans l'exemple suivant. Cela définit le comportement par défaut de toutes les colonnes.  

```
'ion.fail_on_overflow' = 'true'
```
Pour contrôler une colonne spécifique, spécifiez le nom de la colonne entre `ion` et `fail_on_overflow`, délimité par des points, comme dans l'exemple suivant.  

```
'ion.<column>.fail_on_overflow' = 'false'
```

**ion.path\$1extractor.case\$1sensitive**  
Facultatif  
Valeur par défaut : `false`  
Valeurs: `true`, `false`  
Détermine s'il convient de traiter les noms de champs Amazon Ion comme sensibles à la casse. Lorsque`false`, l'analyse des SerDe noms de champs Amazon Ion n'est pas prise en compte.  
Par exemple, supposons que vous ayez un schéma de table Hive qui définit un champ `alias` en minuscules et un document Amazon Ion avec un champ `alias` et un champ `ALIAS`, comme dans l'exemple suivant.  

```
-- Hive Table Schema
alias: STRING

-- Amazon Ion Document
{ 'ALIAS': 'value1'} 
{ 'alias': 'value2'}
```
L'exemple suivant montre les SerDe propriétés et le tableau extrait obtenu lorsque la distinction majuscules/minuscules est définie sur `false` :  

```
-- Serde properties
'ion.alias.path_extractor' = '(alias)'
'ion.path_extractor.case_sensitive' = 'false'

--Extracted Table
| alias    |
|----------|
| "value1" |
| "value2" |
```
L'exemple suivant montre les SerDe propriétés et le tableau extrait obtenu lorsque la distinction majuscules/minuscules est définie sur `true` :  

```
-- Serde properties
'ion.alias.path_extractor' = '(alias)'
'ion.path_extractor.case_sensitive' = 'true'

--Extracted Table
| alias    |
|----------|
| "value2" |
```
Dans le second cas, la valeur `value1` pour le champ `ALIAS` est ignorée lorsque la sensibilité à la casse est définie sur `true` et l'extracteur de chemin est spécifié comme suit : `alias`.

**ion. *<column>*.path\$1extractor**  
Facultatif  
Valeur par défaut : NA  
Valeurs : chaîne avec chemin de recherche  
Crée un extracteur de chemin avec le chemin de recherche spécifié pour la colonne donnée. Les extracteurs de chemins mappent les champs Amazon Ion aux colonnes Hive. Si aucun extracteur de chemin n'est spécifié, Athena crée dynamiquement des extracteurs de chemin au moment de l'exécution en fonction des noms de colonnes.  
L'exemple d'extracteur de chemin suivant mappe le champ `example_ion_field` vers la colonne `example_hive_column`.  

```
'ion.example_hive_column.path_extractor' = '(example_ion_field)'
```
Pour plus d'informations sur les extracteurs de chemin d'accès et les chemins de recherche, consultez [Utilisation des extracteurs de chemin](ion-serde-using-path-extractors.md).

**ion.timestamp.serialization\$1offset**  
Facultatif  
Valeur par défaut : `'Z'`  
Valeurs : `OFFSET`, où `OFFSET ` est représenté par `<signal>hh:mm`. Exemples de valeurs : `01:00`, `+01:00`, `-09:30`, `Z` (UTC, identique à 00:00)  
Contrairement aux [horodatages](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-timestamp) Apache Hive qui n'ont pas de fuseau horaire intégré et sont stockés sous forme de décalage par rapport à l'époque UNIX, les horodatages Amazon Ion ont un décalage. Utilisez cette propriété pour spécifier le décalage lorsque vous sérialisez sur Amazon Ion.  
L'exemple suivant montre comment ajouter un décalage d'une heure.  

```
'ion.timestamp.serialization_offset' = '+01:00'       
```

**ion.serialize\$1null**  
Facultatif  
Valeur par défaut : `OMIT`  
Valeurs : `OMIT`, `UNTYPED`, `TYPED`  
L'Amazon Ion SerDe peut être configuré pour sérialiser ou omettre les colonnes contenant des valeurs nulles. Vous pouvez choisir d'écrire des valeurs nulles fortement typées (`TYPED`) ou des valeurs nulles non typées (`UNTYPED`). Les valeurs null fortement typées sont déterminées en fonction du mappage de type Amazon Ion vers Hive par défaut.  
L'exemple suivant spécifie des valeurs nulles fortement typées.  

```
'ion.serialize_null'='TYPED'
```

**ion.ignore\$1malformed**  
Facultatif  
Valeur par défaut : `false`  
Valeurs: `true`, `false`  
Lorsque`true`, ignore les entrées mal formées ou le fichier entier s'il n' SerDe est pas en mesure de le lire. Pour plus d'informations, consultez la section [Ignorer les malformés](https://github.com/amzn/ion-hive-serde/blob/master/docs/serde-properties.md#ignore-malformed) dans la documentation sur GitHub.

**ion. *<column>*.serialize\$1as**  
Facultatif  
Par défaut : type par défaut de la colonne.  
Valeurs : chaîne contenant le type Amazon Ion  
Détermine le type de données Amazon Ion dans lequel une valeur est sérialisée. Étant donné que les types Amazon Ion et Hive n'ont pas toujours de mappage direct, quelques types Hive ont plusieurs types de données valides pour la sérialisation. Pour sérialiser les données en tant que type de données autre que par défaut, utilisez cette propriété. Pour plus d'informations sur le mappage des types, consultez la page de [mappage des types](https://github.com/amzn/ion-hive-serde/blob/master/docs/type-mapping.md) Amazon Ion sur GitHub.  
Par défaut, les colonnes binaires Hive sont sérialisées en tant que blobs Amazon Ion, mais elles peuvent également être sérialisées au format [clob Amazon Ion](https://amzn.github.io/ion-docs/docs/stringclob.html#ion-clob) (grand objet de caractères). L'exemple suivant montre comment sérialiser la colonne `example_hive_binary_column` au format clob.  

```
'ion.example_hive_binary_column.serialize_as' = 'clob'       
```