Kueri untuk pekerjaan IoT Hub

Jobs menyediakan cara untuk menjalankan operasi di set perangkat. Setiap perangkat kembar berisi informasi pekerjaan yang menargetkannya dalam koleksi yang disebut pekerjaan. IoT Hub memungkinkan Anda untuk mengkueri pekerjaan sebagai dokumen JSON tunggal yang berisi semua informasi kembar.

Berikut adalah contoh kembar perangkat hub IoT yang merupakan bagian dari pekerjaan yang disebut myJobId:

{
    "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
            }
        },
        ...
    ]
}

Saat ini, koleksi ini dapat dikueri devices.jobs dalam bahasa kueri IoT Hub.

Penting

Saat ini, properti pekerjaan tidak dikembalikan saat mengkueri perangkat kembar. Artinya, kueri yang berisi FROM devices. Properti pekerjaan hanya dapat diakses langsung dengan kueri menggunakan FROM devices.jobs.

Misalnya, kueri berikut mengembalikan semua pekerjaan (sebelumnya dan terjadwal) yang memengaruhi satu perangkat:

SELECT * FROM devices.jobs
  WHERE devices.jobs.deviceId = 'myDeviceId'

Perhatikan bagaimana kueri ini menyediakan status khusus perangkat (dan mungkin respons metode langsung) dari setiap pekerjaan yang dijalankan.

Dimungkinkan juga untuk memfilter dengan kondisi Boolean arbitrer pada semua properti objek dalam koleksi devices.jobs .

Misalnya, kueri berikut mengambil semua pekerjaan pembaruan kembar perangkat yang telah selesai yang dibuat setelah September 2016 untuk perangkat tertentu:

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'

Anda juga dapat mengambil hasil per perangkat dari satu pekerjaan.

SELECT * FROM devices.jobs
  WHERE devices.jobs.jobId = 'myJobId'

Batasan kueri pekerjaan

Ekspresi kueri bisa memiliki panjang maksimum 8192 karakter.

Saat ini, kueri di devices.jobs tidak mendukung:

  • Proyeksi, oleh karena itu SELECT * hanya mungkin.
  • Kondisi yang mengacu pada perangkat twin selain properti pekerjaan (lihat bagian sebelumnya).
  • Agregasi, seperti hitungan, rata-rata, dan kelompokkan menurut.

Langkah berikutnya