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 ANSI SQL syntaxiques suivantes afin de faciliter le travail avec des JSON objets imbriqués.
« . » Opérateur
Cet opérateur accède aux membres dans les JSON objets intégrés et fonctionne de manière identique à ANSI SQL 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 JSON propriété 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 *
joker dans ANSISQL. Il est utilisé uniquement dans la SELECT clause et crée un nouvel JSON objet contenant les données du message. Si la charge utile du message n'est pas JSON formatée, *
renvoie la totalité de la charge utile du message sous forme d'octets bruts. Par exemple :
SELECT * FROM 'topic/subtopic'
Appliquer une fonction à une valeur d'attribut
Voici un exemple de JSON charge utile susceptible d'ê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 JSON charge utile :
SELECT temp, md5(deviceid) AS hashed_id FROM topic/#
Le résultat de cette requête est l'JSONobjet suivant :
{ "temp": 54.98, "hashed_id": "e37f81fb397e595c4aeb5645b8cbbbd1" }