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 字段被计算(如果它出现在某处,一定错过了)。
以下是我一直在查看的文档的链接:
- 翻滚WINDOWhttps://docs.microsoft.com/en-us/stream-analytics-query/tumbling-window-azure-stream-analytics
- 时间戳 https://docs.microsoft.com/en-us/stream-analytics-query/timestamp-by-azure-stream-analytics
我在 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
- 如果我有数据流,我创建 selected/chosen 的 window 的开始日期时间如何?
- 它是否基于 EntryTime 中的最早时间(我 select 按字段作为时间戳),然后从逻辑上形成初始 window 以包含 或 是否取决于我何时开始我的流作业 运行 (从作业开始的时间创建 windows开始及之后)?
- 在这种情况下,它取决于我何时启动流作业,确保启动 window 的最佳方法是什么,以便它包含初始(和后续)[=] 中所需的所有数据75=](在我的场景中,按实际全天进行汇总,例如 2022-02-22 开始 T00:00:00 到 2022-02-23 T00:00:00)?
- 是否可以将开始时间设置为自定义并 select 它从一天的开始开始?例如,我将工作设置为在 2022-02-22 T00:00:00 开始,这样它将在此时开始 window,以便第一个翻滚 window(以及后续的)将包括整个从 2022-02-22 T00:00:00 开始按天计算的数据天数。
想法
到目前为止,我一直假设我在 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 完成后填充。
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
时间戳的数据不会被输出。
上下文
我一直在阅读有关如何将 TUMBLINGWINDOW 函数与 TIMSTAMP BY 子句一起使用的文档,但似乎找不到关于包含 TUMBLING 的查询的开始日期如何的明确解释WINDOW 和 TIMESTAMP BY 字段被计算(如果它出现在某处,一定错过了)。
以下是我一直在查看的文档的链接:
- 翻滚WINDOWhttps://docs.microsoft.com/en-us/stream-analytics-query/tumbling-window-azure-stream-analytics
- 时间戳 https://docs.microsoft.com/en-us/stream-analytics-query/timestamp-by-azure-stream-analytics
我在 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
- 如果我有数据流,我创建 selected/chosen 的 window 的开始日期时间如何?
- 它是否基于 EntryTime 中的最早时间(我 select 按字段作为时间戳),然后从逻辑上形成初始 window 以包含 或 是否取决于我何时开始我的流作业 运行 (从作业开始的时间创建 windows开始及之后)?
- 在这种情况下,它取决于我何时启动流作业,确保启动 window 的最佳方法是什么,以便它包含初始(和后续)[=] 中所需的所有数据75=](在我的场景中,按实际全天进行汇总,例如 2022-02-22 开始 T00:00:00 到 2022-02-23 T00:00:00)?
- 是否可以将开始时间设置为自定义并 select 它从一天的开始开始?例如,我将工作设置为在 2022-02-22 T00:00:00 开始,这样它将在此时开始 window,以便第一个翻滚 window(以及后续的)将包括整个从 2022-02-22 T00:00:00 开始按天计算的数据天数。
想法
到目前为止,我一直假设我在 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 完成后填充。
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
时间戳的数据不会被输出。