滑动窗口

✅ Azure 流分析 ✅ 构造事件流

使用滑动窗口时,系统会要求以逻辑方式考虑给定长度的所有可能窗口。 由于此类窗口的数量是无限的,因此,Azure 流分析仅输出窗口内容实际更改的时间点的事件,换句话说,当事件进入或退出窗口时。

下图演示了一个包含一系列事件的流,以及如何将其映射到 10 秒的滑动窗口。

流分析 10 秒滑动窗口

语法

{SLIDINGWINDOW | SLIDING} ( timeunit, windowsize )
{SLIDINGWINDOW | SLIDING} ( Duration( timeunit, windowsize ) )

注释

可通过上述两种方式使用滑动窗口。 若要允许与跳跃窗口保持一致性,持续时间函数还可用于所有类型的窗口以指定窗口大小。

论据

timeunit

窗口化的时间单位。 下表列出了所有有效的 timeunit 参数。

Timeunit 缩写形式
dd、d
小时 hh
分钟 mi、 n
ss、s
毫秒 女士
微秒 mcs

windowsize

描述窗口大小的大整数。 窗口化是静态的,在运行时无法动态更改。

所有情况下窗口的最大大小为 7 天。

例子

本示例查找在过去 5 分钟内为 3 辆以上车辆提供服务的所有收费站:

SELECT DateAdd(minute,-5,System.Timestamp()) AS WinStartTime, System.Timestamp() AS WinEndTime, TollId, COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY TollId, SlidingWindow(minute, 5)
HAVING COUNT(*) > 3