网站流量日志分析--统计分析--漏斗模型转化分析实现|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习网站流量日志分析--统计分析--漏斗模型转化分析实现

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第四阶段) 网站流量日志分析--统计分析--漏斗模型转化分析实现】学习笔记,与课程紧密联系,让用户快速学习知识。

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


网站流量日志分析--统计分析--漏斗模型转化分析实现


1、漏斗模型转化率计算

定义好业务流程中的页面标识,下例中的步骤为:

Step1、/item

Step2、/category

Step3、/index

Step4、/order

第一步 item,第二步包含 category,以此类推

2、打开参考资料点击路径转换漏斗模型分析

image.png

原来采集的数据已经不满足于需所以里面人为的伪造一些数据把数据导入到数据表中,在参考资料中点击数据采集漏斗模型原始数据

image.png

它不是真实数据而是伪造的假的数据把数据导入到表中,打开表表中有 session有步骤号时间访问的页面

image.png

数据看起来就非常假因为它是用 for 循环写的把数据导到表中,打开 sql 文件进行执行需要把文件上传到 linux 服务器上拖拽它进行上传

3、使用 load data 命令把数据从本地加载到表中,在本地文件里不需要进行覆盖分区是20181103。

load data local inpath '/root/hivedata/click-part-r-00000' intotable ods_click_pageviews partition (datestr= '20181103') ;

在 hive 终端中把伪造的数据导入进来统计当中每一步的人数根据讲义需求以访问 item 作为第一步category 作为第二步进行伪造重点是 UNION All 语法在 hive 中它支持创建表通过 select

查询,create table 创建一个表

每一个步骤的总访问人数

UNION All 将多个 SELECT 语句的结果集合并为一个独立的结果集

create table dw_ oute_ numbs as没有指定字段和类型属性数据有两个字段一个字段是 step,一个叫 numbs会有四条记录分别来自于四条查询语句它可以将结果集进行合并

select 'step1' as step, count (distinct remote_ addr)

as numbs from ods_ click_ pageviews where datestr='20181103' and request like '/item

如果只跟一个比较好理解意味着表的字段跟长语句相关长语句返回两个字段一个是 step一个是 numbs数据就是返回的字段

union all

select 'step2' as step, count (distinct remote addr) as numbs from ods_ click pageviews where datestr='20181103' and request like '/category

union all

select 'step3' as step , count (distinct remote_ addr)

as numbs from ods_ click_ _pageviews where datestr='20181103' and request like '/order

union all

select 'step4' as step, count (distinct remote_ addr) as numbs from ods_ click_ pageviews where datestr= ' 20181103'

and request like '/index

执行得到表的结果就得到了当中每一步的人数输入select*

from dw_ oute_ numbs;

可以得到转化人数的分析

dw_ oute numbs. step

dw_ oute_ numbs . numbs

step1

1029

step2

1029

step3

1028

step4

1018

 

第一步有1029第二步有1029第三步有1028第四步有1018要想得到每一步相对于上一步的转化率相对于第一步的转化率都跟之前的数据相关所以针对类问题的突破点就是自己跟自己 join总共有四条记录都需要在一起需要加过滤条件不加过滤条件四条和四条进行 join最终结果16

4、查询每一步骤相对于路径起点人数的比例

--级联查询,自己跟自己 join

select rn.step as rnstep, rn. numbs as rnnumbs, rr.step as rrstep, rr.numbs as rrnumbs from dw_oute_numbs rn

inner join

dw_ oute_ numbs rr;

起别名单独看有两个字段join 完有四个字段

执行没有过滤条件所以有16个结果

rnstep

rnnumbs

rrstep

rrnumbs

step1

1029

step1

1029

step2

1029

step1

1029

step3

1028

step1

1029

step4

1018

step1

1029

step1

1029

step2

1029

step2

1029

step2

1029

step3

1028

step2

1029

s tep4

1018

step2

1029

step1

1029

step3

102 8

step2

1029

step3

1028

step3

1028

step3

1028

step4

1018

step3

1028

step1

1029

step4

1018

step2

1029

step4

1018

step 3

1028

step4

1018

step4

1018

step4

1018

 5、--每一步的人数/第一步的人数==每一步相对起点人数比例

