Sdílet prostřednictvím


Dotazy pro úlohy IoT Hub

Úlohy poskytují způsob, jak provádět operace na sadách zařízení. Každé dvojče zařízení obsahuje informace o úlohách, které na něj cílí, v kolekci označované jako úlohy. IoT Hub umožňuje dotazovat úlohy jako jeden dokument JSON obsahující všechny informace o dvojčatech.

Tady je ukázka dvojčete zařízení služby IoT Hub, které je součástí úlohy s názvem 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
            }
        },
        ...
    ]
}

V současné době je možné tuto kolekci dotazovat jako devices.jobs v dotazovacím jazyce IoT Hub.

Důležité

V současné době se při dotazování dvojčat zařízení nevrací vlastnost jobs. To znamená, že dotazy, které obsahují FROM devices. K vlastnosti jobs je možné přistupovat přímo pouze s dotazy pomocí FROM devices.jobs.

Například následující dotaz vrátí všechny úlohy (minulé i naplánované), které ovlivňují jedno zařízení:

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

Všimněte si, že tento dotaz poskytuje stav konkrétního zařízení (a případně přímou odpověď metody) každé vrácené úlohy.

Je také možné filtrovat s libovolnými logickými podmínkami pro všechny vlastnosti objektu v kolekci devices.jobs .

Následující dotaz například načte všechny dokončené úlohy aktualizace dvojčete zařízení vytvořené po září 2016 pro konkrétní zařízení:

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'

Můžete také načíst výsledky jedné úlohy podle zařízení.

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

Omezení dotazů úloh

Výrazy dotazu můžou mít maximální délku 8192 znaků.

Dotazy na devices.jobs v současné době nepodporují:

  • Projekce, proto je možné pouze SELECT * .
  • Podmínky, které kromě vlastností úlohy odkazují na dvojče zařízení (viz předchozí část).
  • Agregace, jako je počet, průměr a seskupení podle.

Další kroky