Partilhar via


Consultas para tarefas de Hub IoT

As tarefas fornecem uma forma de executar operações em conjuntos de dispositivos. Cada dispositivo duplo contém as informações das tarefas que a visam numa coleção denominada tarefas. Hub IoT permite-lhe consultar tarefas como um único documento JSON que contém todas as informações de duplos.

Eis um dispositivo duplo do hub IoT de exemplo que faz parte de uma tarefa chamada 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, esta coleção é consultada como devices.jobs na linguagem de consulta Hub IoT.

Importante

Atualmente, a propriedade tarefas não é devolvida ao consultar dispositivos duplos. Ou seja, consultas que contêm FROM devices. A propriedade jobs só pode ser acedida diretamente com consultas através FROM devices.jobsde .

Por exemplo, a consulta seguinte devolve todas as tarefas (anteriores e agendadas) que afetam um único dispositivo:

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

Tenha em atenção como esta consulta fornece o estado específico do dispositivo (e, possivelmente, a resposta do método direto) de cada tarefa devolvida.

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

Por exemplo, a consulta seguinte obtém todas as tarefas de atualização de dispositivos duplos concluídas que foram criadas 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 pode obter os resultados por dispositivo de uma única tarefa.

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

Limitações de consultas de tarefas

As expressões de consulta podem ter um comprimento máximo de 8192 carateres.

Atualmente, as consultas no devices.jobs não suportam:

  • As projeções, portanto, só SELECT * são possíveis.
  • Condições que se referem ao dispositivo duplo, além das propriedades da tarefa (veja a secção anterior).
  • Agregações, como contagem, média e agrupar por.

Passos seguintes