Я работаю над проектом IoT. У меня есть Raspberry Pi, который отправляет данные в IoTHub на Azure. Этот концентратор перенаправляет эти данные в задание Azure Stream Analytics. В своем запросе я пытаюсь объединить (здесь в среднем) все данные в TumblingWindow за 1 минуту, но в качестве метки времени я использую пользовательскую дату и время, отправленные в данных.
Я много чего пробовал, но ничего не получалось. потоковое задание, похоже, игнорирует дату и время, которое я предоставляю, и просто агрегирует все по времени прибытия.
Это работает только при использовании функции «Тест» при загрузке файла 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 Stream Analytics:
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
Так почему же результаты не совпадают? Я что-то не так сделал? Что я могу сделать?
Спасибо за вашу помощь.