Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В сценариях потоковой передачи времени распространенный шаблон заключается в выполнении операций с данными, содержащимися в темпоральных окнах. Stream Analytics поддерживает встроенные функции управления окнами, поэтому можно создавать сложные задания потоковой обработки с минимальными усилиями.
Существует пять видов темпоральных окон:
Используйте функции окна в предложении GROUP BY синтаксиса запроса в заданиях Stream Analytics. Вы также можете агрегировать события в нескольких окнах с помощью функции Windows().
Все операционные результаты оконных операций выдаются в конце окна. При запуске задания Stream Analytics можно указать время начала вывода задания. Система автоматически извлекает предыдущие события в входящих потоках, чтобы вывести первое окно в указанное время. Например, при запуске с параметра Now он сразу же начинает выдавать данные. Выходные данные окна — это одно событие на основе используемой статистической функции. Выходное событие имеет метку времени окончания окна, а все функции окна определяются фиксированной длиной.
"Переворачивающееся" окно
Используйте функции "Переворачивающееся окно", чтобы сегментировать поток данных в отдельные сегменты времени и выполнять функцию против них.
Ключевыми разными способами переворачивающегося окна являются:
- Они не повторяются.
- Они не перекрываются.
- Событие не может принадлежать нескольким переворачивающимся окнам.
Ниже приведены входные данные для примера:
| Штемпель | ДатаСоздания | TimeZone |
|---|---|---|
| 1 | 2021-10-26T10:15:01 | Тихоокеанское стандартное время (PST) |
| 5 | 2021-10-26T10:15:03 | Тихоокеанское стандартное время (PST) |
| 4 | 2021-10-26T10:15:06 | Тихоокеанское стандартное время (PST) |
| ... | ... | ... |
Ниже приведен пример запроса:
SELECT System.Timestamp() as WindowEndTime, TimeZone, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY TimeZone, TumblingWindow(second,10)
Ниже приведен пример выходных данных:
| Время окончания окна | TimeZone | Численность |
|---|---|---|
| 2021-10-26T10:15:10 | Тихоокеанское стандартное время (PST) | 5 |
| 2021-10-26T10:15:20 | Тихоокеанское стандартное время (PST) | 2 |
| 2021-10-26T10:15:30 | Тихоокеанское стандартное время (PST) | 4 |
"Прыгающее" окно
Функции скользящего окна перемещаются вперед во времени на фиксированный период. Их можно легко представить как переворачивающиеся окна, которые могут перекрываться и создаваться чаще, чем размер окна. События могут принадлежать нескольким результирующим наборам скользящих окон. Чтобы сделать скользящее окно таким же, как и фиксированное окно, укажите размер шага, который будет совпадать с размером окна.
Ниже приведены примеры данных:
| Штемпель | ДатаСоздания | Тема |
|---|---|---|
| 1 | 2021-10-26T10:15:01 | Стриминг |
| 5 | 2021-10-26T10:15:03 | Стриминг |
| 4 | 2021-10-26T10:15:06 | Стриминг |
| ... | ... | ... |
Ниже приведен пример запроса:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, HoppingWindow(second,10,5)
Ниже приведен пример выходных данных:
| Время окончания окна | Тема | Численность |
|---|---|---|
| 2021-10-26T10:15:10 | Стриминг | 5 |
| 2021-10-26T10:15:15 | Стриминг | 3 |
| 2021-10-26T10:15:20 | Стриминг | 2 |
| 2021-10-26T10:15:25 | Стриминг | 4 |
| 2021-10-26T10:15:30 | Стриминг | 4 |
"Скользящее" окно
Скользящие окна, в отличие от скользящих или скачкообразных окон, выдают события только для точек во времени, когда содержимое окна фактически изменяется. Другими словами, когда событие входит или выходит из окна. Таким образом, у каждого окна есть по меньшей мере одно событие. Подобно прыгающим окнам, события могут принадлежать нескольким скользящим окнам.
Ниже приведен пример входных данных:
| Штемпель | ДатаСоздания | Тема |
|---|---|---|
| 1 | 2021-10-26T10:15:10 | Стриминг |
| 5 | 2021-10-26T10:15:12 | Стриминг |
| 9 | 2021-10-26T10:15:15 | Стриминг |
| 7 | 2021-10-26T10:15:15 | Стриминг |
| 8 | 2021-10-26T10:15:27 | Стриминг |
Ниже приведен пример запроса:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SlidingWindow(second,10)
HAVING COUNT(*) >=3
Выходные данные:
| Время окончания окна | Тема | Численность |
|---|---|---|
| 2021-10-26T10:15:15 | Стриминг | 4 |
| 2021-10-26T10:15:20 | Стриминг | 3 |
"Сеансовое" окно
Функции окон сеанса группируют события, которые поступают в похожее время. Они отфильтровывают периоды времени, когда нет данных. Функция окна сеанса имеет три основных параметра:
- Таймаут
- Максимальная длительность
- Ключ секционирования (необязательно).
Окно сеанса начинается при возникновении первого события. Если другое событие происходит в течение указанного времени ожидания от последнего приема события, окно расширяется, чтобы включить новое событие. В противном случае, если события не происходят в течение времени ожидания, окно закрывается во время ожидания.
Если события продолжаются в течение указанного времени ожидания, окно сеанса продолжает расширяться до достижения максимальной длительности. Максимальный интервал проверки равен заданной максимальной длительности. Например, если максимальная длительность составляет 10, то проверки, если окно превышает максимальную длительность, происходит в t = 0, 10, 20, 30 и т. д.
При предоставлении ключа секции функция группит события по ключу и применяет окно сеанса к каждой группе независимо. Эта секционирование полезна в случаях, когда для разных пользователей или устройств требуются разные окна сеансов.
Ниже приведен пример входных данных:
| Штемпель | ДатаСоздания | Тема |
|---|---|---|
| 1 | 2021-10-26T10:15:01 | Стриминг |
| 2 | 2021-10-26T10:15:04 | Стриминг |
| 3 | 2021-10-26T10:15:13 | Стриминг |
| ... | ... | ... |
Ниже приведен пример запроса:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SessionWindow(second,5,10)
Выходные данные:
| Время окончания окна | Тема | Численность |
|---|---|---|
| 2021-10-26T10:15:09 | Стриминг | 2 |
| 2021-10-26T10:15:24 | Стриминг | 4 |
| 2021-10-26T10:15:31 | Стриминг | 2 |
| 2021-10-26T10:15:39 | Стриминг | 1 |
Окно моментального снимка
Объединяйте события Windows в группы моментальных снимков с одинаковыми временными метками. В отличие от других типов окон, для которых требуется определенная функция окна (например , SessionWindow()), можно применить окно моментального снимка, добавив System.Timestamp() в GROUP BY предложение.
Ниже приведен пример входных данных:
| Штемпель | ДатаСоздания | Тема |
|---|---|---|
| 1 | 2021-10-26T10:15:04 | Стриминг |
| 2 | 2021-10-26T10:15:04 | Стриминг |
| 3 | 2021-10-26T10:15:04 | Стриминг |
| ... | ... | ... |
Ниже приведен пример запроса:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()
Ниже приведен пример выходных данных:
| Время окончания окна | Тема | Численность |
|---|---|---|
| 2021-10-26T10:15:04 | Стриминг | 4 |
| 2021-10-26T10:15:10 | Стриминг | 2 |
| 2021-10-26T10:15:13 | Стриминг | 1 |
| 2021-10-26T10:15:22 | Стриминг | 2 |
Дальнейшие шаги
См. следующие статьи: