"Прыгающее" окно (Azure Stream Analytics)

В отличие от переворачивающихся окон, модель прыгающих окон планирует перекрывающиеся окна. Спецификация прыгающего окна состоит из трех параметров: timeunit, windowsize (продолжительность каждого окна) и прыжка (насколько каждое окно перемещается вперед относительно предыдущего). Кроме того, offsetsize можно использовать в качестве необязательного четвертого параметра. Обратите внимание, что «переворачивающееся» окно — это просто «прыгающее» окно, «прыжок» которого равен его размеру.

На следующем рисунке показан поток с последовательностью событий. Каждый прямоугольник представляет «прыгающее» окно и события, которые считаются частью этого окна. Также предполагается, что «прыжок» равен 5, а размер — 10.

Схема прыжкового окна Stream Analytics

Синтаксис

{HOPPINGWINDOW | HOPPING} ( timeunit  , windowsize , hopsize, [offsetsize] )
{HOPPINGWINDOW | HOPPING} ( Duration( timeunit  , windowsize ) , Hop (timeunit  , windowsize ), [Offset(timeunit  , offsetsize)])  
  

Примечание

"Прыгающее" окно можно использовать двумя указанными выше способами. Если для размера окна (windowsize) и размера "прыжка" (hopsize) используются одинаковые единицы измерения времени (timeunit), возможно их использование без функций Duration и Hop. Функцию Duration также можно использовать с другими типами окон для указания размера окна.

Аргументы

timeunit

Единица времени для windowsize или прыжка. В следующей таблице перечислены все допустимые аргументы timeunit .

Timeunit Сокращения
day dd, d
hour hh
minute mi, n
second ss, s
миллисекунда ms
микросекунда mcs

windowsize

Большое целое число, описывающее размер окна. Windowsize является статическим и не может динамически изменяться во время выполнения.

Максимальный размер окна во всех случаях составляет 7 дней.

hopsize

Большое целое число, описывающее размер прыжка.

offsetsize

По умолчанию прыгающие окна включены в конце окна и эксклюзивные в начале. Например, с 12:05 до 13:05 будут включены события, которые произошли ровно в 13:05, но не будут включать события, произошедшие в 12:05:05 (эти события будут частью окна 12:00–01:00).
Параметр Offset можно использовать для изменения поведения и включения событий в начало окна и исключения тех, которые произошли в конце.

Примеры

SELECT System.Timestamp() AS WindowEnd, TollId, COUNT(*)  
FROM Input TIMESTAMP BY EntryTime  
GROUP BY TollId, HoppingWindow(Duration(hour, 1), Hop(minute, 5), Offset(millisecond, -1))  
  

Рассмотрение времени

Каждая операция окна выводит событие в конце окна (в случае прыгающего окна это происходит при каждом размере прыжка). Окна Azure Stream Analytics открываются во время начала окна и закрываются во время окончания окна. Например, если у вас есть 5-минутное окно с 00:00 до 00:05, все события с меткой времени больше 00:00 и до 00:05 включительно будут включены в это окно. Выводом окна будет одно событие, в зависимости от агрегатной функции, используемой с меткой времени, равной времени окончания окна. Метка времени выходного события окна может проецироваться в инструкции SELECT с помощью свойства System.Timestamp() с помощью псевдонима.