微軟外服工作札記③——視窗函數的介紹

2022-06-17 09:00:36

微軟外服工作札記③——視窗函數的介紹

在巨量資料流式處理和分析應用中,視窗(開窗)函數是個很重要的概念,用於對一段時間內的事件數量進行統計和分析。視窗函數運用的場景有對HTTP請求流的分析、物聯網裝置上報的流資料處理等,選擇合適的視窗函數能夠使得工作效率事半功倍。在微軟的Azure中,內建的流分析器中為我們提供了「翻轉(Tumbling)」、「跳躍(Hopping)」、「滑動(Sliding)」、「對談(Session)」和「快照(Snapshot)」五種視窗。在此我對五種視窗函數做一個簡單介紹,希望大家舉一反三,使用各種程式語言對這些函數進行實現,從而運用到各自的業務場景之中去。

文章為原創,除了微軟知識庫外,網上還沒有類似的完整的介紹。參考資料及圖片來源: Azure 流分析開窗函數簡介 | Microsoft Docs (圖片如有侵權,請通知我予以刪除)

翻轉視窗(TumblingWindow)

如圖所示,翻轉視窗是一種最簡單最基礎的視窗,統計固定時段內的事件數量,事件不會被重複計算,也不會被遺漏,統計的間隔也一致,如同定時器一樣,計算上一時間內發生的時間數量。比如統計網站時段存取數量:1點到2點的PV、2點到3點的PV...等。

跳躍視窗(HoppingWindow)

如圖所示,跳躍視窗類似與翻轉視窗,只是統計的時長不變,統計的間隔有所縮短,這樣會有一部分資料會被各個翻轉視窗重複統計進去。這在一些比較特別的統計中有用。還是拿電商舉例,比如:統計1點到3點的存取人數、2點到4點的人數、3點到5點的人數......

滑動視窗(SlidingWindow)

滑動視窗是一種比較特殊的視窗,它的統計時長不變,但是統計時間卻是連續的,可以看作把跳躍視窗(HoppingWindow)的統計時間間隔去掉了。因此,它的意義是能夠計算出任意時段內的事件數量,用於計算網站流量是否超標、給定一個時長統計最大數量(比如文章、貼文的數量)非常有用。

對談視窗(SessionWindow)

對談視窗和前三種視窗不同,它統計的時長是可變的。當事件產生(比如使用者開啟網頁)時視窗計時開始,隨著使用者不斷在頁面中點選跳轉、進行各種操作,最後一段時間內沒有操作對談超時,視窗的計時隨之結束。對談視窗用於記錄使用者一次登入在頁面上的所有行為非常有用,也是電商平臺用於對使用者行為進行跟蹤分析必備的重要手段,可以清楚地知道用於在每個頁面停留了多久,頁面和頁面是如何跳轉的,看了、買了那些東西,從哪個地方開始流失,廣告投放的質量(檢視、點選),何時進行回訪等等,從而對每個用於的瀏覽習慣、消費能力、甚至年齡、性別、職業等做精確畫像,也是巨量資料分析的方向之一。

快照視窗(SessionWindow)

快照視窗可以看作是一種特殊的翻轉視窗,只是它的統計時長比較短,一般為秒,在某一時刻內沒有事件發生則不予以統計,一般用於進行允許有一定精度誤差的並行度統計。

後記

同學們,大家在工作、學習過程中還知道有哪些視窗函數,可以在留言區告訴我,我會分享出來。大家一起來學習和進步!

微軟外服工作札記系列
聊聊我在微軟外服巨量資料分析部門的工作經歷及一些個人見解
②聊聊微軟的知識管理服務平臺和一些程式設計風格
③視窗函數的介紹