Общие сведения о функциях управления окнами Stream AnalyticsIntroduction to Stream Analytics windowing functions

При использовании потоковой передачи в реальном времени необходимо выполнять операции с теми данными, которые содержатся во временных окнах.In time-streaming scenarios, performing operations on the data contained in temporal windows is a common pattern. В Stream Analytics имеется встроенная поддержка функций управления окнами. Это позволяет разработчикам выполнять сложные задания по обработке потоков с минимальными усилиями.Stream Analytics has native support for windowing functions, enabling developers to author complex stream processing jobs with minimal effort.

Есть четыре типа временных окон: переворачивающиеся, прыгающие, скользящиеокна и окна сеансов.There are four kinds of temporal windows to choose from: Tumbling, Hopping, Sliding, and Session windows. Функции управления окнами используются в предложении GROUP BY в синтаксических конструкциях запросов в заданиях Stream Analytics.You use the window functions in the GROUP BY clause of the query syntax in your Stream Analytics jobs. Можно также выполнять статистическую обработку событий в нескольких окнах с помощью функции Windows () .You can also aggregate events over multiple windows using the Windows() function.

Все операции управления окнами выводят результаты в конце окна.All the windowing operations output results at the end of the window. Результатом для окна будет единичное событие, полученное на основе выбранной статистической функции.The output of the window will be single event based on the aggregate function used. Метка времени для выходного события соответствует времени завершения окна, и все функции управления окнами выполняются с фиксированной длительностью.The output event will have the time stamp of the end of the window and all window functions are defined with a fixed length.

Концепции функций управления окнами в Stream Analytics

"Переворачивающееся" окноTumbling window

Функции "переворачивающегося" окна используются для разделения потока данных на отдельные сегменты времени, для которых и выполняются эти функции, как показано в примере ниже.Tumbling window functions are used to segment a data stream into distinct time segments and perform a function against them, such as the example below. "Переворачивающееся" окно характеризуется тем, что такие окна повторяются и не перекрываются, а любое событие может принадлежать только к одному "переворачивающемуся" окну.The key differentiators of a Tumbling window are that they repeat, do not overlap, and an event cannot belong to more than one tumbling window.

"Переворачивающееся" окно Stream Analytics

"Прыгающее" окноHopping window

Функции "прыгающего" окна смещаются вперед на фиксированный отрезок времени.Hopping window functions hop forward in time by a fixed period. Эта концепция аналогична переворачивающимся окнам с тем исключением, что "прыгающие" окна могут пересекаться, то есть события могут принадлежать сразу к нескольким окнам из набора "прыгающих" окон.It may be easy to think of them as Tumbling windows that can overlap, so events can belong to more than one Hopping window result set. Если для "прыгающего" окна указать длину прыжка, точно совпадающую с размером окна, оно будет полностью идентично "переворачивающемуся" окну.To make a Hopping window the same as a Tumbling window, specify the hop size to be the same as the window size.

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

"Скользящее" окноSliding window

Скользящие окна, в отличие от окон "переворачивающегося" или прыгающее», выводят события только для точек во времени при фактическом изменении содержимого окна.Sliding windows, unlike Tumbling or Hopping windows, output events only for points in time when the content of the window actually changes. Иными словами, когда событие входит в окно или выходит из него.In other words, when an event enters or exits the window. Каждое окно имеет по крайней мере одно событие, как в случае прыгающее» окон, события могут принадлежать к более чем одному скользящему окну.Every window has at least one event, like in the case of Hopping windows, events can belong to more than one sliding window

"Скользящее" окно Stream Analytics

"Сеансовое" окноSession window

Функции "сеансового" окна группируют события, поступающие одновременно, отфильтровывая периоды времени, в течение которых данные отсутствовали.Session window functions group events that arrive at similar times, filtering out periods of time where there is no data. У такого окна три основных параметра: время ожидания, максимальная длительность и ключ секционирования (необязательно).It has three main parameters: timeout, maximum duration, and partitioning key (optional).

"Сеансовое" окно Stream Analytics

"Сеансовое" окно начинается, когда происходит первое событие.A session window begins when the first event occurs. Если в течение указанного времени ожидания после последнего полученного события происходит еще одно событие, то окно расширяется для включения этого нового события.If another event occurs within the specified timeout from the last ingested event, then the window extends to include the new event. В противном случае, если в течение времени ожидания события отсутствуют, то по истечении этого времени окно закрывается.Otherwise if no events occur within the timeout, then the window is closed at the timeout.

Если события непрерывно происходят в течение указанного времени ожидания, то "сеансовое" окно будет расширяться, пока не будет достигнута максимальная длительность.If events keep occurring within the specified timeout, the session window will keep extending until maximum duration is reached. Интервалы проверки максимальной продолжительности задаются равными указанной максимальной длительности.The maximum duration checking intervals are set to be the same size as the specified max duration. Например, если максимальная длительность равна 10, то проверка превышения максимальной длительности окна будет выполняться при t = 0, 10, 20, 30 и т. д.For example, if the max duration is 10, then the checks on if the window exceed maximum duration will happen at t = 0, 10, 20, 30, etc.

Если указан ключ секции, то события группируются по ключу, и "сеансовое" окно применяется отдельно к каждой группе.When a partition key is provided, the events are grouped together by the key and session window is applied to each group independently. Такое секционирование удобно в случаях, когда требуются разные "сеансовые" окна для различных пользователей или устройств.This partitioning is useful for cases where you need different session windows for different users or devices.

окно моментального снимка;Snapshot window

Окна моментального снимка группирует события, имеющие одинаковую метку времени.Snapshot windows groups events that have the same timestamp. В отличие от других типов окон, для которых требуется определенная функция окна (например, сессионвиндов (), можно применить окно моментального снимка, добавив System. timestamp () в предложение GROUP BY.Unlike other windowing types, which require a specific window function (such as SessionWindow(), you can apply a snapshot window by adding System.Timestamp() to the GROUP BY clause.

Окно моментального снимка Stream Analytics

Дальнейшие действияNext steps