滚动窗口(Azure 流分析)
翻转窗口是一系列固定大小、非重叠且连续的时间间隔。 下图演示了包含一系列事件的流,以及它们如何映射到 10 秒翻转窗口。
语法
{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 语句中投影。