网站流量日志分析--统计分析--基础指标统计分析(pv、uv)|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习网站流量日志分析--统计分析--基础指标统计分析(pv、uv)

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第四阶段) 网站流量日志分析--统计分析--基础指标统计分析(pv、uv)】学习笔记,与课程紧密联系,让用户快速学习知识。

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


网站流量日志分析--统计分析--基础指标统计分析(pv、uv)


内容介绍

一、模块开发-统计分析

二、基础指标多维统计分析

 

一、模块开发-统计分析

1、数据仓库建设好以后,用户就可以编写 Hive SQL 语句对共进行访问并对共中数据进行分析。

2、在实际生产中,企业实际开发过程中究竞需要哪些统计指标通常由数据需求相关部门人员提出,而且会不断有新的统计需求产生,以下为网站流量分析中的些典型指标示例。

3、对于开发者要做的就是正确解读理清指标背后的业务含义不要出现歧义思考在书上哪些表可以支撑指标的计算以及思考编写 Hive SQL 时怎么能够计算出来指标

 

二、基础指标多维统计分析

1、基础指标统计

对于指标业务含义的解读是关键。基础指标又称为骨灰级指标是任何一家公司开展网站分析中必须要计算的大家都要来计算的指标很简单但是要理清它背后的含义并且思考该通过怎样的数据和方式把它计算出来

(1)PageView 浏览次数(pv)。

一天之内网站页面被加载的总次数一天之内请求一次页面 pv+1,请求多次pv累加

数据表确定数据所在的表是哪个通过哪个表可以计算指标如果直接有表就直接用如果没有考虑要怎么把它变出来

分组字段在实际的开发中有大量的分组统计分组可能不只一个根据需求进行确定分组就是 geluba 后面的字段

度量值取值还是取个数取最大值还是最小值平均值还是 top n

打开 hive 服务器show tables 查看当前数据中有几种表一个宽表一个origin窄表当有宽表和窄表存在的情况下窄表将会退出历史舞台它俩的数据完全冗余并且宽表的信息更加的明确明细还有两份典型业务模型的延伸表里面往往是业务延伸点击流用户的会话筛除相关的轨迹线当下不做考虑t dim time 时间唯独表在计算一些指标情况下如果不出意外绝大多数所依赖的表都是宽表其他的可能需要延伸表或其他的表进行计算

数据表:dw_ weblog_ detail

image.png

分组字段根据指标梳理一下一天之内网站页面被加载的总次数天像是分组字段比如数据是每天每天的数据,12345达到每一天要做分组通过解读需求感觉到分组字段有时间唯独的分组时间day),查看宽表的结构desc formatted dw weblog detail查看宽表是分区表分区字段是datestr

image.png

输入show partitions dw weblog detail查看分区信息可以看到当前宽表中有一个分区而分区的时间恰好是20181101,意味着数仓后期维护数据将按照天进行划分一天一分区day 比较特殊还是表的分区字段通过分区过滤就可以找到这一天通过 where 分区过滤即可。

度量值可以把宽表数据打出来可以在hive的终端用星显示也可以复制出来放在笔记中下图是宽表的数据结构如果不加任何考虑就可以把一条日志当作一个点击行为一个页面加载行为但是这样计算不精准不加任何考虑就是 count(*),有多少个日志就有多少个pv

image.png

查询语句关键字 select,from 后面查询操作表宽表 detail 表为了方便起个别名t通过上述分析知道过滤是分区过滤要找一天之内的根据分区字段进行过滤分区是字符串类型用引号括起来其他天指令即可输入代码结果是13770,这样计算不精准

select

count(*) as pv

From dw _weblog_ detail t where t. datestr="20181101"; --不精准

