✅ Azure 流分析 ✅ 构造事件流
在处理实时事件的应用程序中,通常对某个时间段内属于某些事件子集执行基于集的计算(聚合)或其他作。 由于时间概念是复杂事件处理系统的基本必要条件,因此必须采用简单的方法来处理系统中查询逻辑的时间组件。 在 Azure 流分析中,这些事件子集通过窗口定义,以按时间表示分组。 本文介绍窗口及其定义方式、标识支持的窗口类型,以及如何将窗口用于各种运算符。
了解 Windows
窗口包含沿时间线的事件数据,使你能够对该窗口中的事件执行各种作。 例如,你可能想要对给定窗口中有效负载字段的值求和,如下图所示。
每个窗口作都会在窗口末尾输出事件。 Azure 流分析的窗口在窗口开始时间打开,并在窗口结束时间关闭。 例如,如果在上午 12:00 到上午 12:05 之间有 5 分钟窗口,则所有时间戳大于上午 12:00 且时间戳最多为 12:05(含时间戳)的事件都将包含在此窗口中。 窗口的输出将是一个基于与窗口结束时间相等时间戳的聚合函数的单个事件。 窗口的输出事件的时间戳可以使用别名的 System.Timestamp() 属性在 SELECT 语句中投影。 每个窗口自动将自身与第零小时对齐。 例如,5 分钟的翻转窗口将自身与 (12:00-12:05] 、(12:05-12:10]、...等)对齐。
窗口作后,事件的时间戳将与原始事件时间属性( 到达时间 或用于 TIMESTAMP BY 的列)不同。 始终可以使用 system.timestamp()访问事件的当前更新时间戳。
注释
所有窗口都应在 GROUP BY 子句中使用。
有五种类型的窗口:
所有情况下窗口的最大大小为 7 天。
可以使用 Windows 函数在同一 GROUP BY 语句中聚合多个时间窗口。