微軟外服工作札記③——視窗函式的介紹
在大資料流式處理和分析應用中,視窗(開窗)函式是個很重要的概念,用於對一段時間內的事件數量進行統計和分析。視窗函式運用的場景有對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)
快照視窗可以看作是一種特殊的翻轉視窗,只是它的統計時長比較短,一般為秒,在某一時刻內沒有事件發生則不予以統計,一般用於進行允許有一定精度誤差的併發度統計。
後記
同學們,大家在工作、學習過程中還知道有哪些視窗函式,可以在留言區告訴我,我會分享出來。大家一起來學習和進步!
微軟外服工作札記系列
①聊聊我在微軟外服大資料分析部門的工作經歷及一些個人見解
②聊聊微軟的知識管理服務平臺和一些程式設計風格
③視窗函式的介紹