共用方式為


針對 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 * 是可行的。
  • 參照裝置對應項 (作業屬性除外) 的條件 (請參閱上一節)。
  • 彙總,例如計數、平均和分組依據。

下一步