Фильтр Azure Stream Analytics для ввода IOT-концентратора

Я пытаюсь сохранить входящие сообщения IOT Hub D2C в базе данных Azure Cosmos с помощью Azure Stream Analytics. Каждый учебник Azure Stream Analytics, который я могу найти, предполагает, что сообщения, поступающие со входа IOT Hub, имеют одинаковую форму, что не соответствует действительности для моего случая (в целях тестирования я использую модуль tempSensor из примеров модуля IOT Edge и другой пользовательский модуль). модуль на основе этого урока).

Вот почему я хочу отфильтровать сообщения, которые я не хочу сохранять (т.е. сообщения, отправленные модулем tempSensor). В документации по использованию IOT-концентратора в качестве входных данных для анализа потока Azure упоминается "StreamId":

"IoTHub.StreamId: пользовательское свойство события, добавленное устройством отправителя".

Моя идея состоит в том, чтобы использовать предложение WHERE в запросе Azure Stream Analytics только для выбора сообщений с определенным StreamId, но я не представляю, как установить этот StreamId при отправке сообщения из моего пользовательского пограничного модуля IOT.

  • Как я могу установить StreamId при отправке сообщения на концентратор IOT с пограничного устройства IOT?
  • Есть ли другой способ отфильтровать нежелательные сообщения?

2 ответа

  • Как я могу установить StreamId при отправке сообщения на концентратор IOT с пограничного устройства IOT?

ОБНОВЛЕНИЕ: похоже на проблему с документом. Это не системное свойство в сообщении IoT Hub, и мы не смогли установить значение для этого свойства. Microsoft обновит документ. Цените ваше терпение.

  • Есть ли другой способ отфильтровать нежелательные сообщения?

Вы можете создать модуль фильтра на своем устройстве, а затем настроить маршрут для передачи сообщения D2C в фильтр. Вот учебник в качестве ссылки. В этом решении.

Вы можете развернуть функции Azure для фильтрации данных датчика на устройстве IoT Edge. Пожалуйста, обратитесь к этому документу.

Вы знаете все сообщения, которые хотите оставить или отклонить? Если это так, вы также можете фильтровать данные (а не метаданные). Особенно, если все сообщения приходят с одного устройства IoT Edge, они могут делиться некоторыми метаданными. Например, чтобы отфильтровать сообщения из модуля tempSensor, вы можете использовать этот запрос:

SELECT * FROM input WHERE machine.temperature is NULL
Другие вопросы по тегам