滑动窗口(Azure 流分析)

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

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

流分析 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