相对于第一步需要一一二一三一四一的数据每一步都跟第一步在一行这一行直接相除即可四条数据右半部分rrstep都是第一步如果四条数据rnnumbs除以rrnumbs就计算出每一步相对第一步的转化率比如用1029除以1029,第一步对第一步第二步1029除以第一步1029是第二步的算出每一步相对第一步转化率因此在 join 的基础上加where tmp . rrstep= ' step1 ' ;

rnnumbs除以 rrnumbs 得到最终结果

seloct tmp. rnstep, tmp . rnnumbs/ tmp . rrnumbs as

ratio得到结果

From

(

Select rn. Step as rnstep, rn . numbs as rnnumbs , rr . step

InnorJoin

dw_ oute_ numbs rr)tmp起别名

where tmp . rrstep= ' step1 ' ;

执行得到结果每一步相对于第一步的绝对转化

tmp. rnstep

ratio

step1

1.0

step2

1.0

step3

0.9990281827016521

step4

0.989310009718173

如果一家公司在企业中转化率达到这种程度基本上没有人流失计算每一步相对第一步的转化流失率等于1-转化率

6、计算每一步跟上一步的

rnstep

rnnumbs

rrstep

rrnumbs

step1

1029

step1

1029

step2

1029

step1

1029

step3

1028

step1

1029

step4

1018

step1

1029

step1

1029

step2

1029

step2

1029

step2

1029

step3

1028

step2

1029

s tep4

1018

step2

1029

step1

1029

step3

102 8

step2

1029

step3

1028

step3

1028

step3

1028

step4

1018

step3

1028

step1

1029

step4

1018

step2

1029

step4

1018

step 3

1028

step4

1018

step4

1018

step4

1018

二和一在一行三跟二在一行四跟三在一行相差的在一行才能直接相除得到相关的结果根据数据发现前面的字段减去一等于后面的字段把数据拿出来就可以得到的结果二一可以得到第二步相对第一步二一就是一二反过来相除三四四三结果不止一个因此定论为例二一的三二的四三的不能直接用字段减一因为字段不是数字而是字符串截取字段的最后一个数字三减一的等 于 rrstep 的最后一个数字才符合

7、查询每一步骤相对于上一步骤的漏出率

--首先通过自 join 表过滤出每一步跟上一步的记录

select rn.step as rnstep, rn. numbs as rnnumbs,rr.step as rrstep,rr.numbs as rrnumbs from dw_ oute_ numbs rn

inner join

dw_ oute_ nunbs rr

where cast (substr (rn.step,5,1) as int)=cast (substr(rr.step,5,1) as int) -1;第五位截取一个把它变成 int 类型需要前面的字段等于后面字符串减一rn setp 等于 rr setp 减1,找一二二三三四相等完之后结果相除数据算出每一步相对上一步的转化率

截取有substr函数从哪里开始截取第五位截取一个问题在于截取一个之后返回的数字并不是字符类型的本身是字符串针对字符串进行截取返回的还是字符串所以需要把数字做类型的转换hive 通过内置的函数可以进行类型的转换所以里面比较难的原因在于里面有很多 hive 的内置函数as 前面是原来类型as 后面是其他类型

注意: cast 为 Hive 内置函数类型转换

select cast(1 as float) ; --1.0变成服务点类型

select cast('2016-05-22' as dnte) ; --2016-05-22把字符串变成时间类型

8、join 完之后找规律非常方便但是核心的突破点在于如何进行 join得到每一步和上一步的人数相除得到最终结果

rnstep

rnnumbs

rrstep

rrnumbs

step1

1029

step2

1029

step2

1029

step3

1028

step3

1028

step4

1018

每一步相对上一步的的转化率就是相对转化流失用一减去它即可把两个结果保存在表中,就是转化分析规律很集中很简单重点突破点还是自己跟自己 join,只要发现数据的需求中,指标涉及到当前行和之前行当前行和上当前行和第一行的规律立马采用 join就是漏斗模型的转化分析

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
511 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
4月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
2月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
279 0
|
2月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
6月前
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
281 0
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
351 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
14天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
334 3
|
24天前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
2月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1710 14

热门文章

最新文章