

Après mûre réflexion, nous avons décidé de mettre fin à Amazon Kinesis Data Analytics pour les applications SQL :

1. À compter du **1er septembre 2025,** nous ne fournirons aucune correction de bogue pour les applications Amazon Kinesis Data Analytics for SQL, car leur support sera limité, compte tenu de l'arrêt prochain.

2. À compter du **15 octobre 2025,** vous ne pourrez plus créer de nouvelles applications Kinesis Data Analytics for SQL.

3. Nous supprimerons vos candidatures à compter **du 27 janvier 2026**. Vous ne serez pas en mesure de démarrer ou d'utiliser vos applications Amazon Kinesis Data Analytics for SQL. Support ne sera plus disponible pour Amazon Kinesis Data Analytics for SQL à partir de cette date. Pour de plus amples informations, veuillez consulter [Arrêt d'Amazon Kinesis Data Analytics pour les applications SQL](discontinuation.md).

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.

# Travailler avec JSONPath
<a name="about-json-path"></a>

**Note**  
Après le 12 septembre 2023, vous ne pourrez plus créer de nouvelles applications en utilisant Kinesis Data Firehose comme source si vous n’utilisez pas déjà Kinesis Data Analytics pour SQL. Pour plus d’informations, consultez [Limites ](https://docs.aws.amazon.com//kinesisanalytics/latest/dev/limits.html).

JSONPath est une méthode standardisée pour interroger les éléments d'un objet JSON. JSONPath utilise des expressions de chemin pour parcourir les éléments, les éléments imbriqués et les tableaux dans un document JSON. Pour de plus amples informations sur JSON, veuillez consulter [Introducing JSON](http://www.json.org/).

Amazon Kinesis Data Analytics JSONPath utilise des expressions dans le schéma source de l'application pour identifier les éléments de données d'une source de streaming contenant des données au format JSON.

Pour plus d'informations sur la façon de mapper les données en streaming sur le flux d'entrée de l'application, consultez [Mappage d'éléments d'une source de streaming à des colonnes d'entrée SQL](sch-mapping.md).

## Accès aux éléments JSON avec JSONPath
<a name="about-json-path-elements"></a>

Vous trouverez ci-dessous comment utiliser des JSONPath expressions pour accéder à différents éléments de données au format JSON. Pour les exemples de cette section, supposons que le flux source contient l’enregistrement JSON suivant :

```
{
  "customerName":"John Doe",
  "address":
  {
    "streetAddress":
    [
      "number":"123",
      "street":"AnyStreet"
    ],
    "city":"Anytown"
  }
  "orders":
  [
    { "orderId":"23284", "itemName":"Widget", "itemPrice":"33.99" },
    { "orderId":"63122", "itemName":"Gadget", "itemPrice":"22.50" },
    { "orderId":"77284", "itemName":"Sprocket", "itemPrice":"12.00" }
  ]
}
```

### Accès à des éléments JSON
<a name="about-json-path-firstlevel"></a>

Pour interroger un élément dans des données JSON à l'aide de JSONPath, utilisez la syntaxe suivante. Ici, `$` représente la racine de la hiérarchie des données et `elementName` est le nom du nœud de l'élément à interroger.

```
$.elementName
```

L'expression suivante interroge l'élément `customerName` de l'exemple JSON précédent.

```
$.customerName
```

L'expression précédente retourne les informations suivantes à partir de l'enregistrement JSON précédent.

```
John Doe
```

**Note**  
Les expressions de chemin sont sensibles à la casse. L'expression `$.customername` retourne `null` à partir de l'exemple JSON précédent.

**Note**  
Si aucun élément n'apparaît à l'emplacement spécifié dans l'expression de chemin, l'expression retourne `null`. L'expression suivante retourne `null` à partir de l'exemple JSON précédent, car il n'y a aucun élément correspondant.  

```
$.customerId
```

### Accès aux éléments JSON imbriqués
<a name="about-json-path-nested"></a>

Pour interroger un élément JSON imbriqué, utilisez la syntaxe suivante.

```
$.parentElement.element
```

L'expression suivante interroge l'élément `city` de l'exemple JSON précédent.

```
$.address.city
```

L'expression précédente retourne les informations suivantes à partir de l'enregistrement JSON précédent.

```
Anytown
```

Vous pouvez interroger d'autres niveaux de sous-éléments à l'aide de la syntaxe suivante.

```
$.parentElement.element.subElement
```

L'expression suivante interroge l'élément `street` de l'exemple JSON précédent.

```
$.address.streetAddress.street
```

L'expression précédente retourne les informations suivantes à partir de l'enregistrement JSON précédent.

```
AnyStreet
```

### Accès aux tableaux
<a name="about-json-path-arrays"></a>

