Поделиться через


Запросы заданий Центр Интернета вещей

Задания позволяют выполнять операции с наборами устройств. Каждый двойник устройства содержит сведения о заданиях, предназначенных для него, в коллекции, называемой заданиями. Центр Интернета вещей позволяет запрашивать задания в виде одного документа JSON, содержащего все сведения о двойниках.

Ниже приведен пример двойника устройства Центра Интернета вещей, который является частью задания с именем 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
            }
        },
        ...
    ]
}

В настоящее время к этой коллекции можно выполнить запрос как к devices.jobs на языке запросов Центра Интернета вещей.

Важно!

В настоящее время свойство заданий не возвращается при запросе двойников устройств. То есть запросы, содержащие FROM devices. Доступ к свойству задания можно получить только непосредственно с помощью запросов, использующих FROM devices.jobs.

Например, следующий запрос возвращает все задания (прошлые и запланированные), которые влияют на одно устройство:

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

Обратите внимание, как этот запрос предоставляет сведения о состоянии конкретного устройства (и, возможно, ответ на прямой метод) в каждом возвращенном задании.

Кроме того, можно выполнить фильтрацию по произвольным логическим условиям по всем свойствам объекта в коллекции devices.jobs .

Например, следующий запрос извлекает все завершенные задания обновления двойника устройства, созданные после сентября 2016 года для определенного устройства:

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'

Вы также можете получить результаты по одному заданию для каждого устройства.

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

Ограничения запросов заданий

Длина выражения запроса не должна превышать 8192 символа.

В настоящее время запросы к devices.jobs не поддерживают:

  • проекции, поэтому можно использовать только SELECT *;
  • условия, касающиеся двойника устройства, и свойства задания (см. предыдущий раздел);
  • Агрегаты, такие как count, avg и group by.

Дальнейшие действия