Requêtes pour les travaux IoT Hub

Les travaux constituent un moyen d’exécuter des opérations sur des ensembles d’appareils. Chaque jumeau d’appareil contient les informations relatives aux travaux qui le ciblent dans une collection appelée travaux. IoT Hub vous permet d’interroger les travaux sous la forme d’un seul document JSON contenant toutes les informations relatives aux jumeaux.

Voici un exemple de jumeau d’appareil de hub IoT qui fait partie d’un travail appelé 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
            }
        },
        ...
    ]
}

Actuellement, ce regroupement peut être interrogé en tant que devices.jobs dans le langage de requête d’IoT Hub.

Important

Actuellement, la propriété des travaux n’est jamais retournée lors de l’interrogation de jumeaux d’appareil. C’est-à-dire les requêtes qui contiennent FROM devices. Elle est accessible directement uniquement avec des requêtes utilisant FROM devices.jobs.

Par exemple, la requête suivante retourne tous les travaux (passés et planifiés) qui affectent un seul appareil :

SELECT * FROM devices.jobs
  WHERE devices.jobs.deviceId = 'myDeviceId'

Notez comment cette requête fournit l’état spécifique de l’appareil (et éventuellement la réponse de méthode directe) pour chaque travail retourné.

Il est également possible de filtrer avec des conditions booléennes arbitraires toutes les propriétés d’objet de la collection devices.jobs.

Par exemple, la requête suivante récupère tous les travaux de mise à jour de jumeaux d’appareil effectués, qui ont été créés après septembre 2016 pour un appareil spécifique :

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'

Vous pouvez également récupérer les résultats d’un travail unique par appareil.

SELECT * FROM devices.jobs
  WHERE devices.jobs.jobId = 'myJobId'

Limitations des requêtes relatives aux travaux

Les expressions de requête peuvent avoir une longueur maximale de 8 192 caractères.

Pour le moment, les requêtes sur devices.jobs ne prennent pas en charge les éléments suivants :

  • Les projections, par conséquent seul SELECT * est possible.
  • Les conditions faisant référence au jumeau d’appareil en plus des propriétés du travail (voir section précédente).
  • Agrégations, par exemple count, avg et group by.

Étapes suivantes