ASA 传感器类型的不同聚合
Different aggregation by Sensor Type for ASA
我的设备有很多传感器,需要不同类型的聚合,我的问题分为两个部分。该设备通过 Azure IoT 中心进行通信,然后转到 Azure 流分析到 SQL 数据库和 Power BI。
1) 传输数据的最佳方式是什么?每个传感器(sensor1、sensor2、.)和 DateTime 的列或 DeviceId、DateTime、SensorNumber 和 SensorValue 的列?通过引用 table 添加更多信息,例如传感器名称、触发值等。这些方法的优缺点是什么?
2) ASA 中需要的一些聚合是 MAX,其他聚合是 AVERAGE,这取决于通过参考 table 链接到设备每个通道的传感器类型。例如,传感器类型 "Switch" 需要 MAX 聚合,而传感器类型 "Temp" 需要 AVERAGE 聚合。您能否根据通过 ref table?
链接的不同 SensorType 字段,将聚合类型从一个输入 (IoTHub) 更改为一个输出 (SQL)
如有任何帮助,我们将不胜感激。
- 最好使用 SensorId、SensorValue,因为您可能不会始终拥有来自所有传感器的值。此外,当您拥有新的 sensorId 时,负载不会改变。
- 可以用参考数据来做。但是,如果它只是一个不同的聚合,您也可以一直计算平均值和最大值,并根据 SQL 侧或电源双侧的传感器类型选择合适的。
如果比单纯的聚合类型更复杂,参考数据更好。以下是如何使用参考数据
create table iotInput
(
SensorId nvarchar(max),
SensorValue bigint,
Measurementtime datetime
)
create table refData
(
SensorId nvarchar(max),
IsMaxAggregate bigint
)
select
System.Timestamp [Aggregationtime],
iotInput.SensorId,
refData.IsMaxAggregate,
case when refData.IsMaxAggregate = 1
then max(iotInput.SensorValue)
else
avg(iotInput.SensorValue) end [Aggregate]
from
iotInput timestamp by [MeasurementTime]
join
refData
on
iotInput.SensorId = refData.SensorId
group by
iotInput.SensorId,
refData.IsMaxAggregate,
tumblingwindow(second,5)
我的设备有很多传感器,需要不同类型的聚合,我的问题分为两个部分。该设备通过 Azure IoT 中心进行通信,然后转到 Azure 流分析到 SQL 数据库和 Power BI。
1) 传输数据的最佳方式是什么?每个传感器(sensor1、sensor2、.)和 DateTime 的列或 DeviceId、DateTime、SensorNumber 和 SensorValue 的列?通过引用 table 添加更多信息,例如传感器名称、触发值等。这些方法的优缺点是什么?
2) ASA 中需要的一些聚合是 MAX,其他聚合是 AVERAGE,这取决于通过参考 table 链接到设备每个通道的传感器类型。例如,传感器类型 "Switch" 需要 MAX 聚合,而传感器类型 "Temp" 需要 AVERAGE 聚合。您能否根据通过 ref table?
链接的不同 SensorType 字段,将聚合类型从一个输入 (IoTHub) 更改为一个输出 (SQL)如有任何帮助,我们将不胜感激。
- 最好使用 SensorId、SensorValue,因为您可能不会始终拥有来自所有传感器的值。此外,当您拥有新的 sensorId 时,负载不会改变。
- 可以用参考数据来做。但是,如果它只是一个不同的聚合,您也可以一直计算平均值和最大值,并根据 SQL 侧或电源双侧的传感器类型选择合适的。
如果比单纯的聚合类型更复杂,参考数据更好。以下是如何使用参考数据
create table iotInput
(
SensorId nvarchar(max),
SensorValue bigint,
Measurementtime datetime
)
create table refData
(
SensorId nvarchar(max),
IsMaxAggregate bigint
)
select
System.Timestamp [Aggregationtime],
iotInput.SensorId,
refData.IsMaxAggregate,
case when refData.IsMaxAggregate = 1
then max(iotInput.SensorValue)
else
avg(iotInput.SensorValue) end [Aggregate]
from
iotInput timestamp by [MeasurementTime]
join
refData
on
iotInput.SensorId = refData.SensorId
group by
iotInput.SensorId,
refData.IsMaxAggregate,
tumblingwindow(second,5)