Запросы заданий Центр Интернета вещей
Задания позволяют выполнять операции с наборами устройств. Каждый двойник устройства содержит сведения о заданиях, предназначенных для него, в коллекции, называемой заданиями. Центр Интернета вещей позволяет запрашивать задания в виде одного документа 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.
Дальнейшие действия
- Основные сведения о языке запросов Центр Интернета вещей