简介:本文以某电商案例为例,通过案例为您介绍如何应用离线计算并制作漏斗图。
背景
漏斗模型其实是通过产品各项数据的转化率来判断产品经营状况的工具。转化漏斗则是通过各阶段数据的转化,来判断产品在哪一个环节出了问题,而后一直优化产品。电商漏斗模型,用户购买商品的门路,从浏览商品到领取订单的每一个环节的转化。本文将展现从用户「浏览 - 点击 - 购买」环节做漏斗剖析及展现。
前提条件
- 开明日志服务
- 开明 MaxCompute
- 开明 Dataworks
- 开明 Quick BI
案例
1. 业务架构图
2. 业务流程
- 通过阿里云日志服务采集日志数据。
- 日志服务的数据同步至大数据计算服务 MaxCompute。
- MaxCompute 做离线计算。
- 通过阿里云 Quick BI 进行数据可视化展现。
3. 筹备工作
将日志服务采集的数据增量同步到 MaxCompute 分区表中(本文案例以工夫天为单位,展现每个环节的转化率)。具体步骤请参见:日志服务迁徙至 MaxCompute。并通过 Dataworks 设置定时调度执行,每天凌晨定时取前一天的数据,计算以天为单位的转化率漏斗图。详情见参见:调度参数
表 1. 日志源表:ods_user_trans_d
表 2. 创立 ODS 层表:ods_user_trace_data,相干数仓模型定义请参见:数据引入层(ODS)
CREATE TABLE IF NOT EXISTS ods_user_trace_data
(
md5 STRING COMMENT '用户 uid 的 md5 值前 8 位',
uid STRING COMMENT '用户 uid',
ts BIGINT COMMENT '用户操作工夫戳',
ip STRING COMMENT 'ip 地址',
status BIGINT COMMENT '服务器返回状态码',
bytes BIGINT COMMENT '返回给客户端的字节数',
device_brand STRING COMMENT '设施品牌',
device STRING COMMENT '终端型号',
system_type STRING COMMENT '零碎类型,Android、IOS、ipad、Windows_phone',
customize_event STRING COMMENT '自定义事件:登录 / 退出 / 购买 / 注册 / 点击 / 后盾 / 切换用户 / 浏览 / 评论',
use_time BIGINT COMMENT 'APP 单次应用时长,当事件为退出、后盾、切换用户时有该项',
customize_event_content STRING COMMENT '用户关注内容信息,在 customize_event 为浏览和评论时,蕴含该列'
)
PARTITIONED BY
(dt STRING -- 以 dt 作为工夫分区,单位为天。);
CREATE TABLE IF NOT EXISTS ods_user_trace_data
(
md5 STRING COMMENT '用户 uid 的 md5 值前 8 位',
uid STRING COMMENT '用户 uid',
ts BIGINT COMMENT '用户操作工夫戳',
ip STRING COMMENT 'ip 地址',
status BIGINT COMMENT '服务器返回状态码',
bytes BIGINT COMMENT '返回给客户端的字节数',
device_brand STRING COMMENT '设施品牌',
device STRING COMMENT '终端型号',
system_type STRING COMMENT '零碎类型,Android、IOS、ipad、Windows_phone',
customize_event STRING COMMENT '自定义事件:登录 / 退出 / 购买 / 注册 / 点击 / 后盾 / 切换用户 / 浏览 / 评论',
use_time BIGINT COMMENT 'APP 单次应用时长,当事件为退出、后盾、切换用户时有该项',
customize_event_content STRING COMMENT '用户关注内容信息,在 customize_event 为浏览和评论时,蕴含该列'
)
PARTITIONED BY
(
dt STRING -- 以 dt 作为工夫分区,单位为天。
);
表 3. 创立 dw 层表:dw_user_trace_data,相干数仓模型定义请参见:明细粒度事实层(DWD)
CREATE TABLE IF NOT EXISTS dw_user_trace_data
(
uid STRING COMMENT '用户 uid',
device_brand STRING COMMENT '设施品牌',
device STRING COMMENT '终端型号',
system_type STRING COMMENT '零碎类型,Android、IOS、ipad、Windows_phone',
customize_event STRING COMMENT '自定义事件:登录 / 退出 / 购买 / 注册 / 点击 / 后盾 / 切换用户 / 浏览 / 评论',
use_time BIGINT COMMENT 'APP 单次应用时长,当事件为退出、后盾、切换用户时有该项',
customize_event_content STRING COMMENT '用户关注内容信息,在 customize_event 为浏览和评论时,蕴含该列'
)
PARTITIONED BY
(
dt STRING -- 以 dt 作为工夫分区,单位为天。
);
表 4. 创立 ADS 层后果表:rpt_user_trace_data,相干数仓模型定义请参见:数仓分层
CREATE TABLE IF NOT EXISTS rpt_user_trace_data
(
browse STRING COMMENT '浏览量',
click STRING COMMENT '点击量',
purchase STRING COMMENT '购买量',
browse_rate STRING COMMENT '浏览转化率',
click_rate STRING COMMENT '点击转化量'
)
PARTITIONED BY
(
dt STRING -- 以 dt 作为工夫分区,单位为天。
);
4. 编写业务逻辑
用户门路: 浏览 -> 点击 -> 购买,各个环节的转化率(转化率 = 从当一个页面进入下一页面的人数比率)。
insert OVERWRITE table rpt_user_trace_data PARTITION (dt=${bdp.system.bizdate})
SELECT browse as 浏览量
,click as 点击量
,purchase as 购买量
,concat(round((click/browse)*100,2),'%') as 点击转化率
,concat(round((purchase/click)*100,2),'%') as 购买转化率
from
(SELECT dt,count(1) browse from dw_user_trace_data where customize_event='browse'
and dt = ${bdp.system.bizdate} group by dt) a
left JOIN
(select dt,count(1) click from dw_user_trace_data where customize_event='click'
and dt = ${bdp.system.bizdate} group by dt) b
on a.dt=b.dt
left JOIN
(select dt,count(1) purchase from dw_user_trace_data where customize_event='purchase'
and dt = ${bdp.system.bizdate} group by dt)c
on a.dt=c.dt
;
5. 后果
6. 数据可视化展现
通过 Quick BI 创立网站用户分析画像的仪表板,实现该数据表的可视化。详情请参见:Quick BI
从上图中咱们发现,浏览到点击中的业务量出现了显著的缩减的趋势,转化率较低。剖析到哪个环节是以后业务流程中的薄弱环节,能够帮忙人们更加专一于薄弱环节进步整个流程的产出。进而进步整个流程的效率。
测试数据
依据上文介绍的漏斗模型的案例,阿里云为您提供了局部 DEMO 数据,您能够下载数据并依据上文示例实现整个案例的操作,从而失去您的漏斗模型图。数据如下:测试数据
以上是对于如何应用 MaxCompute 并制作漏斗图的介绍。
作者:张雅静
原文链接
本文为阿里云原创内容,未经容许不得转载