Après mûre réflexion, nous avons décidé de mettre fin à Amazon Kinesis Data Analytics SQL pour les applications en deux étapes :
1. À compter du 15 octobre 2025, vous ne pourrez plus créer de nouveaux Kinesis Data Analytics SQL pour les applications.
2. Nous supprimerons vos candidatures à compter du 27 janvier 2026. Vous ne serez pas en mesure de démarrer ou d'utiliser votre Amazon Kinesis Data Analytics SQL pour les applications. Support ne sera plus disponible pour Amazon Kinesis Data Analytics à partir SQL de cette date. Pour de plus amples informations, veuillez consulter Arrêt d'Amazon Kinesis Data Analytics SQL pour applications.
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.
Utilisation de JSONPath
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 .
JSONPath est une méthode normalisée d'interrogation des é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 d'un document JSON. Pour de plus amples informations sur JSON, veuillez consulter Introducing JSON
Amazon Kinesis Data Analytics utilise des expressions JSONPath dans le schéma source de l’application pour identifier les éléments de données dans une source de streaming qui contient 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.
Accès à des éléments JSON avec JSONPath
Vous découvrirez ci-dessous comment utiliser des expressions JSONPath pour accéder à divers é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
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
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
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.
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
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 :
-
$.customerName
-
$.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
.
Jean Dupont |
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
Voici quelques considérations supplémentaires concernant l'utilisation de JSONPath :
-
Si aucun élément de l'expression JSONPath n'accède aux tableaux dans le schéma d’application, une 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.
null
null
null