跳跃窗口(Azure 流分析)
与 翻转窗口不同,跳跃窗口模型计划重叠窗口。 跳跃窗口规范由三个参数组成: 时间单位、 窗口大小 (每个窗口持续的时间) 和 跃点大小 (每个窗口相对于上一个窗口向前移动的量) 。 此外, offsetsize 可用作可选的第四个参数。 请注意,滚动窗口无非就是“跃程”等于“大小”的跳跃窗口。
下图显示了包含一系列事件的流。 每个框表示一个跳跃窗口以及被视为该窗口一部分的事件,假设条件为“跃程”为 5,“大小”为 10。
语法
{HOPPINGWINDOW | HOPPING} ( timeunit , windowsize , hopsize, [offsetsize] )
{HOPPINGWINDOW | HOPPING} ( Duration( timeunit , windowsize ) , Hop (timeunit , windowsize ), [Offset(timeunit , offsetsize)])
注意
可按上述两种方式使用跳跃窗口。 如果窗口大小和跃程具有相同的时间单位,则无法 Duration 和 Hop 函数就可以使用该窗口。 还可以将 Duration 函数与其他类型的窗口结合使用,以指定窗口大小。
参数
timeunit
windowsize 或 hopsize 的时间单位。 下表列出了所有有效的 时间单位 参数。
时间单位 | 缩写形式 |
---|---|
day | dd、d |
hour | hh |
minute | mi、n |
第 2 个 | ss、s |
毫秒 | ms |
微秒 | mcs |
windowsize
描述窗口大小的大整数。 windowsize 是静态的,不能在运行时动态更改。
在所有情况下,窗口的最大大小为 7 天。
hopsize
描述跃点大小的大整数。
offsetsize
默认情况下,跳跃窗口在窗口末尾是包含的,在开头是独占的(例如,12:05 PM – 1:05 PM)窗口将包含恰好发生在下午 1:05 的事件,但不包括发生在 12:05:05:PM 的事件 (这些事件将是 12:00 PM - 01:00 PM 窗口) 的一部分。
Offset 参数可用于更改行为,并在窗口开头包含事件,并排除在最后发生的事件。
示例
SELECT System.Timestamp() AS WindowEnd, TollId, COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY TollId, HoppingWindow(Duration(hour, 1), Hop(minute, 5), Offset(millisecond, -1))
时间注意事项
对于跳跃窗口,每个窗口操作都输出窗口末尾的事件 (,这种情况发生在每个跃点大小) 。 Azure 流分析的窗口在窗口开始时间打开,并在窗口结束时间关闭。 例如,如果有从凌晨 12:00 到凌晨 12:05 的 5 分钟时段,则时间戳大于凌晨 12:00 且时间戳最长为 12:05(包括凌晨 12:05)的事件都将包含在此窗口中。 此窗口的输出将为单个事件,该事件基于与等于窗口结束时间的时间戳一起使用的聚合函数。 可以使用别名使用 System.Timestamp () 属性在 SELECT 语句中投影窗口输出事件的时间戳。