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