当中所有的请求都当作页面点击的次数但是只有请求界面才可以称之为有效的数据这样 count(*)是把所有的请求当作页面点击的次数对指标进行梳理发现一天之内网站页面被加载的总次数只有请求页面才能称之上是有效的数据在request字段发现有的请求 png有的请求 jpg有的请求页面有的请求是静态资源的为了更加准确精准是页面被加载的次数应该把静态资源的请求过滤掉在数据预处理时通过valid的校验服务标记位把没有包含在静态资源的或者不合法的复制过滤一下所以针对 pv 指标想要精准的计算应该在 select 基础上加一个过滤静态资源and 后面加条件valid 要确定是什么类型的打开 hive 看表是什么类型的后面是 string字符串类型

image.png

select

count(*) as pv

From dw_ weblog. detail t where t . datestr="20181101" and t.valid = "true";

--精准过滤了静态资源的请求 贴近实战 

在 hive 中执行pv76,明显更贴近于实际比较准确要注意它的准确度在项目中因为数据量比较小所以以第一个作为 pv 值但是背后要搞清楚哪一个更贴近于实战

(2)Unique Visitor 独立访客(UV)

一天之内不管来多少次都只算一次独立访客数指标理解很简单难点在于怎么确定人

一天之内不重复的访客数

计算的关键是对访客的识别就是怎么识别是不同的人在数据中有两个字段比较特殊一个是 remote addr一个是 remote user但是在项目中比较尴尬用户标识字段是一个丢失的字段数据没有收集到因此如果以 cookie 表示用户当然是非常精准的但是数据丢失又不能计算,这时产生一个问题可以不可以用 ip 表示用户如果可以它与真是用户数据之间有什么区别ip可以代表人一个 ip 代表一个用户区别在于用 ip 代表用户它不精准不准确在当下的现实中一个公司一层楼或者一个小区都是不同的用户不同的人都上网但是上网时公网ip可能只有一个用 nvp 转换技术保证上网

image.png

看图中两 个 ip 像同一个 ip可能是同一个人也可能是两个人因此比较明确以项目给的 ip 作为标识

计算的关键是对访客的识别。以 ip 作为判断标识不精准技术上是一样的。

数据表宽表没有涉及到点击流相关的概念。dw_ weblog_ detail

分组字段统计的是 ip 不重复,时间( day) day 比较特殊 还是表的分区字段通过where 分区过滤即可。

度量值统计一天之内不重复的访客数如果直接 count ip 就会出现重复值sql 层面进行去重统计。count(distinct remote_ addr)

select

count (distinct remote_ addr) as uv

from dw_weblog_ detail t where t .datestr="20181101"; --以 i p 计算 uv 不精准

放在 hive 中执行结果是1027,结果不准确

不是 count remode而是 count remode user假如 cookie id 用户标记存在会更加的精准

select

count(distinct remote_ user) as uv

from dw_weblog_ detail t where t. datestr="20181101";-以 user ID 计算 准确

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
7月前
|
存储 Java 关系型数据库
基于JSP的九宫格日志网站
基于JSP的九宫格日志网站
|
8月前
|
监控 安全 前端开发
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
102 0
|
分布式计算
有一个日志文件visitlog.txt,其中记录了用户访问网站的日期和访问的网站地址信息,每行一条记录。要求编写mapreduce程序完成以下功能: 1、 将不同访问日期的访问记录分配给不同的red
有一个日志文件visitlog.txt,其中记录了用户访问网站的日期和访问的网站地址信息,每行一条记录。要求编写mapreduce程序完成以下功能: 1、 将不同访问日期的访问记录分配给不同的red
151 0
|
2月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
395 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
20天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
3月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
348 3
|
30天前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
3月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1720 14
|
2月前
|
存储 监控 安全
什么是日志管理,如何进行日志管理?
日志管理是对IT系统生成的日志数据进行收集、存储、分析和处理的实践,对维护系统健康、确保安全及获取运营智能至关重要。本文介绍了日志管理的基本概念、常见挑战、工具的主要功能及选择解决方案的方法,强调了定义管理目标、日志收集与分析、警报和报告、持续改进等关键步骤,以及如何应对数据量大、安全问题、警报疲劳等挑战,最终实现日志数据的有效管理和利用。
128 0
|
3月前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
47 0