翻转窗口

✅ Azure 流分析 ✅ 构造事件流

翻转窗口是一系列固定大小的、非重叠和连续的时间间隔。 下图演示了一个包含一系列事件的流,以及如何将其映射到 10 秒翻转窗口。

流分析翻转窗口 5 分钟

语法

{TUMBLINGWINDOW | TUMBLING} ( timeunit  , windowsize, [offsetsize] )  
{TUMBLINGWINDOW | TUMBLING} ( Duration( timeunit  , windowsize ), [Offset(timeunit  , offsetsize)] )  
  

注释

可采用上述两种方式使用翻转窗口。 若要允许与跳跃窗口保持一致性,持续时间函数还可用于所有类型的窗口以指定窗口大小。 窗口持续时间必须是正浮点常量。

论据

timeunit

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

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

windowsize

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

窗口的最大大小为 7 天。

offsetsize

默认情况下,翻转窗口在窗口的末尾是独占的,开头是独占的(例如下午 12:00 – 下午 1:00)将包含恰好在下午 1:00 发生的事件,但不包括在下午 12:00 发生的事件(这些事件将是上午 11:00 - 下午 12:00 的一部分)。

Offset 参数可用于更改此行为,并在窗口开头包含事件,并排除在末尾发生的事件。

例子

SELECT System.Timestamp() AS WindowEnd, TollId, COUNT(*)  
FROM Input TIMESTAMP BY EntryTime  
GROUP BY TollId, TumblingWindow(Duration(hour, 1), Offset(millisecond, -1))
SELECT 'reset' AS command
INTO
    alert
FROM
    temperature TIMESTAMP BY timeCreated
GROUP BY TumblingWindow(second,15)
HAVING Avg(machine.temperature) > 25

时间注意事项

每个窗口作都会在窗口末尾输出事件。 Azure 流分析的窗口在窗口开始时间打开,并在窗口结束时间关闭。 例如,如果在上午 12:00 到上午 12:05 之间有 5 分钟窗口,则所有时间戳大于上午 12:00 且时间戳最多为 12:05(含时间戳)的事件都将包含在此窗口中。 窗口的输出将是一个基于与窗口结束时间相等时间戳的聚合函数的单个事件。 窗口的输出事件的时间戳可以使用别名的 System.Timestamp() 属性在 SELECT 语句中投影。

另请参阅

跳跃窗口
滑动窗口
窗口处理