我正在从事一个物联网项目。我有一个Raspberry pi,可将数据发送到Azure上的IoTHub。该集线器会将数据转发到Azure流分析作业。在我的查询中,我尝试在1分钟的TumblingWindow中汇总(这里是平均)所有数据,但作为时间戳,我使用在数据中发送的自定义日期时间。
我尝试了很多事情,但似乎没有任何效果。流作业似乎忽略了我提供的日期时间,只是根据到达时间汇总了所有内容。仅当通过上传json文件使用“测试”功能时,此功能才有效。
SELECT DateAdd(minute, -1, system.Timestamp) as TumblingWindowStartTime, system.TimeStamp as TumblingWindowEndTime, event.DeviceId as DeviceId, AVG(event.Temperature) as TemperatureAverage, Count(*) as MeasurementsCount INTO [input] FROM [output] as event TIMESTAMP BY MeasuredOn GROUP BY event.DeviceId, TumblingWindow(minute, 1)
我发送的数据类型
[ { "Temperature":13.426585352712585, "DeviceId":"UlyssesPi", "MeasuredOn":"2019-04-09T11:20:30.1027311Z" }, { "Temperature":16.81523611620778, "DeviceId":"UlyssesPi", "MeasuredOn":"2019-04-09T11:20:35.2281002Z" }, ... ]
我期望的是在Azure流分析上使用“测试”功能时得到的结果:
TUMBLINGWINDOWSTARTTIME || TUMBLINGWINDOWENDTIME || DEVICEID || TEMPERATUREAVERAGE || MEASUREMENTSCOUNT "2019-04-09T11:20:0... "2019-04-09T11:21:0... UlyssesPi 14.674093214798454 6 "2019-04-09T11:21:0... "2019-04-09T11:22:0... UlyssesPi 18.612186615873217 12 "2019-04-09T11:22:0... "2019-04-09T11:23:0... UlyssesPi 12.799415359568199 12
但是我得到以下信息:
TUMBLINGWINDOWSTARTTIME || TUMBLINGWINDOWENDTIME || DEVICEID || TEMPERATUREAVERAGE || MEASUREMENTSCOUNT "2019-04-09 11:22:0... "2019-04-09 11:23:0... UlyssesPi 15,4994594331363 30
那么结果怎么不一样呢?我做错了什么吗?我能做些什么?
谢谢你的帮助。
在门户上测试Stream Analytics逻辑时,不会应用事件排序策略。但是,当您在云上运行作业时,将应用事件排序策略。您需要确保有效载荷中的时间戳准确(并且事件不会很晚到达)。您还可以配置事件排序策略以定义延迟到达策略(默认值为5秒)。您可以在此处了解如何使用这些设置。