✅ Azure 串流分析 ✅ 網狀架構事件串流
不同於 輪轉視窗,跳躍視窗模型排程的重疊視窗。 跳動視窗規格包含三個參數: timeunit、 windowsize (每個窗口持續多久)和 躍點 (每個視窗相對於前一個視窗向前移動多少)。 此外, offsetsize 也可以用來做為選擇性的第四個參數。 請注意,輪轉視窗只是跳躍視窗,其「躍點」等於其「大小」。
下圖顯示具有一系列事件的數據流。 每個方塊都代表跳躍視窗,以及計算為該視窗一部分的事件,假設 'hop' 為 5,而 'size' 為 10。
語法
{HOPPINGWINDOW | HOPPING} ( timeunit , windowsize , hopsize, [offsetsize] )
{HOPPINGWINDOW | HOPPING} ( Duration( timeunit , windowsize ) , Hop (timeunit , windowsize ), [Offset(timeunit , offsetsize)])
備註
跳躍視窗可以透過上述兩種方式使用。 如果 windowsize 和 hopsize 有相同的 timeunit,您可以使用它而不使用 Duration 和 Hop 函式。 Duration 函式也可以與其他類型的視窗搭配使用,以指定視窗大小。
論點
timeunit
這是 視窗化 或 躍點的時間單位。 下表列出所有有效的 timeunit 自變數。
| Timeunit | 縮寫 |
|---|---|
| 日 | dd、d |
| 小時 | 呵呵 |
| 分鐘 | mi, n |
| 秒 | ss、s |
| 毫秒 | 毫秒 |
| 微秒 | mcs |
windowsize
描述視窗大小的大整數。 Windowsize 是靜態的,而且無法在運行時間動態變更。
在所有情況下,視窗的大小上限為 7 天。
hopsize
描述躍點大小的大整數。
offsetsize
根據預設,跳躍視窗會包含在視窗結尾,開頭為獨佔,例如下午 12:05 – 下午 1:05 將包含正好在下午 1:05 發生的事件,但不包含在下午 12:05:PM 發生的事件(這些事件會是下午 12:00 - 下午 01:00 的一部分)。
Offset 參數可用來變更行為,並在窗口開頭包含事件,並排除最後發生的事件。
範例
SELECT System.Timestamp() AS WindowEnd, TollId, COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY TollId, HoppingWindow(Duration(hour, 1), Hop(minute, 5), Offset(millisecond, -1))
時間考慮
每個視窗作業都會輸出視窗結尾的事件(在跳躍窗口的情況下,這會在每個躍點大小發生)。 Azure 串流分析的視窗會在時間範圍開始時間開啟,並在時間結束時間關閉。 例如,如果您有從上午 12:00 到上午 12:05 5 的 5 分鐘時間範圍,則包含時間戳大於上午 12:00 且包含時間戳最多 12:05 的事件都會包含在此視窗中。 窗口的輸出會根據與時間範圍結束時間相等時間戳的聚合函數,是單一事件。 窗口的輸出事件時間戳可以使用別名的 System.Timestamp() 屬性,在 SELECT 語句中投影。