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.
Extensions JSON
Vous pouvez utiliser les extensions suivantes de la syntaxe SQL ANSI pour faciliter l’utilisation d’objets JSON imbriqués.
« . » Opérateur
Cet opérateur accède aux membres dans les objets JSON intégrés et fonctionne de la même manière que le SQL ANSI et. JavaScript Par exemple :
SELECT foo.bar AS bar.baz FROM 'topic/subtopic'
sélectionne la valeur de la propriété bar
dans l’objet foo
à partir de la charge utile du message suivant envoyé à la rubrique topic/subtopic
.
{ "foo": { "bar": "RED", "bar1": "GREEN", "bar2": "BLUE" } }
Si le nom d’une propriété JSON inclut un trait d’union ou des caractères numériques, la notation « point » ne fonctionnera pas. Vous devez plutôt utiliser la fonction get pour extraire la valeur de la propriété.
Dans cet exemple, le message suivant est envoyé dans la rubrique iot/rules
.
{ "mydata": { "item2": { "0": { "my-key": "myValue" } } } }
Normalement, la valeur de my-key
serait identifiée comme dans cette requête.
SELECT * from iot/rules WHERE mydata.item2.0.my-key= "myValue"
Toutefois, étant donné que le nom de la propriété my-key
contient un trait d’union et item2
un caractère numérique, la fonction get doit être utilisée comme le montre la requête suivante.
SELECT * from 'iot/rules' WHERE get(get(get(mydata,"item2"),"0"),"my-key") = "myValue"
*
Opérateur
Cela fonctionne de la même manière que le caractère générique *
dans SQL ANSI. Il est utilisé dans la clause SELECT uniquement et crée un nouvel objet JSON contenant les données du message. Si la charge utile du message n'est pas au format JSON, *
renvoie la charge utile du message entier sous la forme d'octets bruts. Par exemple :
SELECT * FROM 'topic/subtopic'
Appliquer une fonction à une valeur d'attribut
Voici un exemple de charge utile JSON qui peut être publiée par un appareil :
{ "deviceid" : "iot123", "temp" : 54.98, "humidity" : 32.43, "coords" : { "latitude" : 47.615694, "longitude" : -122.3359976 } }
L'exemple suivant applique une fonction à une valeur d'attribut dans une charge utile JSON :
SELECT temp, md5(deviceid) AS hashed_id FROM topic/#
Le résultat de cette requête est l'objet JSON suivant :
{ "temp": 54.98, "hashed_id": "e37f81fb397e595c4aeb5645b8cbbbd1" }