azure - 无法确定在 Azure 流分析中使用哪个窗口
问题描述
我在 Azure 中创建了流分析作业,我想在 Power BI 中显示结果。这项工作非常简单,因为我要做的就是每 1 秒显示过去 10 分钟内发生的事件数。但是,当最后 10 分钟过去时,我需要重置计数器,这意味着我希望窗口在 10 分钟后重新启动。
我有以下选择:
- 使用持续时间为 10 分钟的翻转窗口:不,因为这不会每 1 秒显示一次结果,而是在 10 分钟后显示
- 使用 Hopping 窗口:HoppingWindow(Duration(minute, 10), Hop(second, 1))。这在前 10 分钟内有效,但在那之后就不行了,因为它会跳动 1 秒。
- 使用大小为 10 分钟的滑动窗口:否,因为当事件发生时它会滑动 10 分钟
- 使用 SessionWindow:否,因为会话窗口仅在窗口关闭时才返回输出。
我想不出一个解决方案,因为我的目标是一个窗口,它会扩展直到达到最长 10 分钟的持续时间(然后它会重新打开)并每隔一秒产生一次输出。欢迎任何帮助。
解决方案
首先,我认为这是一个普遍的要求。作为您在问题中自己总结的每个窗口的详细限制,ASA 没有满足您要求的窗口类型:
每 1 秒刷新一次指标,每 10 分钟重置一次指标。
显然,Hopping 窗口是比较符合您的需求的。但是,它不会每 10 分钟重置一次数字。众所周知,在 Azure 流分析中,所有的 Window 函数都定义在一个固定长度的作业中,并且该作业需要连续执行。不支持此类重置功能。
我能想到的唯一想法仍然是使用跳跃窗口并每 10 分钟手动重新启动一次作业。请看这篇文章。它可以强制作业每次计算前 10 分钟。我知道这可能有点不精确,但是如果您没有其他选择,您可以尝试一下,看看您是否可以接受。
推荐阅读
- postgresql - 如何使用 dbeaver 连接到在 docker 上设置、在本地主机上运行的 Postgresql?
- lua - 尚不支持 4D 和 4D 张量之间的乘法
- python - 使用 runner = CrawlerRunner() 时,Scrapy 脚本无法上传到 s3:只能使用 process = CrawlerProcess()
- java - 我可以在 .removeif() 中使用 .size() 作为 ArrayLists 的条件吗?
- ios - UITextfield中的iOS Swift十进制输入从右到左
- python-3.x - 条件参数的 Pythonic 解决方案
- assembly - 如何在 MARIE 中将数字 x 提高到 y 次方?
- javascript - 向有效负载添加超过 1 个数值
- saleor - 销售或可选应用程序
- excel - SSIS Excel 连接“无法加载任何表或视图”