Consultas para trabalhos do Hub IoT do Azure

Os Trabalhos fornecem uma maneira de executar operações em conjuntos de dispositivos. Cada dispositivo gêmeo contém as informações dos trabalhos que o direcionam em uma coleção chamada trabalhos. O Hub IoT do Azure habilita a consulta de trabalhos como um único documento JSON contendo todas as informações dos gêmeos.

Veja um exemplo de dispositivo gêmeo do Hub IoT do Azure que faz parte de um trabalho chamado 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
            }
        },
        ...
    ]
}

Atualmente, essa coleção pode ser consultada como devices.jobs na linguagem de consulta do Hub IoT.

Importante

Atualmente, a propriedade de trabalhos não é retornada ao consultar dispositivos gêmeos. Ou seja, consultas que contêm FROM devices. A propriedade de trabalhos somente poderá ser acessada diretamente com consultas usando FROM devices.jobs.

Por exemplo, a seguinte consulta retorna todos os trabalhos (passados e agendados) que afetam um dispositivo único:

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

Observe como essa consulta fornece o status específico do dispositivo (e possivelmente a resposta do método direto) de cada trabalho retornado.

Também é possível filtrar com condições boolianas arbitrárias em todas as propriedades do objeto na coleção devices.jobs.

Por exemplo, a seguinte consulta recupera todos os trabalhos de atualização de dispositivos gêmeos concluídos que foram criados após setembro de 2016 para um 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'

Também é possível recuperar os resultados por dispositivo de um único trabalho.

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

Limitações da consulta de trabalhos

As expressões de consulta podem ter um comprimento máximo de 8.192 caracteres.

No momento, as consultas em devices.jobs não dão suporte a:

  • Projeções, portanto, apenas SELECT * é possível.
  • Condições que se referem ao dispositivo gêmeo além das propriedades de trabalho (consulte a seção anterior).
  • Agregações, por exemplo, count, avg, group by.

Próximas etapas