Stream Analytics:When using a TUMBLING WINDOW window start 的开始时间是基于流中的最早时间还是作业的开始时间?

Stream Analytics:When using a TUMBLING WINDOW is the start time of the window start based on the earliest time in the stream or start time of the job?

上下文

我一直在阅读有关如何将 TUMBLINGWINDOW 函数与 TIMSTAMP BY 子句一起使用的文档,但似乎找不到关于包含 TUMBLING 的查询的开始日期如何的明确解释WINDOW 和 TIMESTAMP BY 字段被计算(如果它出现在某处,一定错过了)。

以下是我一直在查看的文档的链接:

我在 TUMBLING WINDOW LINK 的时间考虑部分下面引用(这是我的问题出现的主要来源)

Time Consideration

"Every window operation outputs event at the end of the window. The windows of Azure Stream Analytics are opened at the window start time and closed at the window end time. For example, if you have a 5 minute window from 12:00 AM to 12:05 AM all events with timestamp greater than 12:00 AM and up to timestamp 12:05 AM inclusive will be included within this window. The output of the window will be a single event based on the aggregate function used with a timestamp equal to the window end time. The timestamp of the output event of the window can be projected in the SELECT statement using the System.Timestamp() property using an alias."

它提到了 5 分钟 window 但是似乎没有详细说明为什么 5 分钟 windows 在这个时候开始,最重要的是这将如何概括。

注意:我知道这一点可能超出了本文档的范围,但我也没有在其他地方找到对此的明确解释。

问题

假设我有以下代码(从文档中复制并稍作修改)

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

想法

到目前为止,我一直假设我在 TIMESTAMP BY 子句中选择的任何字段(例如上面代码片段中的 EntryTime)都会定义创建 window 的字段,然后取决于在选择的 TUMBLINGWINDOW 函数参数上(例如上面代码片段中的 day wise)将处理所选时间戳字段的“windowed”或切片方式。 Stream Analytics 然后将根据工作开始时源时间字段中存在的最早日期处理 window 创建(例如,即使我在 2022-02-22 T09:00:00 UTC 开始工作,如果数据存在于 2022-02-21 日,然后查询将输出该日的数据 2022-02-21T00:00:00 UTC 到 2022-02-22T00:00:00 UTC 因为那会有通过这一点,当前 window(2022-02-22T00:00:00 到 2022-02-23T00:00:00)将在 window 完成后填充。

来自此处的文档:https://docs.microsoft.com/en-us/stream-analytics-query/windowing-azure-stream-analytics#understanding-windows

Every window operation outputs event at the end of the window. The windows of Azure Stream Analytics are opened at the window start time and closed at the window end time. For example, if you have a 5 minute window from 12:00 AM to 12:05 AM all events with timestamp greater than 12:00 AM and up to timestamp 12:05 AM inclusive will be included within this window. The output of the window will be a single event based on the aggregate function used with a timestamp equal to the window end time. The timestamp of the output event of the window can be projected in the SELECT statement using the System.Timestamp() property using an alias. Every window automatically aligns itself to the zeroth hour. For example, a 5 minute tumbling window will align itself to (12:00-12:05] , (12:05-12:10], ..., and so on.

如果您有要输出的历史数据,您可以将自定义查询开始时间设置为流媒体源的最大缓存(通常为 7 天)之前的任何时间点或查询开始时间上次停止,因此您在维护期间不会丢失任何数据 windows。

但是,查询只会输出时间戳在查询开始时间之后的数据。

因此,假设您的第一个数据的时间戳为 2022-02-20 01:23:00,第二个数据的时间戳为 2022-02-21 15:08:00。您在 2022-02-21 14:00:00 开始直播工作,因此您的 10 分钟 windows 以 21 日午夜为基准,然后从那里开始 windows 10 分钟。直到 21 日的 15:00 - 15:10 window 之前,查询不会输出任何内容,因为这是第一个 window,它既是 post 您的查询开始时间,又包含数据。在这种情况下,您可以看到 windows 是如何工作的,以及为什么带有 2022-02-20 01:23:00 时间戳的数据不会被输出。