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 devicessorgular. jobs özelliğine yalnızca kullanan FROM devices.jobssorgularla 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