Azure 流分析:如果作业查询是按天计算的 TUMBLINGWINDOW,流分析作业何时实际处理数据?

2024-05-05

Context

我使用 Azure 门户创建了一个流作业,该作业使用每日 TUMBLINGWINDOW 聚合数据。下面附加了一个从文档修改而来的代码片段,它显示了类似的逻辑。

SELECT
    DATEADD(day, -1, System.Timestamp()) AS WindowStart
    System.Timestamp() AS WindowEnd, 
    TollId, 
    COUNT(*)
FROM Input TIMESTAMP BY EntryTime  
GROUP BY TumblingWindow(day, 1), TollId

Question

如果 TUMBLINGWINDOW 在窗口末尾输出 (如果我在任何一天的午夜开始工作,则意味着第二天的午夜过后不久)那么白天数据是否仍在处理中,还是仅根据查询输出的时间进行处理?

如果能详细解释一下这是如何工作的那就太好了。还没有找到任何真正详细解释这些概念的文档(带有这些边缘情况)

Thoughts

我正在尝试衡量如果我停止一个作业的运行并从“上次停止时”重新启动它,它是否仍然会导致相同的聚合,就好像我一直将其保持打开状态一样(如果会那么如何)?请记住我正在使用日常的 TUMBLINGWINDOW?


滚动窗口的输出时间是绝对的,并且不依赖于查询开始时间。每日滚动窗口在 00:00:00AM 生成输出,每小时生成一个输出(00:00:00AM、01:00:00AM...)等。

所以这里的作业等待 24 小时,耐心地将数据加载到内存中,直到凌晨 00:00,以便它可以执行计算并输出结果。然后它又开始等待。

在这里,通过每日窗口,没有什么可以阻止您从上午 00:01 到下午 23:59 停止作业。

(编辑 - 这不正确 - 已修复如下) 请注意,当您启动它时,开始时间选项 https://learn.microsoft.com/en-us/azure/stream-analytics/start-job#start-options需要覆盖缺失的时间(因此要么是“上次开始时”——因为我们检查点数据——要么是 24 小时前的自定义时间)。

(更正)请注意,当您启动它时,开始时间选项 https://learn.microsoft.com/en-us/azure/stream-analytics/start-job#start-options需要覆盖您想要覆盖的输出窗口 - ASA 将重新加载所有必要的数据,即使是在该时间之前。你用开始时间驱动的是输出时间,而不是数据输入周期。

只要数据仍然存在(请注意事件中心的保留期,默认为 1 天),您可以暂停整整一周,并让作业重新处理整个期间以发出 7 个结果。为此,您只需要一个涵盖该时间段的开始时间。

请注意,重新摄取整个数据集并计算其操作需要时间。因此,如果您绝对需要每日平均值在上午 00:00:00 输出,请提前几分钟重新启动作业,以便它可以赶上。否则,您将在 00:00:10AM(或者将数据重新加载到内存中所需的任何时间)获得该输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure 流分析:如果作业查询是按天计算的 TUMBLINGWINDOW,流分析作业何时实际处理数据? 的相关文章

随机推荐