Dela via


Frågor om IoT Hub jobb

Jobb är ett sätt att köra åtgärder på uppsättningar med enheter. Varje enhetstvilling innehåller information om de jobb som riktar sig mot den i en samling som kallas jobb. IoT Hub kan du köra frågor mot jobb som ett enda JSON-dokument som innehåller all tvillinginformation.

Här är ett exempel på en IoT Hub-enhetstvilling som ingår i ett jobb med namnet 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
            }
        },
        ...
    ]
}

För närvarande kan den här samlingen frågas som devices.jobs på det IoT Hub frågespråket.

Viktigt

För närvarande returneras inte jobbegenskapen vid frågor mot enhetstvillingar. Det vill: frågor som innehåller FROM devices. Jobbegenskapen kan bara nås direkt med frågor med hjälp av FROM devices.jobs.

Följande fråga returnerar till exempel alla jobb (tidigare och schemalagda) som påverkar en enskild enhet:

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

Observera hur den här frågan ger enhetsspecifik status (och eventuellt direktmetodsvar) för varje jobb som returneras.

Det går också att filtrera med godtyckliga booleska villkor för alla objektegenskaper i devices.jobs samling.

Följande fråga hämtar till exempel alla slutförda enhetstvillingsuppdateringsjobb som skapades efter september 2016 för en specifik enhet:

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'

Du kan också hämta resultatet per enhet för ett enda jobb.

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

Frågebegränsningar för jobb

Frågeuttryck kan ha en maximal längd på 8 192 tecken.

För närvarande stöder inte frågor på devices.jobs :

  • Prognoser är därför bara SELECT * möjliga.
  • Villkor som refererar till enhetstvillingen utöver jobbegenskaper (se föregående avsnitt).
  • Sammansättningar, till exempel antal, genomsnitt och gruppera efter.

Nästa steg