Azure Stream Analytics «TimeStamp By» в запросе не работает на работе, но отлично работает на тесте - PullRequest
2 голосов
/ 10 апреля 2019

Я работаю над проектом 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

Так почему же результаты не совпадают? Я что-то не так сделал? Что я могу сделать?

Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 11 апреля 2019

При тестировании логики Stream Analytics на портале политики упорядочения событий не применяются. Однако, когда вы выполняете работу в облаке, политики упорядочения событий применяются. Вы должны убедиться, что временные метки в вашей полезной нагрузке являются точными (и событие не приходит слишком поздно). Вы также можете настроить политики упорядочения событий для определения политик позднего прибытия (по умолчанию 5 секунд). Вы можете узнать, как использовать эти настройки здесь .

...