Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Extensiones JSON
Puede utilizar las extensiones siguientes de la sintaxis ANSI SQL para facilitar el trabajo con objetos JSON anidados.
Operador “.”
Este operador accede a los miembros de los objetos JSON incrustados y funciona de forma idéntica a ANSI SQL y. JavaScript Por ejemplo:
SELECT foo.bar AS bar.baz FROM 'topic/subtopic'
selecciona el valor de la propiedad bar
de la cosa foo
de la carga del siguiente mensaje enviado al tema topic/subtopic
.
{ "foo": { "bar": "RED", "bar1": "GREEN", "bar2": "BLUE" } }
Si el nombre de una propiedad JSON incluye un guion o caracteres numéricos, la notación “punto” no funcionará. En su lugar, debe utilizar la función get para extraer el valor de la propiedad.
En este ejemplo, se envía el siguiente mensaje al tema iot/rules
.
{ "mydata": { "item2": { "0": { "my-key": "myValue" } } } }
Normalmente, el valor de my-key
se identificaría como en esta consulta.
SELECT * from iot/rules WHERE mydata.item2.0.my-key= "myValue"
Sin embargo, dado que el nombre de la propiedad my-key
contiene un guion y item2
un carácter numérico, se debe utilizar la función get, tal como se muestra en la siguiente consulta.
SELECT * from 'iot/rules' WHERE get(get(get(mydata,"item2"),"0"),"my-key") = "myValue"
Operador *
Funciona igual que el comodín *
en ANSI SQL. Solo se utiliza en la cláusula SELECT y crea un objeto JSON nuevo que contiene los datos del mensaje. Si la carga del mensaje no tiene el formato JSON, *
devuelve toda la carga del mensaje como bytes sin procesar. Por ejemplo:
SELECT * FROM 'topic/subtopic'
Aplicación de una función a un valor de atributo
A continuación, se muestra un ejemplo de carga JSON que podría publicar un dispositivo:
{ "deviceid" : "iot123", "temp" : 54.98, "humidity" : 32.43, "coords" : { "latitude" : 47.615694, "longitude" : -122.3359976 } }
En el ejemplo siguiente se aplica una función a un valor de atributo de una carga JSON:
SELECT temp, md5(deviceid) AS hashed_id FROM topic/#
El resultado de esta consulta es el objeto JSON siguiente:
{ "temp": 54.98, "hashed_id": "e37f81fb397e595c4aeb5645b8cbbbd1" }