滚动窗口(Azure 流分析)

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

流分析翻转窗口 5 分钟

语法

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

注意

可按上述两种方式使用滚动窗口。 为了与跳跃窗口保持一致性,还可以将 Duration 函数与所有类型的窗口配合使用以指定窗口大小。 窗口持续时间必须是正浮点数常量。

参数

timeunit

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

时间单位 缩写形式
day dd、d
hour hh
minute mi、n
第 2 个 ss、s
毫秒 ms
微秒 mcs

windowsize

描述窗口大小的大整数。 windowsize 是静态的,不能在运行时动态更改。

窗口的最大大小为 7 天。

offsetsize

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

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 流分析的窗口在窗口开始时间打开,在窗口结束时间关闭。 例如,如果有一个 5 分钟的时段,时间从上午 12:00 到凌晨 12:05,时间戳大于上午 12:00 且时间戳最长为 12:05(包括上午 12:05)。 此窗口的输出将为单个事件,该事件基于与等于窗口结束时间的时间戳一起使用的聚合函数。 窗口的输出事件的时间戳可以使用别名的 System.Timestamp () 属性在 SELECT 语句中投影。

另请参阅

跳跃窗口
滑动窗口
窗口化