我正在尝试使用Azure流分析将传入的IOT集线器D2C消息持久保存到Azure Cosmos DB。我可以找到的每个Azure Stream Analytics教程都假定从IOT集线器输入传入的消息具有相同的形状,这在我的情况下是不正确的(出于测试目的,我使用IOT Edge Module示例中的tempSensor module另一个基于this tutorial的定制模块。
这就是为什么我要过滤掉不想保留的消息(即tempSensor模块发送的消息)的原因。 在有关using the IOT Hub as an Azure Stream Analysis input的文档中,提到了“ StreamId”:
“ IoTHub.StreamId:发送方设备添加的自定义事件属性。”
我的想法是在Azure流分析查询中使用WHERE子句以仅选择具有特定StreamId的消息,但我不知道如何在自定义的IOT边缘模块中发送消息时如何设置此StreamId。
答案 0 :(得分:0)
当从IOT集线器向IOT集线器发送消息时,如何设置StreamId 物联网边缘设备?
更新:似乎是文档问题。它不是IoT中心消息中的系统属性,因此我们无法为此属性设置值。 Microsoft将更新该文档。感谢您的耐心等待。
还有其他方法可以过滤掉不需要的消息吗?
您可以在设备中创建过滤器模块,然后配置用于将D2C消息传输到过滤器的路由。 Here是参考教程。在此解决方案中,。
您可以部署Azure Functions来过滤IoT Edge设备上的传感器数据。请参阅此document。
答案 1 :(得分:0)
您知道您要保留或拒绝的所有消息吗?如果是这样,您还可以过滤数据(而不是元数据)。特别是如果消息全部来自同一IoT Edge设备,则它们可能共享一些元数据。 例如,要从tempSensor模块中过滤出消息,可以使用以下查询:
SELECT * FROM input WHERE machine.temperature is NULL