針對 IoT 中樞作業的查詢
作業可提供方法來對裝置組執行作業。 每個裝置對應項皆包含作業的資訊,其中會在稱為 jobs 的集合中以該作業為目標。 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 的形式來查詢。
重要
目前,在查詢裝置對應項時,不會傳回 jobs 屬性。 也就是包含 FROM devices
的查詢。 存取 jobs 屬性時,只能使用 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 *
是可行的。 - 參照裝置對應項 (作業屬性除外) 的條件 (請參閱上一節)。
- 彙總,例如計數、平均和分組依據。
下一步
- 了解 IoT 中樞查詢語言的基本概念