滑动窗口(Azure 流分析)
在使用滑动窗口时,将要求系统以逻辑方式考虑给定长度的所有可能窗口。 由于此类窗口的数量是无限的,因此 Azure 流分析仅在窗口内容实际更改(即事件进入或退出窗口时)的那些时间点输出事件。
下图演示了包含一系列事件的流,以及如何将这些事件映射到 10 秒的滑动窗口。
语法
{SLIDINGWINDOW | SLIDING} ( timeunit, windowsize )
{SLIDINGWINDOW | SLIDING} ( Duration( timeunit, windowsize ) )
注意
可按上述两种方式使用滑动窗口。 为了与跳跃窗口保持一致性,还可以将 Duration 函数与所有类型的窗口配合使用以指定窗口大小。
参数
timeunit
窗口大小的时间单位。 下表列出了所有有效的 timeunit 参数。
时间单位 | 缩写形式 |
---|---|
day | dd、d |
hour | hh |
minute | mi、n |
第 2 个 | ss、s |
毫秒 | ms |
微秒 | mcs |
windowsize
描述窗口大小的大整数。 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