Abfragen für IoT Hub-Aufträge
Aufträge bieten eine Möglichkeit zum Ausführen von Vorgängen für Gerätegruppen. Jeder Gerätezwilling enthält die Informationen der Aufträge, die ihn als Ziel haben, in einer Sammlung namens jobs. In IoT Hub können Sie Aufträge als einzelnes JSON-Dokument abfragen, das alle Informationen zum Zwilling enthält.
Hier ist ein Beispiel für einen IoT Hub-Gerätezwilling, der Teil eines Auftrags namens myJobId ist:
{
"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
}
},
...
]
}
Diese Sammlung kann derzeit in der IoT Hub-Abfragesprache über devices.jobs abgefragt werden.
Wichtig
Die Eigenschaft „jobs“ wird zurzeit nicht zurückgegeben, wenn Gerätezwillinge abgefragt werden. Also Abfragen, die FROM devices
enthalten. Auf die „jobs“-Eigenschaft kann nur direkt mit Abfragen unter Verwendung von FROM devices.jobs
zugegriffen werden.
Die folgende Abfrage gibt beispielsweise alle Aufträge (vergangene und geplante) zurück, die sich auf ein einzelnes Gerät auswirken:
SELECT * FROM devices.jobs
WHERE devices.jobs.deviceId = 'myDeviceId'
Beachten Sie, wie diese Abfrage den gerätespezifischen Status (und möglicherweise die direkte Antwortmethode) jedes zurückgegebenen Auftrags bereitstellt.
Es ist auch möglich, mit beliebigen booleschen Bedingungen alle Objekteigenschaften in der Sammlung devices.jobs zu filtern.
Die folgende Abfrage ruft beispielsweise alle abgeschlossenen Aktualisierungsaufträge von Gerätezwillingen ab, die nach September 2016 für ein bestimmtes Gerät erstellt wurden:
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'
Sie können auch die Ergebnisse pro Gerät eines einzelnen Auftrags abrufen.
SELECT * FROM devices.jobs
WHERE devices.jobs.jobId = 'myJobId'
Einschränkungen für Auftragsabfragen
Abfrageausdrücke können maximal 8192 Zeichen lang sein.
Derzeit wird für Abfragen von devices.jobs Folgendes nicht unterstützt:
- Projektionen, sodass nur
SELECT *
möglich ist. - Bedingungen, die zusätzlich zu Auftragseigenschaften auf einen Gerätezwilling verweisen (siehe vorausgehender Abschnitt).
- Aggregationen, z. B. Zählen, Durchschnittsbildung, Gruppieren
Nächste Schritte
- Grundlegende Informationen zur IoT Hub-Abfragesprache