1

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

 1 year ago
source link: https://www.cnblogs.com/thanks/p/16384309.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

在大数据流式处理和分析应用中,窗口(开窗)函数是个很重要的概念,用于对一段时间内的事件数量进行统计和分析。窗口函数运用的场景有对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

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

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

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

作者:thanks       微信:-       QQ:305380844
         
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK