IoT 中心作业的查询
使用作业可对一组设备执行操作。 每个设备孪生包含在名为“作业”的集合中锁定该设备的作业的信息。 通过 IoT 中心,可将作业作为包含所有孪生信息的单个 JSON 文档进行查询。
以下是一个示例 IoT 中心孪生设备,它是名为 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
}
},
...
]
}
目前,可以使用 IoT 中心查询语言以 devices.jobs 形式查询此集合。
重要
目前,查询设备孪生时不会返回作业属性。 即包含 FROM devices
的查询。 该作业属性仅可通过使用 FROM devices.jobs
的查询直接访问。
例如,以下查询返回影响单个设备的所有作业(过去的作业和计划的作业):
SELECT * FROM devices.jobs
WHERE devices.jobs.deviceId = 'myDeviceId'
请注意此查询如何提供每个返回的作业的设备特定状态(可能还会提供直接方法响应)。
还可针对 devices.jobs 集合中的所有对象属性使用任意布尔条件进行筛选。
例如,以下查询为特定设备检索在 2016 年 9 月之后创建的所有已完成的设备孪生更新作业:
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。
后续步骤
- 了解 IoT 中心查询语言的基础知识