Vous pouvez accéder aux données dans un tableau JSON de la manière suivante :
+ Récupérer tous les éléments du tableau sous la forme d’une ligne unique.
+ Récupérer chaque élément du tableau sous la forme d’une ligne distincte.

#### Récupérer tous les éléments du tableau dans une ligne unique.
<a name="about-json-path-arrays-row"></a>

Pour interroger tout le contenu d'un tableau sur une seule ligne, utilisez la syntaxe suivante.

```
$.arrayObject[0:]
```

L'expression suivante interroge tout le contenu de l'élément `orders` de l'exemple JSON précédent utilisé dans cette section. Elle retourne le contenu du tableau dans une seule colonne et sur une seule ligne.

```
$.orders[0:]
```

L'expression précédente retourne les éléments suivants de l'exemple JSON utilisé dans cette section.

```
[{"orderId":"23284","itemName":"Widget","itemPrice":"33.99"},{"orderId":"61322","itemName":"Gadget","itemPrice":"22.50"},{"orderId":"77284","itemName":"Sprocket","itemPrice":"12.00"}]
```

#### Récupérez tous les éléments dans un tableau dans des lignes séparées
<a name="about-json-path-arrays-separate"></a>

Pour interroger chaque élément d'un tableau sur une ligne distincte, utilisez la syntaxe suivante.

```
$.arrayObject[0:].element
```

L'expression suivante interroge les éléments `orderId` de l'exemple JSON précédent et retourne chaque élément du tableau sur une ligne distincte.

```
$.orders[0:].orderId
```

L'expression précédente retourne les informations suivantes à partir de l'enregistrement JSON précédent, chaque élément de données étant retourné sur une ligne distincte.


****  

|  | 
| --- |
|  23284  | 
|  63122  | 
|  77284  | 

**Note**  
Si un schéma interrogeant des éléments de tableau comporte des expressions interrogeant des éléments autres, ces derniers sont répétés pour chaque élément du tableau. Par exemple, supposons qu'un schéma de l'exemple JSON précédent inclut les expressions suivantes :  
\$1.customerName
\$1.orders[0:].orderId
Dans ce cas, les lignes de données retournées de l'exemple d'élément de flux d'entrée ressemble à ce qui suit, l'élément `name` étant répété pour chaque élément `orderId`.  


****  

|  |  | 
| --- |--- |
|  John Doe  |  23284  | 
|  Jean Dupont  |  63122  | 
|  Jean Dupont  |  77284  | 

**Note**  
Les limitations suivantes s’appliquent aux expressions de tableau dans Amazon Kinesis Data Analytics :  
Seul un niveau de déréférencement est pris en charge dans une expression de tableau. Le format d'expression suivant n'est pas pris en charge.  

  ```
  $.arrayObject[0:].element[0:].subElement
  ```
Seul un tableau peut être mis à plat dans un schéma. Plusieurs tableaux peuvent être référencés/retournés sur une ligne contenant tous les éléments du tableau. Cependant, seul un tableau peut avoir chacun de ses éléments retournés sur des lignes distinctes.  
Un schéma contenant des éléments au format suivant est valide. Ce format retourne le contenu du second tableau dans une seule colonne, répétée pour chaque élément du premier tableau.  

  ```
  $.arrayObjectOne[0:].element
  $.arrayObjectTwo[0:]
  ```
Un schéma contenant des éléments au format suivant n'est pas valide.  

  ```
  $.arrayObjectOne[0:].element
  $.arrayObjectTwo[0:].element
  ```

## Autres considérations
<a name="about-json-path-other"></a>

Les considérations supplémentaires à prendre en compte pour travailler avec JSONPath sont les suivantes :
+ Si aucun élément individuel n'accède à aucun tableau dans les JSONPath expressions du schéma de l'application, une seule ligne est créée dans le flux d'entrée de l'application pour chaque enregistrement JSON traité. 
+ Lorsqu'un tableau est mis à plat (c’est-à-dire que ses éléments sont retournés sous la forme de lignes individuelles), tous les éléments manquants retournent une valeur nulle créée dans le flux intégré à l'application. 
+ Un tableau est toujours mis à plat sur une ligne minimum. Si aucune valeur n'est retournée (c'est-à-dire, si le tableau est vide ou si aucun de ses éléments n'est interrogé), une seule ligne comportant toutes les valeurs nulles est retournée.

  L'expression suivante retourne les enregistrements de l'exemple JSON précédent qui ont une valeur nulle, car il n'existe aucun élément correspondant à l'emplacement spécifié.

  ```
  $.orders[0:].itemId
  ```

  L'expression précédente retourne les éléments suivants de l'exemple JSON précédent.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/kinesisanalytics/latest/dev/about-json-path.html)

## Rubriques connexes
<a name="about-json-path.Related"></a>
+ [Présentation de JSON](http://www.json.org/)