【问题标题】:Azure Stream Analytics - How to save data for more than one IoT device in Azure SQL dbAzure 流分析 - 如何在 Azure SQL db 中保存多个 IoT 设备的数据
【发布时间】:2021-11-17 10:49:33
【问题描述】:

我能够在 Azure SQL DB 中保存一个正在运行的 IoT 设备的数据,但无法了解如何在 Azure SQL DB 中保存来自多个使用流分析的 IoT 设备的数据,数据可能不同。 例如 - Device1 可能会产生温度、湿度 而Device2可能会产生扭矩、压力

我在 Azure SQL DB 中使用了stream analytics preview 功能。我不想为表创建架构,因为我不确定来自不同 IoT 设备的数据类型。

【问题讨论】:

  • 我从您的问题中了解到,每个设备都在发出具有不同模式的数据点?您是否考虑过要在目的地使用的模式?我的意思是什么列及其数据类型?您是否希望拥有像温度、湿度、扭矩、压力这样的列,总是半空(取决于源设备),或者您想要获得像传感器名称、传感器值这样的 2 列?根据您存储数据的方式,我可以帮助您编写正确的查询
  • 是的,多个设备发出具有不同模式的数据点,这就是我当时的假设。对于您的第二个问题,不,因为即将到来的数据将是异构的,因此不必考虑输出的模式。我只是想看看如何将来自多个 IoT 设备的数据存储在 azure 的关系表中。 sensorName 和 sensorValue 对我的用例来说似乎是个好主意,你能给我链接一篇好文章吗?在此先感谢:)

标签: azure azure-stream-analytics


【解决方案1】:

这里最基本的方法如下:

WITH 
TempInput AS (SELECT DeviceId, 'Temperature' AS sensorName, Temperature AS sensorValue FROM Input WHERE DeviceType = 'A'),

HumidityInput AS  (SELECT DeviceId, 'Humidity' AS sensorName, Humidity AS sensorValue FROM Input WHERE DeviceType = 'A'),

TorqueInput AS (SELECT DeviceId, 'Torque' AS sensorName, Torque AS sensorValue FROM Input WHERE DeviceType = 'B'),

PressureInput AS  (SELECT DeviceId, 'Pressure' AS sensorName, Pressure AS sensorValue FROM Input WHERE DeviceType = 'B')

UnionOutput AS (
SELECT DeviceId, sensorName, sensorValue FROM TempInput 
UNION
SELECT DeviceId, sensorName, sensorValue FROM HumidityInput
UNION
SELECT DeviceId, sensorName, sensorValue FROM TorqueInput 
UNION
SELECT DeviceId, sensorName, sensorValue FROM PressureInput
)

SELECT *
INTO Output
FROM UnionOutput 

所以这种情况是受支持的,但是在我们了解更多有关实际涉及的模式之前,不能真正概括上面的查询模式。我们有更智能的方法来解析和透视数据,这些数据可能适用于您的特定情况。在输入(CSV、JSON、字段是否嵌套、数组)和输出方面拥有更多详细信息非常重要。我们有good doc on general patterns,还有parsing JSON data 可以提供帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-23
    • 2019-12-06
    • 1970-01-01
    • 2018-05-09
    • 2019-09-24
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    相关资源
    最近更新 更多