Consultas para trabajos de IoT Hub
Los trabajos proporcionan una forma de ejecutar operaciones en conjuntos de dispositivos. Cada dispositivo gemelo contiene la información de los trabajos que forman parte de una colección denominada jobs. IoT Hub permite consultar los jobs como un solo documento JSON que contiene toda la información de los gemelos.
Este es un dispositivo gemelo de IoT Hub de ejemplo que forma parte de un trabajo denominado 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
}
},
...
]
}
Ahora, esta colección se puede consultar como devices.jobs en el lenguaje de consulta de IoT Hub.
Importante
Actualmente, la propiedad jobs no se devuelve cuando se consulta a dispositivos gemelos. Es decir, las consultas que contienen FROM devices
. Solo se puede acceder a la propiedad jobs directamente con consultas que usen FROM devices.jobs
.
Por ejemplo, la consulta siguiente devuelve todos los trabajos (pasados y programados) que afectan a un único dispositivo:
SELECT * FROM devices.jobs
WHERE devices.jobs.deviceId = 'myDeviceId'
Observe cómo esta consulta proporciona el estado específico del dispositivo (y posiblemente la respuesta del método directo) para cada trabajo devuelto.
También es posible filtrar por condiciones booleanas arbitrarias en todas las propiedades de objeto de la colección devices.jobs.
Por ejemplo, la consulta siguiente recupera todos los trabajos de actualización de dispositivo gemelo que se crearon después de septiembre de 2016 para un dispositivo específico:
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'
Asimismo, también es posible recuperar los resultados por dispositivo de un único trabajo.
SELECT * FROM devices.jobs
WHERE devices.jobs.jobId = 'myJobId'
Limitaciones de las consultas de Jobs
Las expresiones de consulta pueden tener una longitud máxima de 8192 caracteres.
Actualmente, las consultas en devices.jobs no admiten:
- proyecciones, por lo tanto, solo
SELECT *
es posible. - condiciones que hagan referencia al dispositivo gemelo, además de a las propiedades de trabajo (vea la sección anterior).
- Agregaciones, como count, avg, group by.
Pasos siguientes
- Descripción de los conceptos básicos del lenguaje de consulta de IoT Hub