网站流量日志分析--统计分析--受访分析热门页面 topN|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习网站流量日志分析--统计分析--受访分析热门页面 topN

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第四阶段) 网站流量日志分析--统计分析--受访分析热门页面 topN】学习笔记,与课程紧密联系,让用户快速学习知识。

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


网站流量日志分析--统计分析--受访分析热门页面 topN


内容介绍

一、各页面访问统计

二、热门页面统计

 

一、各页面访问统计

1、统计分析的受访分析受访指的是受到访问网站哪个页面被别人浏览,因此它从页面角度开展分析。主要是针对数据中的 request 进行统计分析,比如各页面 PV,各页面 UV 等。

2、打开数据,跟受访相关的字段叫 request字段所描述的数就是指本次请求请求的是哪个资源,哪个页面如果想要更加精准统计需要把里面请求图片过滤掉,如果没有请求斜杠表示首页根据页面受访分析,也可以开展各种各样的的指标分析,比如各页面相关的基础指标统计,比如网站只有首页和两个详情页,统计今天到网站三个页面到底每个页面分别产生的 pv 多少uv 多少,统计pv根据页面进行分组分组完之后统计次数,count 即可如果统计 uv 就是统计的去ip,以上指标无非就是根据页面的字段 group by。因为在这种情况下页面就是分组维度例如:

统计各页面 pv,明确指标忽略静态资源的影响,就是不管请求图片还是请求什么都当做请求页请求页面的pv需要根据 request 进行分组相同到同一组,比如请求的是 git3图片,另外如果是同样的图片,就属于同一个页面,根据页面分组分组维度就是 request分完组之后进行 count 统计,统计出就是每个页面的pvuv如果 count request 统计就是 pv如果 count 去重的 ip 就是 uv

select request as request,count(request) as request counts from

ods_ weblog detail group by request having request is not null order by request counts desc limit 20;

 

二、热门页面统计

1、统计每日最热门的页面 top10

drop table dw. hotpages everyday;

create table dw. hotpages. everyday(day string,url string,pvs string);

insert into table dw hotpages, everyday

select '201 30918',a.request,a.request counts from

(select request as request,count(request) as request. counts from ods. weblog, detail where datestr= '20181101'

group by request having request is not null) a

order by a.request counts desc limit 10;

2、梳理出现 top n 问题想到 Over 分组函数,或者窗口函数

(1)数据表:dw_weblog_detail

每天的页面根据天气分组,根据的页面进行统计统计完之后,按照标号去记从需求上没有会话相关的概念,明显可以排除跟点击流相关的表,因此需要是 detail宽表

(2)分组维度:时间维度(day) day 比较特殊还是表的分区字段、页面维度(request)

天除了是分组字段以外宽表是分区表,123号哪一天还是分区字段特殊就使得计算指标的时候,可以采用更加方便的形式最热门页面top10,a页面b页面d页面c页面根据不同页面进行分组,所以还有第二个维度页面维度

(3)度量值:count(*)--->top10

3、打开画图板画一个宽表它是一个分区表分区维度就是天,20181101,当下数量数据等于20181101随着数仓引进值,2,3,4,20181102、20181103、20181104,当下场景想到row_number分组窗口函数可以根据进行分组pvs 进行排序,取前几个就是top几思路正确但是在当下需求中天非常的特殊统计每一天,不需要 group by 就可以找到每一天,因为天是分区字段

突破: day是表的分区字段通过 where 分区查询即可过滤出指定的day内容,

需要统计20181101,datestr=20181101即可再根据 request 的页面进行分组统计,统计完之后,取第十个就非常方便

4、写 sql

起别名分区过滤保证拿到的是这一天再次强调在序列中没有考虑静态资源的问题忽略它里面是图片还是 gs 都把它看成页面注意跟现实实际需求的区别,根据它进行分组完成之后,在每个组内进行count统计起别名如果想知道是哪个页面也可以把 t.request 写上计算没问题但是拿到的是所有的页面,所有的结果在数据中有些 request 为空,所以进行过滤,保证当中有空的不参加分组要的不是整体的热门页面,而是所有热门页面top10最多的前十个,把所有页面请求做倒序排序,只取前十条,就是 top10的问题排序完成之后它只要热门页面前十个或者热门页面前五个查询结果指定返回的条数非常方便的语法是 limit 语法这种方式计算比 row_number 方式计算更加方便整个问题的突破点在于时间维度的它是分区字段,如果统计每个小时热门页面那么就要使用 row_number 函数进行统计

select

t. request,count(*) as pvs

from dw. _weblog detail t where t.datestr ="20181101" group by t. request having

t.request is not null order by pvs desc limit 10;

复制指标执行20181101热门页面最多的是斜杠首页,比较符合客观规律,一家公司如果不出意外访问最多的的页面应该是首页如果要贴近实战过滤静态资源要再加一个条件where=true这是统计每天最热门页面时最佳简便的一种方式,结合数据考虑,不要死板的套用某些语法工具

5、保存数据结果打开的参考资料项目资料点击数据分析点击受访分析

image.png

(1)创建表为 dw_ hotpages_ everyday每天的热门页面,里面有字段url 就是 requestpvs首先创建临时表,或者中间表

create table dw_ hotpages_ everyday (day string,url string,pvs string)

(2)把查询语句结果进行 insert 插入嵌套查询,把查询的返回结果,做嵌套起个别名叫做 a,把 a 表只取前十条插入到创建的,相当于可以把数据结果保存方便后面的使用

insert into table dw_ hotpages_ everyday

select ' 20181101' ,a. request,a. request_ counts from

(select request as request, count (request) as request_ counts from dw_ weblog_ detail where datestr='20181101' group by request having request is not null ) a

order by a. request_ counts desc limit 10 ;

3复制语句打开 hive 终端进行执行创建完之后就可以打开创建验证数据是否被保存

Select from dw_hotpages_everyday

image.png

可以发现的数据已经被保存在页面上进行可视化展示报表将会非常方便,还可以做其他力度的精准控制,每小时每月每天每分每秒,如果有需要就可以进行 group by 分组统计,是受访页面的统计分析

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3天前
|
存储 SQL 监控
|
3天前
|
运维 监控 安全
|
6天前
|
监控 关系型数据库 MySQL
分析慢查询日志
【10月更文挑战第29天】分析慢查询日志
20 3
|
6天前
|
监控 关系型数据库 数据库
怎样分析慢查询日志?
【10月更文挑战第29天】怎样分析慢查询日志?
21 2
|
3天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
77 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
30天前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
182 3
|
3月前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
129 3
|
30天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1610 14
|
25天前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
25 0
|
27天前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
147 0