开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第四阶段): 网站流量日志分析--统计分析--多维统计分析--来访 host、时间维度】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/696/detail/12224
网站流量日志分析--统计分析--多维统计分析--来访 host、时间维度
1、统计每小时各来访 host 的产生的 pv 数并排序
drop table dw. pvs refererhost everyhour;
create table dw pvs refererhost eveyhourfref host string,month string,day string,hour string,ref host. cnts
bigint) partitioned by(datestr string);
insert into table dw. pvs refererhost. everyhour partition(datestr= '20181101')
select ref host,month,day,hour,count(*)as ref_ host. cnts
from ods weblog detail
group by ref, host,month,day,hour
having ref, host is not null
order by hour asc, day asc,month asc,ref host. cnts desc;
2、每,各可能是分组字段,host 是时间维度
(1)数据表:dw_ weblog_ detail
因为不涉及到点击流模型,所以是宽表事实表。
(2)分组字段:时间维度(hour)、来访维度(host)
host 是 referer 中一部分。
(3)度量值:count()
select http_ referer , ref, host , month , day,hour ,count(1) as pv_ referer. cnt
from dw_ web1og_ detai
l
group by http. referer ,ref. host ,month, day ,hour
having ref. host is not null
order by hour asc,day asc, month asc,pv_ referer_ cnt desc ;
sql 是根据 referer ,host ,month, day ,hour 进行分组。
这里要根据来访的 host 进行分组,referer 的出现是否会改变最终结果,查看数据,前五条 blog. fens .me 一样,应该分到同一组中,但是同一 host 不代表它们来自同一url,可能来自于 a 页面,也可能来自于 b 页面,需要注意需求以 host 为标准进行分组统计时,再把 url 出现就是 referer 出现在里面时就会改变最终的结果,局部一样,整体不一定一样,如果出现包含关系的分组,一定要结合当下的业务需求,分析是否会对结果产生影响。
3、打开 sql 脚本,创建中间表,叫做 refererhost_ everyhour 来访的每个小时,pv 统计中不会再用 url,url 出现会改变最终的结果,在上述指标之上,把 referer 分组字段排除掉,直接根据 host 进行分组,month,day 对结果没有影响,都是同一月同一天,因为20181101,一定找到的是这一天的数据,最终起决定作用的是host 和 hour,来到同一个 host,同一个小时,同一分组当中进行统计,过滤为空排序。
4、创建表,执行。
create table dw_ pvs_ refererhost everyhour(ref host string ,month string,day string
,hour string,ref. host_ .cnts bigint) partitioned by(datestr string) ;
根据小时根据时间的顺序,时间的正序,统计结果的倒序做统计排序,执行。
insert into table dw_ pvs_refererhost everyhour partition(datestre 20181101 )
select ref host , month , day ,hour ,count(1) as ref host cnts
from dw web log detai
l
groupbyrefhost,month,day,hour
having ref host is not nul
l
order by hour asc,day asc , month asc,ref host cnts desc ;
查询结果是否符合业务需求。
select*from dw_ pvs_ refererhost_ everyhour
limit
20;
把结果复制到 notepad++中,可以看到结果非常清晰。
每个小时来自不同 host 所产生的 pv 数,结果可以在数据报表中做展示,让别人能够知道一个小时中来自于哪个网站的人更多,注意区分清楚当中字段的取舍,会不会对结果产生影响。
select ref host , month , day, hour ,count(1) as ref_host_ cnts
from dw_web
l
og_ detai
l
group by ref host , month , day,hour
having ref_host is not nu
ll
order by hour asc,day asc, month asc,ref_host_ cnts desc;