开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第四阶段): 网站流量日志分析--统计分析--基础指标统计分析(vv、ip)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/696/detail/12214
网站流量日志分析--统计分析--基础指标统计分析(vv、ip)
内容介绍:
一、访向次数(VV)
二、IP
一、访向次数(VV)
会话次数,指今天到网站产生多少次会话,在一次会话中,它可能只有一步操作,也可能有多步操作,只要这些操作时间差在30分钟以内即可。
一天之内的会话次数(session 数)
1、数据表:ods_ click_ stream visit
不能使用宽表,这里需要统计会话的次数,打开宽表,在宽表中没有跟会话相关的概念,在 dv 中介绍了一个所谓的点击流模型,在点击流模的两个表中型中一个叫 pageviews,一个叫 visit,session 概念,因此基于指标的计算,不能再是宽表,使用宽表再去识别筛选也可以,但是操作量和难度比较大,明确了数据来自于点击流之后,还要进行取舍,因为点击流模型有两张表,要搞清两个表之间的关系,pageviews是对原数据中每一条记录做会话的识别,visit 对同一个会话的 session 做聚集,在一个会话内不管有10部还是8部还是几部,都会聚集成一条,因此从 session 字段看,在 pageviews 可能会存在重复的 session,一个会话有多条记录,而在 visit 中根据 session 做了聚集,只要第一步和最后一步变成一条数据,所以它没有重复的,因此基于统计会话的次数,两个表都可以使用,但是差距在于用 pageviews 统计 session 的次数,需要对 session 做 distinct 去重,而 visit 不需要去重,从效率的角度看应该用 visit,基于分析 vv 指标不再是宽表,而是点击流模型的 visit 表。
2、分组字段:分组条件,时间( day) day 比较特殊还是表的分区字段通过 where 分区过滤即可。
通过对点击流模型的梳理,发现它也是分区表,分区也是天,一天之内。
3、度量值计:count(session) 如果使用 ods_click_pageviews 进行计算 count(distinct session)
这就是两个表的区别,不用 distinct 效率会更高一点。
select
count(t.session) as
vv
统计出的结果访问次数
from ods_ c
l
ick_ stream visit t where t. datestr="20181101";
不是宽表,点击流模型的 visit 表,为了方便起名叫 t,因为数据和宽表的数据一样,分区信息也一样,也要结合在企业中的具体情况确定
在 hive 中执行,得出结果是57,也就是今天有57个会话,计算比较精准。
二、IP
1、ip 曾经可以表示用户,跟 uv 指标比较相似,当下再表示用户不准确,
select count(distinct remote addr) as ips from ods weblog detail where datestr ="20181101";
在表中直接进行 distinct 去重即可。
2、ip 一天之内不重复的 ip 个数。
跟上述的 uv 计算一样。
select
count(distinct remote addr) as
ip
from dw_ web
l
og_ detai
l
t where t. datestr="20181101";
3、现在计算的四个指标只会出现在 hive 的终端上,因此 show tables 并没有吧计算结果保存下来,相当于临时计算的结果,后面需要展示数据可视化,总不能去执行分析,所以在企业中对于指标,通常去创建一个中间表或者临时表,把数据记录下来,选择项目的第四个数据分析中的第一个基础指标多维统计。
打开之后,可以看到执行的各种 sql,重点是创建一个表叫做基础指标的基本信息表,表名字叫做 webflow basic info 网站流量基础信息表
drop table dw_ webflow_ basic_ info;
create table dw_ webflow_ basic_ info (month string , day string ,
pv[ bigint,uv bigint,ip bigint,vv bigint) partitioned by (datestr string) ;
分区,相当于计算出的一批基础标插入到表中,之后需要计算时比较方便,
insert into table dw_ webflow_ basic_ info partition (datestr="20181101")
select
'201811' ,'01' ,a.*,b.* from
(select count(*) as pv, count (distinct remote_ addr) as uv, count (distinct remote_ addr) as ips
from dw_ weblog_ detail
where datestr ='20181101') a join
(select count (distinct session) as vv3 from ods_ click_ stream_ visit where datestr ="20181101") b;
执行,再次强调创建表名,在企业中一个表的表名通常建议以简短的英文便于理解的英文表示,不要写汉语拼音,复制粘贴到 hive 终端,创建了一个表,接下来用 insert 把四个查询语句结果插入到创建的 dw webflow basic info 表中,指定分区是20181101,从宽表中统计出 pv uv 和 ip,通过点击流模型 visit 表统计出 count vv,把两个结果做一个 join,联合起来把结果插入到 dw_ webflow_ basic_ info 表中。非常简单明细的方案,如果不了解 join 语句也可以分别执行四个语句分别进行插入,相当于做了一个整合。
基础指标结果保存入库:
drop table dw_ webflow_ basic_ info;
create table dw_ webflow_ basic_ info (month string,day string,
pv bigint,uv bigint,ip bigint,vv bigint) partitioned by (datestr string) ;
insert into table dw_ webflow_ basic_ info partition (datestr="20181101")
select '201811' ,'01' ,a.*,b.* from
(select count(*) as pv , count (distinct remote_ addr) as uv, count (distinct remote addr) as ips
from dw_ weblog_ detail
where datestr ='20181101') a join
(select count (distinct, session) as
vvs
from ods_ click_ stream_ visit where datestr ="20181101") b;
进入终端进行执行,输入show
tables
查看是否成功,输入 select
*
from
dw_ webflow_ basic_ info
,得到基础信息,为了方便也可以复制出来到 notepad++中,打开新的页面,
可以发现的得到了20181101的基础信息,pv 是13770,uv 是1027,ip 是1027,vv 是57,随着每天项目的不断维护,每天都会得到基础信息表,那么进行对比分析,模型展示,柱状图折线图就非常方便。基础指标分析对于业务的解读极其重要。