Zapytania dotyczące zadań IoT Hub

Zadania umożliwiają wykonywanie operacji na zestawach urządzeń. Każda reprezentacja urządzenia zawiera informacje o zadaniach docelowych w kolekcji o nazwie zadania. IoT Hub umożliwia wykonywanie zapytań dotyczących zadań jako pojedynczego dokumentu JSON zawierającego wszystkie informacje o bliźniaczej reprezentacji.

Oto przykładowa bliźniacza reprezentacja urządzenia centrum IoT Hub, która jest częścią zadania o nazwie 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
            }
        },
        ...
    ]
}

Obecnie ta kolekcja jest wysyłana do zapytań jako devices.jobs w języku zapytań IoT Hub.

Ważne

Obecnie właściwość zadań nie jest zwracana podczas wykonywania zapytań dotyczących bliźniaczych reprezentacji urządzenia. Oznacza to, że zapytania zawierające .FROM devices Dostęp do właściwości zadań można uzyskać tylko za pomocą zapytań przy użyciu polecenia FROM devices.jobs.

Na przykład następujące zapytanie zwraca wszystkie zadania (przeszłości i zaplanowane), które mają wpływ na jedno urządzenie:

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

Zwróć uwagę, jak to zapytanie zapewnia stan specyficzny dla urządzenia (i ewentualnie odpowiedź metody bezpośredniej) każdego zwróconego zadania.

Istnieje również możliwość filtrowania przy użyciu dowolnych warunków logicznych we wszystkich właściwościach obiektu w kolekcji devices.jobs .

Na przykład następujące zapytanie pobiera wszystkie ukończone zadania aktualizacji bliźniaczej reprezentacji urządzenia utworzone po wrześniu 2016 r. dla określonego urządzenia:

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'

Możesz również pobrać wyniki poszczególnych urządzeń dla pojedynczego zadania.

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

Ograniczenia zapytań zadań

Wyrażenia zapytania mogą mieć maksymalną długość 8192 znaków.

Obecnie zapytania dotyczące devices.jobs nie obsługują:

  • W związku z tym projekcje są możliwe.SELECT *
  • Warunki odwołujące się do bliźniaczej reprezentacji urządzenia oprócz właściwości zadania (zobacz poprzednią sekcję).
  • Agregacje, takie jak liczba, średnia i grupa według.

Następne kroki