如何在 Microsoft Azure 流分析上从多个设备分离数据
How to Separate Data from Multiple Devices on Microsoft Azure Stream Analytics
我目前正在尝试将 2 个不同的设备连接到 IoT 中心,我需要将每个设备的数据分开。为此,我尝试像这样配置我的流分析查询:
SELECT
deviceId, temperature, humidity, CAST(iothub.EnqueuedTime AS datetime) AS event_date
INTO
NodeMCUOutput
FROM
iothubevents
WHERE
deviceId = "NodeMCU1"
但是,由于某些原因,如果代码中有 WHERE 语句,则不会显示输出(显示时没有它,但不会过滤数据)。我需要 WHERE 语句才能按照我想要的方式对数据进行排序。我错过了什么吗?有什么解决办法吗?非常感谢。干杯!
消息本身不包含的设备 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'
我注意到您在 WHERE 子句中使用了双引号。
您需要一个简单的引号来匹配字符串。在这种情况下它将是
WHERE deviceId = 'NodeMCU1'
如果 deviceId 是来自 IoT 中心元数据的,Matthijs 回答将帮助您检索它。
我目前正在尝试将 2 个不同的设备连接到 IoT 中心,我需要将每个设备的数据分开。为此,我尝试像这样配置我的流分析查询:
SELECT
deviceId, temperature, humidity, CAST(iothub.EnqueuedTime AS datetime) AS event_date
INTO
NodeMCUOutput
FROM
iothubevents
WHERE
deviceId = "NodeMCU1"
但是,由于某些原因,如果代码中有 WHERE 语句,则不会显示输出(显示时没有它,但不会过滤数据)。我需要 WHERE 语句才能按照我想要的方式对数据进行排序。我错过了什么吗?有什么解决办法吗?非常感谢。干杯!
消息本身不包含的设备 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'
我注意到您在 WHERE 子句中使用了双引号。 您需要一个简单的引号来匹配字符串。在这种情况下它将是
WHERE deviceId = 'NodeMCU1'
如果 deviceId 是来自 IoT 中心元数据的,Matthijs 回答将帮助您检索它。