Скользящее окно (Azure Stream Analytics)
При использовании скользящего окна в систему отправляется запрос на логическое рассмотрение всех возможных окон данной длины. Так как количество таких окон будет бесконечным, Azure Stream Analytics вместо этого выводит события только в те моменты времени, когда содержимое окна фактически изменяется, иными словами, когда событие вошло в окно или выходит из него.
На следующей схеме показан поток с рядом событий и их сопоставление со скользящими окнами длительностью 10 секунд.
Синтаксис
{SLIDINGWINDOW | SLIDING} ( timeunit, windowsize )
{SLIDINGWINDOW | SLIDING} ( Duration( timeunit, windowsize ) )
Примечание
"Скользящее" окно можно использовать двумя указанными выше способами. Чтобы обеспечить согласованность с "прыгающим" окном, можно использовать функцию Duration для всех типов окон в целях определения их размера.
Аргументы
timeunit
Единица времени для функции windowsize. В следующей таблице перечислены все допустимые аргументы timeunit.
Timeunit | Сокращения |
---|---|
day | dd, d |
hour | hh |
minute | mi, n |
second | ss, s |
миллисекунда | ms |
микросекунда | mcs |
windowsize
Большое целое число, описывающее размер окна. Windowsize является статическим и не может динамически изменяться во время выполнения.
Максимальный размер окна во всех случаях составляет 7 дней.
Примеры
В этом примере осуществляется поиск всех пропускных пунктов, обслуживших более трех транспортных средств за последние 5 минут:
SELECT DateAdd(minute,-5,System.Timestamp()) AS WinStartTime, System.Timestamp() AS WinEndTime, TollId, COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY TollId, SlidingWindow(minute, 5)
HAVING COUNT(*) > 3