Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Estensioni JSON
È possibile usare le estensioni seguenti nella sintassi SQL ANSI per semplificare l'uso degli oggetti JSON nidificati.
Operatore "."
Questo operatore accede ai membri degli oggetti e delle funzioni JSON incorporati in modo identico a ANSI SQL e. JavaScript Per esempio:
SELECT foo.bar AS bar.baz FROM 'topic/subtopic'
seleziona il valore della proprietà bar
nell’oggetto foo
dal seguente payload del messaggio inviato all'argomento topic/subtopic
.
{ "foo": { "bar": "RED", "bar1": "GREEN", "bar2": "BLUE" } }
Se il nome di una proprietà JSON include caratteri quali il trattino o caratteri numerici, la notazione "punto" non funzionerà. Invece, devi utilizzare get function per estrarre il valore della proprietà.
In questo esempio viene inviato il seguente messaggio all'argomento iot/rules
.
{ "mydata": { "item2": { "0": { "my-key": "myValue" } } } }
Normalmente, il valore di my-key
verrebbe identificato come in questa query.
SELECT * from iot/rules WHERE mydata.item2.0.my-key= "myValue"
Tuttavia, poiché il nome della proprietà my-key
contiene un trattino e item2
contiene un carattere numerico, get function deve essere utilizzato come mostra la seguente query.
SELECT * from 'iot/rules' WHERE get(get(get(mydata,"item2"),"0"),"my-key") = "myValue"
Operatore *
Funziona nello stesso modo del carattere jolly *
in SQL ANSI. Viene usato solo nella clausola SELECT e crea un nuovo oggetto JSON contenente i dati del messaggio. Se il payload del messaggio non è in formato JSON, *
restituisce l'intero payload del messaggio come byte non elaborati. Ad esempio:
SELECT * FROM 'topic/subtopic'
Applicazione di un funzione a un valore di attributo
Di seguito è illustrato un esempio di payload JSON che potrebbe essere pubblicato da un dispositivo:
{ "deviceid" : "iot123", "temp" : 54.98, "humidity" : 32.43, "coords" : { "latitude" : 47.615694, "longitude" : -122.3359976 } }
L'esempio seguente applica una funzione a un valore di attributo in un payload JSON:
SELECT temp, md5(deviceid) AS hashed_id FROM topic/#
Il risultato di questa query è l'oggetto JSON seguente:
{ "temp": 54.98, "hashed_id": "e37f81fb397e595c4aeb5645b8cbbbd1" }