1

我正在运行此查询的 Azure 流分析上运行一些测试作业:

SELECT System.Timestamp AS ts, Collect()
INTO output−queue
FROM input-hub TIMESTAMP BY tapp
GROUP BY HoppingWindow(second , 4 , 2)

事实证明,在某些情况下,窗口结束的时间戳是窗口滑动参数的倍数,但有时不是。

例如,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 如何决定何时打开第一个窗口。

太感谢了!

4

1 回答 1

4

有不同类型的窗口(有关详细信息,请参见此处)。

首先,窗口开始/结束不依赖于作业开始时间。

从逻辑上讲,翻转跳跃窗口最好被认为是对时间线本身进行分区。例如,应用1 分钟的翻滚窗口将使结果仅出现在 1 分钟模的时间值,即2:00pm2:01pm等。

请注意,并非每 1 分钟边界都必须有窗口结果,而是取决于计算。

滑动窗口可以在时间轴上的任何点产生输出,与翻滚和跳跃窗口不同,它确实取决于输入事件的时间戳。考虑滑动窗口的最佳方法是窗口可以在任何输入事件处结束,并在该事件之前开始滑动一段时间。换句话说,每个事件窗口将包括在它之前的幻灯片时间或之前发生的所有事件。

希望这可以帮助。

于 2016-09-06T19:50:27.457 回答