Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
    • Cloud Interconnect
    • Cloud Backup
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Router
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • Managed Service for YDB
    • SpeechKit
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • Container Registry
    • Managed Service for Prometheus®
    • Message Queue
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Cloud Apps
    • Yandex AI Studio
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Yandex Cloud Video
    • Stackland
    • Yandex StoreDoc
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • DataSphere
    • Vision OCR
    • Translate
    • Cloud Registry
    • SmartCaptcha
    • Cloud Desktop
    • SourceCraft Code Assistant
    • Managed Service for GitLab
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • Serverless Integrations
    • IoT Core
    • Serverless Containers
    • Cloud Notification Service
    • Yandex Query
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Yandex Query
RU
    • Обзор
    • Термины и определения
    • Квоты и лимиты
    • Обработка запроса
      • Описание
      • Окна потоковой обработки
      • Обработка паттернов в данных
    • Единый анализ потоковых и аналитических данных
    • Резервное копирование
  • Управление доступом
  • Правила тарификации
  • Интеграции
  • Аудитные логи Audit Trails
  • Вопросы и ответы
  • Публичные материалы
  • Обучающие курсы
  1. Концепции
  2. Потоковая обработка данных
  3. Окна потоковой обработки

Окна обработки потоковых данных

Статья создана
Yandex Cloud
Улучшена
Dmitry A.
Обновлена 19 февраля 2025 г.
Открыть в Markdown

Потоковая обработка данных используется для вычислений над неограниченными потоками данных. Так как поток данных не ограничен, то агрегирующие функции типа COUNT, SUM и тп не могут завершить свою работу так как поток данных не завершается, а без этого нельзя получить правильные результаты.

Поэтому для потоковых запросов используется специальный режим агрегации данных — оконный. При оконной агрегации все операции выполняются не над всем объемом данных, а только над их частью, ограниченных временным окном.

Потоковая обработка данных часто используется для анализа данных с различных устройств, например, с мобильных телефонов. Устройства могут быть не постоянно подключены к сети, они могут терять связь, а потом ее восстанавливать, отправляя накопленные за это время данные. Из-за этого возникает баланс между точностью расчетов и скоростью результатов. Этим балансом можно управлять с помощью времени ожидания прихода данных:

  • чем больше время ожидания - тем более точные результаты, но и тем позднее они будут расчитаны.
  • чем меньше время ожидания - тем менее точные результаты, но и тем быстрее они будут расчитаны.

Например, запрос ниже вычисляет количество элементов во временном окне длиной 20 секунд, при этом запрос будет ожидать запаздывающие данные еще в течение 30 секунд.

SELECT
    HOP_END(),
    COUNT(*)
FROM
    source
GROUP BY HOP(`timestamp`, "PT20S", "PT20S", "PT30S")

В YQL HOP window определен как:

HOP(time_extractor, hop, interval, delay)
Название Описание
time_extractor Выражение для получения временной метки для группировки
hop Шаг окна группировки по времени
interval Длина окна группировки по времени
delay Время ожидания опаздывающих данных

Значения полей hop, interval, delay указываются в формате ISO_8601. Например, "PT10M" означает временной интервал 10 минут, а "PT30S" - временной интервал 30 секунд.

Запрос целиком приведен ниже:

SELECT 
    key,
    COUNT(*)
FROM my_stream
GROUP BY
    HOP(CAST(evt_time AS Timestamp), "PT10M", "PT30M", "PT20M"),
    key;

Предположим, данные начали поступать в 12:00, тогда:

  • Первый интервал данных будет: 12:00 — 12:30 (длина интервала, interval, 30 минут);
  • Второй: 12:10 — 12:40 (шаг данных, hop, 10 минут и длина интервала 30 минут);
  • Третий: 12:20 — 12:50;
  • и так далее.

Не все данные будут приходить вовремя, например, данные приходили с мобильного телефона пользователя, который потерял связь, из-за чего часть данных может задерживаться.

Будем ожидать 20 минут прихода всех отстающих данных, поэтому окончательно результаты запроса будут расчитаны:

  • Первый интервал в 12:50 (время ожидания отстающих данных, delay, 20 минут). Отправляемые данные будут содержать события вплоть до 12:30;
  • Второй интервал в 13:00. Отправляемые данные будут содержать события вплоть до 12:40;
  • Третий интервал в 13:10. Отправляемые данные будут содержать события вплоть до 12:50;
  • и так далее.

Чем больше значение устанавлено в параметре delay, тем более полные данные будут, но тем позже они будут отправлены на дальнейшую обработку.

На рисунке ниже приведена иллюстрация работы агрегации по времени HOP из примера выше.

Желтым цветом на рисунке помечен параметр interval, зеленым цветом параметр hop, а синим цветом параметр delay.

Примеры использованияПримеры использования

  • Обработка логов Yandex Cloud Logging.
  • Обработка потока изменений Debezium.

Была ли статья полезна?

Предыдущая
Описание
Следующая
Обработка паттернов в данных
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»