开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第四阶段):网站流量日志分析--统计分析--分组 topN--业务需求】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/696/detail/12230
网站流量日志分析--统计分析--分组 topN--业务需求
1、统计分析当中分组 top 问题,所谓的 top 问题指的是把需要分析的数据按照某种规律进行排序,只取前面几个,比如 top3,top5最多的前五个。举例,在企业中,统计在今年双11购物金额最多的前三名是哪三个,这就是一个非常详细的top n 问题。top n 在面向分析,也就是olap中是一类非常常见的问题,还会引申出一个知识点分组函数,也称之为窗口函数。
2、需求描述,统计每小时各来访 host 的产生的 pvs 数最多的前N个。
(1)数据表:dw_pvs_ refererhost_everyhour
(2)分组字段:看需求中比较敏感的字眼,每和各,时间维度(hour),各来访的host,url主机当中一部分,从百度来,从谷歌来,来访维度(host)。
(3)度量值:count(*)基于两个维度分组之后,进行 pvs 的统计。没有过滤静态资源,还要找出最多的前 n 个,在统计完成后 outby
取出的 top 级,比如 top3,以前三个为例,需求看起来很明确,最核心是没有确认是哪个数据表,没有时间 session 会话相关的,跟点击流模型的数据应该排除,剩下宽表,但是在做需求,在做业务的时候,不要忘记思考指标是否熟悉,每小时来访host,统计平均数。指标在之前的序列中计算过,打开数仓表,计算的指标以中间结果的形式保存在数仓中,dw_pvs_ refererhost_everyhour 临时表中保存的数据正是之前统计的 pvs,没有 top n 的问题,进行数据查看,有 ref_host 从哪里来,month,day,hour 几月哪天几个小时,排序,第一个是111个,第二个13个,6个,3个,0点中的 host。因此当对数仓中的业务指标前后产生关联时不需要从宽表再重新计算。的数据表直接是用之前的这个表。
3、找出最多前 n 个,不是整体的最多前 n 个,而是每个小时内最多的前n个,看 hour 字段,111是来自 blog. fens.me,0点钟取三个,一点钟取三个,两点钟取三个,这类问题就是在 hive 当中或者面向分析当中非常常见的分组问题,找的是每个分组里最多的前几个。而不是全局的最多前几个,如果让计算全局最多的前几个,直接把 ref host cnts 字段做排序,排序之后直接取出现最多前几个,但是取top级时有分组的概念存在。
4、找出每个小时内最多的前几个,比如一个框代表是一个小时,零点钟,一点钟,两点钟。假如创建 pvs_refererhost_everyhour 表
根据 hour 默认会有分组的动作存在,在每个小时内是不一样的,简单伪造一些数据。
每个组内的前三个,分组 top n 问题,在数据不同的分组内找出组内的共性。
注意:再进行全局排序取前几个是行不通的。


