微软外服工作札记③——窗口函数的介绍

微软外服工作札记③——窗口函数的介绍

在大数据流式处理和分析应用中,窗口(开窗)函数是个很重要的概念,用于对一段时间内的事件数量进行统计和分析。窗口函数运用的场景有对HTTP请求流的分析、物联网设备上报的流数据处理等,选择合适的窗口函数能够使得工作效率事半功倍。在微软的Azure中,内置的流分析器中为我们提供了“翻转(Tumbling)”、“跳跃(Hopping)”、“滑动(Sliding)”、“会话(Session)”和“快照(Snapshot)”五种窗口。在此我对五种窗口函数做一个简单介绍,希望大家举一反三,使用各种编程语言对这些函数进行实现,从而运用到各自的业务场景之中去。

image

文章为原创,除了微软知识库外,网上还没有类似的完整的介绍。参考资料及图片来源: Azure 流分析开窗函数简介 | Microsoft Docs (图片如有侵权,请通知我予以删除)

翻转窗口(TumblingWindow)

image

如图所示,翻转窗口是一种最简单最基础的窗口,统计固定时段内的事件数量,事件不会被重复计算,也不会被遗漏,统计的间隔也一致,如同定时器一样,计算上一时间内发生的时间数量。比如统计网站时段访问数量:1点到2点的PV、2点到3点的PV…等。

跳跃窗口(HoppingWindow)

image

如图所示,跳跃窗口类似与翻转窗口,只是统计的时长不变,统计的间隔有所缩短,这样会有一部分数据会被各个翻转窗口重复统计进去。这在一些比较特别的统计中有用。还是拿电商举例,比如:统计1点到3点的访问人数、2点到4点的人数、3点到5点的人数……

滑动窗口(SlidingWindow)

image

滑动窗口是一种比较特殊的窗口,它的统计时长不变,但是统计时间却是连续的,可以看作把跳跃窗口(HoppingWindow)的统计时间间隔去掉了。因此,它的意义是能够计算出任意时段内的事件数量,用于计算网站流量是否超标、给定一个时长统计最大数量(比如文章、帖子的数量)非常有用。

会话窗口(SessionWindow)

image

会话窗口和前三种窗口不同,它统计的时长是可变的。当事件产生(比如用户打开网页)时窗口计时开始,随着用户不断在页面中点击跳转、进行各种操作,最后一段时间内没有操作会话超时,窗口的计时随之结束。会话窗口用于记录用户一次登录在页面上的所有行为非常有用,也是电商平台用于对用户行为进行跟踪分析必备的重要手段,可以清楚地知道用于在每个页面停留了多久,页面和页面是如何跳转的,看了、买了那些东西,从哪个地方开始流失,广告投放的质量(查看、点击),何时进行回访等等,从而对每个用于的浏览习惯、消费能力、甚至年龄、性别、职业等做精确画像,也是大数据分析的方向之一。

快照窗口(SessionWindow)

image

快照窗口可以看作是一种特殊的翻转窗口,只是它的统计时长比较短,一般为秒,在某一时刻内没有事件发生则不予以统计,一般用于进行允许有一定精度误差的并发度统计。

后记

同学们,大家在工作、学习过程中还知道有哪些窗口函数,可以在留言区告诉我,我会分享出来。大家一起来学习和进步!

微软外服工作札记系列
聊聊我在微软外服大数据分析部门的工作经历及一些个人见解
②聊聊微软的知识管理服务平台和一些编程风格
③窗口函数的介绍