我正在运行此查询的Azure Stream Analytics上运行一些测试作业:
SELECT System.Timestamp AS ts, Collect()
INTO output−queue
FROM input-hub TIMESTAMP BY tapp
GROUP BY HoppingWindow(second , 4 , 2)
并且事实证明,在某些情况下,窗口结束的时间戳是窗口 slide 参数的倍数,但有时不是。
例如,使用slide = 2
,您可以在此窗口中关闭时间戳:
2016-08-04T10:36:40.0000000Z
2016-08-04T10:36:42.0000000Z
2016-08-04T10:36:44.0000000Z
2016-08-04T10:36:46.0000000Z
2016-08-04T10:36:48.0000000Z
或者,在slide = 5
:
2016-08-04T14:55:15.0000000Z
2016-08-04T14:55:20.0000000Z
2016-08-04T14:55:25.0000000Z
2016-08-04T14:55:30.0000000Z
即使对于不同的幻灯片值(例如2,3,4,6,...)也是如此。而且,总是是真的!无论什么时候开始工作。
有些值(例如7,11)不符合此规则。
有人可以回答为什么会这样吗? 我想知道Azure SA如何决定何时打开第一个窗口。
非常感谢你!
答案 0 :(得分:4)
有不同种类的窗口(有关详细信息,请参阅here)。
首先,窗口开始/结束不依赖于作业开始时间。
从逻辑上讲,翻滚和跳跃窗口最好将其视为对时间线本身进行分区。例如,应用 1分钟的翻滚窗口将使结果仅出现在1分钟mod的时间值,即 2:00 pm , 2:01 pm < / em>等。
请注意,并非每1分钟边界必须有窗口结果,而是取决于计算。
滑动窗口可以在时间轴上的任何位置生成输出,与翻滚和跳跃窗口不同, 取决于时间戳的时间戳输入事件。考虑滑动窗口的最佳方法是窗口可以在任何输入事件处结束,并在该事件之前开始 slide 一段时间。换句话说,对于每个事件窗口,将包括在其之前或之前发生的所有事件。
希望这有帮助。