Azure 流分析:聚合时删除重复项
Azure Stream Analytics : remove duplicates while aggregating
我正在开发一个温度和压力传感器系统,我的数据在其中流经流分析作业。现在,由于未收到确认和其他各种原因,可能会发送重复的消息。所以我的数据可能是以下格式:-
DeviceID TimeStamp MeasurementName Value
1 1 temperature 50
1 1 temperature 50
1 2 temperature 60
请注意,第二条记录与第一条记录重复,因为 DeviceId、Timestamp 和 MeasurementName 相同。
对于流分析作业中的这些数据,我希望平均翻滚 window 超过 5 分钟。所以我有这个查询
SELECT
AVG(Value)
FROM
SensorData
GROUP BY
DeviceId,
MeasurementName,
TumblingWindow(minute, 5)
此查询预计会在 5 分钟内为我提供每个设备的温度和压力值的平均测量值。
在做这个平均值时,我需要消除重复项。实际平均值为 (50+60)/2 = 55。
但是给我这个查询的平均值是 (50+50+60)/3 = 53.33
如何调整此查询以获得正确的输出?
提前致谢。
根据Query Language Elements in ASA,it seems that distinct is not supported by ASA directly. However, you could find it could be used with COUNT
from here。
所以,也许你可以参考我下面的 sql 来获得没有重复数据的平均价值。
with temp as
(
select count(distinct DeviceID) AS device,
count(distinct TimeStamp) AS time,
count(distinct MeasurementName) AS name,
Value as v
from jsoninput
group by Value,TumblingWindow(minute, 5)
)
select avg(v) from temp
group by TumblingWindow(minute, 5)
输出样本数据:
我正在开发一个温度和压力传感器系统,我的数据在其中流经流分析作业。现在,由于未收到确认和其他各种原因,可能会发送重复的消息。所以我的数据可能是以下格式:-
DeviceID TimeStamp MeasurementName Value
1 1 temperature 50
1 1 temperature 50
1 2 temperature 60
请注意,第二条记录与第一条记录重复,因为 DeviceId、Timestamp 和 MeasurementName 相同。 对于流分析作业中的这些数据,我希望平均翻滚 window 超过 5 分钟。所以我有这个查询
SELECT
AVG(Value)
FROM
SensorData
GROUP BY
DeviceId,
MeasurementName,
TumblingWindow(minute, 5)
此查询预计会在 5 分钟内为我提供每个设备的温度和压力值的平均测量值。 在做这个平均值时,我需要消除重复项。实际平均值为 (50+60)/2 = 55。 但是给我这个查询的平均值是 (50+50+60)/3 = 53.33
如何调整此查询以获得正确的输出?
提前致谢。
根据Query Language Elements in ASA,it seems that distinct is not supported by ASA directly. However, you could find it could be used with COUNT
from here。
所以,也许你可以参考我下面的 sql 来获得没有重复数据的平均价值。
with temp as
(
select count(distinct DeviceID) AS device,
count(distinct TimeStamp) AS time,
count(distinct MeasurementName) AS name,
Value as v
from jsoninput
group by Value,TumblingWindow(minute, 5)
)
select avg(v) from temp
group by TumblingWindow(minute, 5)
输出样本数据: