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

简介: 快速学习网站流量日志分析--统计分析--基础指标统计分析(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日志并进行多维度分析。
相关文章
|
3月前
|
小程序 Linux 数据安全/隐私保护
Linux学习笔记十六:日志管理
Linux学习笔记十六:日志管理
|
3月前
|
监控 安全 前端开发
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
36 0
|
5月前
|
Java
JVM学习笔记-如何在IDEA打印JVM的GC日志信息
若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可。
66 0
|
6月前
|
缓存 NoSQL Redis
Redis学习笔记-AOF日志&重写机制
Redis学习笔记-AOF日志&重写机制
83 0
|
6月前
|
NoSQL Redis
Redis学习笔记-AOF 日志和 RDB快照
Redis学习笔记-AOF 日志和 RDB快照
65 0
|
6月前
|
SQL 存储 关系型数据库
MySQL学习笔记-redo log 和 binlog&两阶段提交
MySQL学习笔记-redo log 和 binlog&两阶段提交
61 0
|
24天前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
77 1
|
25天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
78 1
|
29天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
|
1月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
51 0