网站流量日志分析--统计分析--多维统计分析--来访 referer、时间维度|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习网站流量日志分析--统计分析--多维统计分析--来访 referer、时间维度

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第四阶段) 网站流量日志分析--统计分析--多维统计分析--来访 referer、时间维度】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/696/detail/12223


网站流量日志分析--统计分析--多维统计分析--来访 referer、时间维度


1、按照 referer 来访和时间维度进行相关指标统计分析涉及到两个维度的聚集一个是 referer人从哪里来来访的维度一个是时间维度看具体的指标

2、--统计每小时各来访 url 产生的 pv 量对指标进行梳理确定维度数据表分组字段

3、梳理

按照来访维度、时间维度分析

统计每/时各来访 url 产生的 pv 量当中每和各都是敏感的字眼从分组维度分组字段的基础上小时和 url 是分组字段

数据表:dw_ weblog_ detail

每小时来访 url 这里不涉及 session 会话的概念排除点击流模型表优先考虑 detail 事实宽表

分组字段时间维度来访 refererurl

到数据中看是否有和来访相关的字段打开数据在 detail 表中浏览前面是时间后面有字段是 http referer而且 referer 还做了预处理把里面 host 和 path 做了提取referer 所表明的是从哪个网站哪个链接哪个页面可能来自于同一家公司网站但是来自于不同的页面因此 referer 字段是确实存在的

度量值count()

count* 统计 pvcountdistinctip 统计 uv指标都是互通的以 pv 做相关的例子

select

count(*) as pvs分完组之后每个组做一个 count 统计

from dw_weblog_ detail t where t . datestr ="20181101" group byt.hour ,t.http_ referer;宽表起别名分区过滤通过这一条件拿到今天的结果进行分组注意有两个维度顺序对结果没有影响只不过影响执行的过程refereru 如何写还要看表中是如何表示的

image.png

把表保存到临时表中

4、打开 sql 脚本中把今天的结果创建一个表保存下来表名是 dw_ pvs_ referer_ everyhour每小时来访的 referer 所 产生的 pvs需要 referer_urlreferer_hostmonthdayhourpvs 字段跟来访维度相关的有两个referer_urlreferer_host跟时间相关的有 monthdayhour最后一个是 pvs统计在查询时需要返回这些字段如果查询 count(*) 只满足最后一个字段url 是标准的格式host 是它当中的一部分既要取得 referer_url 又要取得 host需求是根据 referer_url 进行分组的要想出线 host必须出现在分组段中它出现是否会影响结果

select

t.http_ referer ,t.ref _host,count(*) as pvs

from dw_ weblog_ detail t where t.datestr ="20181101" group by

t.hour ,t.http_ referer,t.ref_ host;

要想让它出现在这里要如何解决它不是分组字段的问题现在执行会报错非法引用错误把 host 字段作为分组字段存在需要自己确定是否会对结果产生影响来自同一个网站同一个 host 不一定来自于同一页面需求是根据 referer 进行分组的来自于同一个页面同一个路径下当中的 host100%一样因此 host 出现不会改变最后的分组条件因为 t.http_ referer,t.ref_ host两个条件是包含关系最终起决定作用的是 referer 一样同一个 referer 中 host 一样反过来则不是为了前面能出现这个字段所以把 host 作为分组字段除了 referer 维度还有时间维度monthday 出现在分组中也不会影响结果分区过滤时指定的数据一定是 20181101,group by 接 monthday 都不会影响根据 hour 分才会起决定作用

5、回到 sql 脚本中

group by http_referer, ref_host , month , day , hour,前面两个字段属于来访维度后面三个字段属于时间维度因为 referer 中包含 host所以起决定作用的是 referer,referer 一样host 一定一样时间维度中起决定作用的是hourmonth 通过分区过滤一定相同所以这就保证了最终返回结果中可以出现month 以及 host但又不改变最终结果在做数据处理时发现有些 referer 是丢失的字段它所取得的 host 就是空的结果在业务中可能需要把空的排除出去进行过滤用 having 做分组过滤refhostisnotnull 留下来排除下来就是为空的最后进行排序是否排序根据需求定比如统计完之后根据它的倒序排序时间正序排序满足结果

from dw weblog_ detail

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 ;

6、把 sql 进行保存创建中间临时表 pvs referer everyhour 复制建表语句打开 hive 终端做执行使用 insert 加 select 语句把分析的所选择的sql语句插入进去插入到创建的 pvs referer everyhour 中分区是20181101,从宽表中根据时间维度进行分组分组完把为空的过滤排序把排序结果插入到表中保证查询返回的字段跟待插入一致第一个字段是 referer 对应 url第二个字段是 host 对应hostmonthhourpv一一对应插入到数据就不会有错

7/执行没有过多的难度要心细思路要清晰确定在众多的分组字段中哪一个是起最终决定的查看结果Select from dw_ pvs_ referer everyhour limit 10;把反馈的结果在终端进行复制打开新的 notepad++页面粘贴就可以看到相关统计为了看的更清楚可以改为 select * from dw_pvs_referer_everyhour limit 20把结果复制出来

image.png

11月2号0点当中产生最多的是26.21.20等倒序排序还有1点,2点3点等每一个来访,

image.png

如上图是来访的 url 和来访的 host来自同一网站叫 blog. fens .me但是可能来自于不同的资源不同的路径反之如果来自同一个路径一定来自同一个网站url包含 hosturl 一样host 一样反之 host 一样url 不一定一样区分包含关系对分组的影响根据来访的 referer时间维度两个聚集统计相关的 pv 值把当中的 pv count 作为 count ip就是统计 uv 值来访的每小时 url 产生 pv 量

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
5月前
|
Linux 应用服务中间件 PHP
性能工具之linux常见日志统计分析命令
通过本文的介绍,我相信同学们一定会发现 linux三剑客强大之处。在命令行中,它还能够接受,和执行外部的 AWK 程序文件,可以对文本信息进行非常复杂的处理,可以说“只有想不到的,没有它做不到的。
180 1
|
2月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
4月前
|
存储 Java 关系型数据库
基于JSP的九宫格日志网站
基于JSP的九宫格日志网站
|
4月前
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
127 0
|
5月前
|
安全 Linux 调度
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
31 1
|
5月前
|
网络协议 应用服务中间件 Linux
centos7 Nginx Log日志统计分析 常用命令
centos7 Nginx Log日志统计分析 常用命令
252 2
|
5月前
|
C++ 索引
【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用
【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用
361 0
|
5月前
|
小程序 Linux 数据安全/隐私保护
Linux学习笔记十六:日志管理
Linux学习笔记十六:日志管理
|
5月前
|
监控 安全 前端开发
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
72 0
|
11月前
|
Java
JVM学习笔记-如何在IDEA打印JVM的GC日志信息
若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可。
103 0
下一篇
无影云桌面