无法确定在 Azure 流分析中使用哪个窗口

Posted

技术标签:

【中文标题】无法确定在 Azure 流分析中使用哪个窗口【英文标题】:Cant figure whichwindow to use in Azure Stream Analytics 【发布时间】:2019-09-05 13:13:10 【问题描述】:

我在 Azure 中创建了流分析作业,我想在 Power BI 中显示结果。这项工作非常简单,因为我要做的就是每 1 秒显示过去 10 分钟内发生的事件数。但是,当最后 10 分钟过去后,我需要重置计数器,这意味着我希望窗口在 10 分钟后重新启动。

我有以下选择:

使用持续时间为 10 分钟的滚动窗口:不,因为这不会每 1 秒显示一次结果,而是在 10 分钟后显示 使用跳跃窗口:HoppingWindow(Duration(minute, 10), Hop(second, 1))。这在前 10 分钟内有效,但在那之后就不行了,因为它会跳动 1 秒。 使用大小为 10 分钟的滑动窗口:否,因为当事件发生时它会滑动 10 分钟 使用 SessionWindow:否,因为会话窗口仅在窗口关闭时才会返回输出。

我想不出一个解决方案,因为我的目标是扩展一个窗口,直到它达到最长 10 分钟的持续时间(然后它重新打开)并每隔一秒产生一次输出。欢迎任何帮助。

【问题讨论】:

【参考方案1】:

首先,我认为这是一个常见的要求。由于您在问题中自己总结的每个窗口的详细限制,ASA 没有满足您要求的窗口类型:

每 1 秒刷新一次指标,每 10 秒重置一次指标 分钟。

显然,Hopping window 是比较符合你需求的。但是,它不会每 10 分钟重置一次数字。众所周知,在 Azure 流分析中,所有的 Window 函数都定义在一个固定长度的作业中,并且该作业需要连续执行。不支持此类重置功能。

我能想到的唯一想法仍然是使用跳跃窗口并每 10 分钟手动重新启动一次作业。请参阅此article。它可以强制作业每次计算前 10 分钟。我知道这可能有点不准确,但是如果您没有其他选择,您可以尝试一下,看看您是否可以接受。

【讨论】:

以上是关于无法确定在 Azure 流分析中使用哪个窗口的主要内容,如果未能解决你的问题,请参考以下文章

Azure 流分析会话窗口异常行为

Azure 流分析时间窗口查询

如何在 Azure 流分析中创建延迟滑动窗口

带有自定义窗口的 Azure 流分析

Azure 流分析:从滑动窗口计算斜率

Azure 流分析 - 应用窗口翻转时自定义“时间戳”出错