IoT Hub işleri için sorgular
İşler , cihaz kümelerinde işlemleri yürütmek için bir yol sağlar. Her cihaz ikizi, onu hedefleyen işlerin bilgilerini jobs adlı bir koleksiyonda içerir. IoT Hub, işleri tüm ikiz bilgilerini içeren tek bir JSON belgesi olarak sorgulamanızı sağlar.
MyJobId adlı işin parçası olan örnek bir IoT hub cihaz ikizi aşağıda verilmiştir:
{
"deviceId": "myDeviceId",
"etag": "AAAAAAAAAAc=",
"tags": {
...
},
"properties": {
...
},
"jobs": [
{
"deviceId": "myDeviceId",
"jobId": "myJobId",
"jobType": "scheduleUpdateTwin",
"status": "completed",
"startTimeUtc": "2016-09-29T18:18:52.7418462",
"endTimeUtc": "2016-09-29T18:20:52.7418462",
"createdDateTimeUtc": "2016-09-29T18:18:56.7787107Z",
"lastUpdatedDateTimeUtc": "2016-09-29T18:18:56.8894408Z",
"outcome": {
"deviceMethodResponse": null
}
},
...
]
}
Şu anda bu koleksiyon, IoT Hub sorgu dilinde devices.jobs olarak sorgulanabilir.
Önemli
Şu anda cihaz ikizleri sorgulanırken jobs özelliği döndürülmüyor. Yani, içeren FROM devices
sorgular. jobs özelliğine yalnızca kullanan FROM devices.jobs
sorgularla doğrudan erişilebilir.
Örneğin, aşağıdaki sorgu tek bir cihazı etkileyen tüm işleri (geçmiş ve zamanlanmış) döndürür:
SELECT * FROM devices.jobs
WHERE devices.jobs.deviceId = 'myDeviceId'
Bu sorgunun döndürülen her işin cihaza özgü durumunu (ve muhtemelen doğrudan yöntem yanıtını) nasıl sağladığını unutmayın.
devices.jobs koleksiyonundaki tüm nesne özelliklerinde rastgele Boole koşullarıyla filtrelemek de mümkündür.
Örneğin, aşağıdaki sorgu belirli bir cihaz için Eylül 2016'da oluşturulan tüm tamamlanmış cihaz ikizi güncelleştirme işlerini alır:
SELECT * FROM devices.jobs
WHERE devices.jobs.deviceId = 'myDeviceId'
AND devices.jobs.jobType = 'scheduleUpdateTwin'
AND devices.jobs.status = 'completed'
AND devices.jobs.createdTimeUtc > '2016-09-01'
Tek bir işin cihaz başına sonuçlarını da alabilirsiniz.
SELECT * FROM devices.jobs
WHERE devices.jobs.jobId = 'myJobId'
İş sorgusu sınırlamaları
Sorgu ifadeleri en fazla 8192 karakter uzunluğunda olabilir.
Şu anda devices.jobs sorgular şunları desteklemez:
- Projeksiyonlar, bu nedenle yalnızca
SELECT *
mümkündür. - İş özelliklerine ek olarak cihaz ikizine başvuran koşullar (önceki bölüme bakın).
- Sayı, ort ve gruplandırma ölçütü gibi toplamalar.
Sonraki adımlar
- IoT Hub sorgu dilinin temellerini anlama