网站流量日志分析--统计分析--多维统计分析--时间维度--每小时指标统计|学习笔记

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

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

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


网站流量日志分析--统计分析--多维统计分析--时间维度--每小时指标统计


1、打开资料项目资料数据分析基础指标多维统计

image.png

2、多维度统计分析:注意 gruop by 语句的语法

多维度统计 PV 总量

第一种方式:直接在 dw. weblog_ detail 单表上进行查询

计算该处理批次(一天)中的各小吋 pvs

3梳理

时间维度统计

计算该处理批次(一天)中的各小吋 pvs,页面被点击加载的次数跟点击流模型中的会话第一步第二步停留时间也没有太多关系优先考虑 detail 宽表

(1)数据表:dw_ weblog_ detail

(2)分组字段时间day hour一天当中包含多个小时day 字段比较特殊day 是表分区字段可以通过 where 过滤查找统计完真正有意义起决定作用的是 hour 统计每小时

就是维度一天不是处理昨天也不是处理后天是处理当天因此分组段是时间维度的分组段打开宽表查看最后是以天分区,20181101。

image.png

(3)度量值count(*)

直接统计*就相当于把里面不管是静态资源的请求还是动态资源都当做页面被加载的点击次数想要更加贴近于实战应该加各过滤条件valid 等于 true把静态资源过滤掉由于项目数据本身比较小所以做了妥协但是要清楚背后发生了什么

image.png

跟宽表起别名该数据批次是1000,天是分区字段通过t.分区字段可以找到这一天因此针对天这个指标不需要分组直接通过 where 即可如果数据是干净纯净一定得到的是111日的数据得到这一天的数据还要进行分组得到各个小时一天有24个小时分为24个部分每个部分中再进行 count 统计写的时候要根据小时分组确定表中有没有 hour 字段打开宽表数据查看宽表中有用户标识时间日期monthdayhour可以感受到进行入库时生成宽表就是为了分析的方便现在把hour踢出来变成一个新的字段直接进行 hour 分组即可不管是六点四十九分还是六点五十分的都属于六点就该来到同一分组中

image.png

按照一天中小时分组就会分成24小时每个小时进行 count 统计

select

count(*) as pvs

from dw_weblog_ detail t where t.datestr ="20181101" group by t.hour ;

在 hive 中执行验证得到每个小时的 pvs但是看不出来是哪个小时的pvs所以在查询上显示出属于哪个小时需要把 hour 字段出现在 select 表中注意group by 分组语法因为 hour 是分组字段所以可以出现在表达式中再执行在七八九小时中pvs 点击比较多大概在早上的七八点钟网站的访问量比较多可能是新闻门户类的网站早高峰大家都在浏览

image.png

但是如果写完就结束意味着数据并没有保存下来输入 show tables 进行查看计算的指标并没有保存在数仓中因此在实际的开发过程中指标和模型数据为了方便临时表记录下来需要时就不用再执行 sql直接用即可。

4创建中间表也叫临时表有个小技巧就是创建临时表或者别的表不要用汉语拼音进行命名比如 time1,time2在企业中一般建议用简单的英文表示表的含义比如创建一个表一天当中每个小时的 pvs这个表是一个分区表根据时间进行分区

drop table dw_ pvs_ everyhour_ oneday;

create table dw_ pvs_ everyhour_ oneday (month string,day string,hour string,pvs bigint) partitioned by (datestr string) ;

insert into table dw_ pvs_everyhour_oneday partition (datestr= '20181101')

select a.month as month,a.day as day,a.hour as hour, count(*) as pvs from dw_ weblog_ detail a 在宽表进行操作分区过滤

Where a.datestr='20181101' group by a . month,a.day,a . hour; 注意分组字段对结果的影响

计算每天的 pvs

drop table dw_ pv3_ everyday;

create table dw_ pvs_ everyday (pvs bigint , month string,day string) ;

insert into table dw_ pv3_ everyday

select count(*) as pvs,a.month as month,a.day as day from dw_ weblog_ detail a group by a . month,a.day;

复制create table dw_ pvs_ everyhour_ oneday (month string,day string,hour string,pvs bigint) partitioned by (datestr string) ;执行返回的字段有两个一个是 hour一个是 pvs而这个表中是 month需要保证查询反馈的结果字段类型顺序个数跟它对应上

要想返回 month day hour 比较简单因为数据表中正好有 month day如果分组字段不错

select

t.day,t.hour ,count(*) as pvs

from dw. _weblog detail t where t.datestr ="20181101" group by t.hour;

执行后报错在 compiling 编译期间的错误,Invalid column referenceday‘非法的字段引用day

--直接报错Invalid column referenceday‘

--想一想sql 语句 groupby 有什么样的语法限制问题

出现在 groupby 语句表达式中的字段要么是分组的字段要么是被聚合函数包围应用的字段这是所谓的语法限制

需要进行相关的调整不能这样引用day 既不是分组的字段也不是聚合函数包围的字段如果直接写 t.month t.day 肯定会报错需要针对两个字段进行调整比如放在分组字段 groupby 后面本意是根据 hour 进行分组结合具体环境进行分析在当下环境中加入分组字段不会改变结果因为 where 指定过滤是20181101的数据如果数据干净整洁纯洁没有被污染的数据保证得到的是20181101这一天的数据根据月份分是11月一个整体根据day分还是1号整体因此字段的出现保证了 month day 对结果没有影响最终起决定作用的是 hour它俩的出现保证字段可以出现在前面不会报错执行

image.png

在数据中人为的把一号变成了二号对于后面的指标计算比较方便

5、把查询结果插入到创建的 pvs everyhour 中分组根据 month day hour 进行分组三个中真正起决定作用的是 hourmonthday 无效但是可以出现在表达式中统计 pvs四个字段拆入到创建的表中完成数据保证复制到 hive 终端执行看结果打开临时表看数据有没有保存进去select * from dw pvs_ everyhour_ oneday;显示每一天的 pvs 数十一月中每个小时产生的 pvs可以进行最终页面的报表展示第一个需求是统计每个小时的 pvs重点是 sql 语句语法的掌握灵活运用到业务中

image.png

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
运维 监控 Cloud Native
一行代码都不改,Golang 应用链路指标日志全知道
本文将通过阿里云开源的 Golang Agent,帮助用户实现“一行代码都不改”就能获取到应用产生的各种观测数据,同时提升运维团队和研发团队的幸福感。
|
3月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
539 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
5月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
3月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
308 0
|
3月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
6月前
|
存储 弹性计算 运维
可观测性体系问题之Process Layer在ECS稳定性平台中的工作如何解决
可观测性体系问题之Process Layer在ECS稳定性平台中的工作如何解决
47 0
|
7月前
|
存储 Java 关系型数据库
基于JSP的九宫格日志网站
基于JSP的九宫格日志网站
|
7月前
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
294 0
|
2月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
496 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
26天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。