✅ Azure 流分析 ✅ 构造事件流
与 翻转窗口不同,跳跃窗口模型计划重叠窗口。 跳跃窗口规范由三个参数组成: 时间单位、 窗口大小 (每个窗口持续多长时间)和 跃点 (每个窗口相对于上一个窗口向前移动多少)。 此外, 偏移量 可用作可选的第四个参数。 请注意,翻转窗口只是一个跳跃窗口,其“跃点”等于其“大小”。
下图显示了包含一系列事件的流。 每个框表示一个跳跃窗口,以及计算为该窗口的一部分的事件,假设“跃点”为 5,“大小”为 10。
语法
{HOPPINGWINDOW | HOPPING} ( timeunit , windowsize , hopsize, [offsetsize] )
{HOPPINGWINDOW | HOPPING} ( Duration( timeunit , windowsize ) , Hop (timeunit , windowsize ), [Offset(timeunit , offsetsize)])
注释
跳跃窗口可通过上述两种方式使用。 如果窗口化和跃点大小具有相同的时间单位,则可以在没有持续时间和跃点函数的情况下使用它。 Duration 函数还可用于其他类型的窗口,以指定窗口大小。
论据
timeunit
窗口化或跃点的时间单位。 下表列出了所有有效的 timeunit 参数。
Timeunit | 缩写形式 |
---|---|
日 | dd、d |
小时 | hh |
分钟 | mi、 n |
秒 | ss、s |
毫秒 | 女士 |
微秒 | mcs |
windowsize
描述窗口大小的大整数。 窗口化是静态的,在运行时无法动态更改。
所有情况下窗口的最大大小为 7 天。
hopsize
描述跃点大小的大整数。
offsetsize
默认情况下,跳跃窗口在窗口末尾包含,开头是独占的 (例如下午 12:05 – 下午 1:05 – 1:05)将包含恰好在下午 1:05 发生的事件,但不包括在下午 12:05:PM 发生的事件(这些事件将是下午 12:00 - 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(含时间戳)的事件都将包含在此窗口中。 窗口的输出将是一个基于与窗口结束时间相等时间戳的聚合函数的单个事件。 窗口的输出事件的时间戳可以使用别名的 System.Timestamp() 属性在 SELECT 语句中投影。