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

简介: 快速学习网站流量日志分析--统计分析--漏斗模型转化分析实现

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

课程地址: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日志并进行多维度分析。
相关文章
|
11天前
|
存储 监控 关系型数据库
PHP编写的电脑监控软件:用户登录日志记录与分析
使用PHP编写简单但功能强大的电脑监控软件,记录用户登录日志并进行分析。代码示例展示了如何获取并存储用户IP地址和登录时间到数据库,然后进行登录数据的分析,如计算登录频率和常见登录时间。此外,还介绍了如何通过定时任务自动将监控数据提交到网站,以便实时监控用户活动,提升系统安全性和稳定性。
34 0
|
13天前
|
数据可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
|
18天前
|
机器学习/深度学习 前端开发 数据挖掘
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断(下)
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
223 11
|
23天前
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断2
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
|
24天前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
|
1月前
|
安全 Linux 网络安全
/var/log/secure日志详解
Linux系统的 `/var/log/secure` 文件记录安全相关消息,包括身份验证和授权尝试。它涵盖用户登录(成功或失败)、`sudo` 使用、账户锁定解锁及其他安全事件和PAM错误。例如,SSH登录成功会显示"Accepted password",失败则显示"Failed password"。查看此文件可使用 `tail -f /var/log/secure`,但通常只有root用户有权访问。
108 4
|
4天前
|
C++
JNI Log 日志输出
JNI Log 日志输出
12 1
|
4天前
|
存储 运维 大数据
聊聊日志硬扫描,阿里 Log Scan 的设计与实践
泛日志(Log/Trace/Metric)是大数据的重要组成,伴随着每一年业务峰值的新脉冲,日志数据量在快速增长。同时,业务数字化运营、软件可观测性等浪潮又在对日志的存储、计算提出更高的要求。
|
11天前
|
XML Java Maven
Springboot整合与使用log4j2日志框架【详解版】
该文介绍了如何在Spring Boot中切换默认的LogBack日志系统至Log4j2。首先,需要在Maven依赖中排除`spring-boot-starter-logging`并引入`spring-boot-starter-log4j2`。其次,创建`log4j2-spring.xml`配置文件放在`src/main/resources`下,配置包括控制台和文件的日志输出、日志格式和文件切分策略。此外,可通过在不同环境的`application.yml`中指定不同的log4j2配置文件。最后,文章提到通过示例代码解释了日志格式中的各种占位符含义。
|
11天前
|
运维 监控 Go
Golang深入浅出之-Go语言中的日志记录:log与logrus库
【4月更文挑战第27天】本文比较了Go语言中标准库`log`与第三方库`logrus`的日志功能。`log`简单但不支持日志级别配置和多样化格式,而`logrus`提供更丰富的功能,如日志级别控制、自定义格式和钩子。文章指出了使用`logrus`时可能遇到的问题,如全局logger滥用、日志级别设置不当和过度依赖字段,并给出了避免错误的建议,强调理解日志级别、合理利用结构化日志、模块化日志管理和定期审查日志配置的重要性。通过这些实践,开发者能提高应用监控和故障排查能力。
87 1