Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
✅ Поток событий Azure Stream Analytics ✅ Fabric
Снэпшоты окон группируют события с одинаковыми временными метками. В отличие от других типов окон, для которых требуется определенная функция окна (например, SessionWindow(), можно применить окно моментального снимка, добавив System.Timestamp() в предложение GROUP BY.
На следующей схеме показан поток с рядом событий и их сопоставление с окнами моментальных снимков.
System.Timestamp() можно рассматривать в предложении GROUP BY в качестве ключевого столбца или определения окна моментального снимка, так как он группирует события в окно на основе равенства меток времени. При сочетании с другой функцией окна System.Timestamp() обрабатывается как ключ, а не как определение окна. System.Timestamp() не создает ошибку при использовании с другими функциями окна в отличие от использования нескольких функций окна в предложении GROUP BY. Использование System.Timestamp() и функции окна в GROUP BY может быть полезно для пакетирования результатов.
Любое выражение, содержащее System.Timestamp(), не считается окном. Например, GROUP BY DATEPART(minute, System.Timestamp())
не удается указать ошибку "окно должно быть указано".
Синтаксис
System.Timestamp()
Примеры
Базовый пример
В следующем примере возвращается количество твитов с тем же типом темы, что и в одно и то же время:
SELECT Topic, COUNT(*)
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()
Пример моментального снимка сворачивающегося окна
Обычное использование окон моментальных снимков заключается в агрегации событий после того, как они были сгруппированы по одной метке времени с помощью предыдущей функции окна, например TumblingWindow ниже.
В следующем примере возвращается количество твитов с тем же типом раздела пользователем в течение 30 минут:
WITH PerInterval AS (
SELECT Topic, User, COUNT(*)
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, User, TumblingWindow(minute, 30)
)
SELECT * INTO UserTopicsCount FROM PerInterval
Чтобы найти количество пользователей и общих твитов на раздел в пределах одного интервала, можно использовать результат предыдущего запроса. Из-за переворачивающегося окна все метки времени будут выровнены по границе 30 минут, вы можете использовать окно моментального снимка для возврата событий на каждой границе, так как все они имеют одно и то же значение метки времени.
SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp()
Предыдущий запрос вернул количество пользователей и общих твитов на раздел в пределах одного и того же 30-минутного интервала. Чтобы получить те же результаты один раз в 2 часа, добавьте переворачивающееся окно в предложение GROUP BY.
Следующий запрос возвращает результаты из всех четырех 30 минут интервалов в конце каждого 2 часа.
SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp(), Tumbling (hour, 2)
Пример агрегатных окон
Вы можете использовать System.Timestamp() в качестве одного из окон в агрегатной конструкции Windows().
SELECT
TollId,
COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY
TollId,
Windows(
TumblingWindow(minute, 10),
TumblingWindow(minute, 20),
System.Timestamp())