如何在 Microsoft Azure 流分析上从多个设备中分离数据
Posted
技术标签:
【中文标题】如何在 Microsoft Azure 流分析上从多个设备中分离数据【英文标题】:How to Separate Data from Multiple Devices on Microsoft Azure Stream Analytics 【发布时间】:2020-07-31 18:01:37 【问题描述】:我目前正在尝试将 2 个不同的设备连接到 IoT 中心,我需要将数据与每个设备分开。为此,我尝试像这样配置我的流分析查询:
SELECT
deviceId, temperature, humidity, CAST(iothub.EnqueuedTime AS datetime) AS event_date
INTO
NodeMCUOutput
FROM
iothubevents
WHERE
deviceId = "NodeMCU1"
但是,由于某种原因,如果 WHERE 语句在代码中,则不会显示输出(显示输出时没有它,但未过滤数据)。我需要 WHERE 语句才能按照我想要的方式对数据进行排序。我错过了什么吗?有什么解决办法吗?非常感谢。干杯!
【问题讨论】:
如果 deviceId 是来自 IoT Hub 的设备 ID,下面的 Matthijs 回答将帮助您获得它。 【参考方案1】:消息本身不包含的设备 ID 和其他属性作为元数据包含在消息中。您可以使用 GetMetadataPropertyValue()
函数读取该元数据。这应该适合你:
SELECT
GetMetadataPropertyValue(iothubevents, 'IoTHub.ConnectionDeviceId') as deviceId,
temperature,
humidity,
CAST(GetMetadataPropertyValue(iothubevents, 'IoTHub.EnqueuedTime') AS datetime) AS event_date
INTO
NodeMCUOutput
FROM
iothubevents
WHERE
GetMetadataPropertyValue(iothubevents, 'IoTHub.ConnectionDeviceId') = 'NodeMCU1'
【讨论】:
很高兴能帮上忙!【参考方案2】:我注意到您在 WHERE 子句中使用了双引号。 您需要一个简单的引号来匹配字符串。在这种情况下,它将是
WHERE deviceId = 'NodeMCU1'
如果 deviceId 是来自 IoT 中心元数据的设备 ID,Matthijs 的答案将帮助您检索它。
【讨论】:
以上是关于如何在 Microsoft Azure 流分析上从多个设备中分离数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Microsoft Azure IoT 中创建自定义的流数据仪表板?