zoukankan      html  css  js  c++  java
  • MaxCompute在电商场景中如何进行漏斗模型分析

    简介: 本文以某电商案例为例,通过案例为您介绍如何使用离线计算并制作漏斗图。

    背景

    漏斗模型其实是通过产品各项数据的转化率来判断产品运营情况的工具。转化漏斗则是通过各阶段数据的转化,来判断产品在哪一个环节出了问题,然后不断优化产品。电商漏斗模型,用户购买商品的路径,从浏览商品到支付订单的每一个环节的转化。本文将展示从用户「浏览-点击-购买」环节做漏斗分析及展示。

    前提条件

    • 开通日志服务
    • 开通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并制作漏斗图的介绍。

     

    作者:张雅静

    本文为阿里云原创内容,未经允许不得转载

  • 相关阅读:
    C++静态库与动态库(转)
    Tornado异步
    Yacc与Lex
    云数据库
    linux如何查看端口被谁占用
    Innodb Double Write
    MySQL GTIDs(global transaction identifiers)
    Java并发编程:线程池的使用
    Oracle 建立索引及SQL优化
    解决redhat linux下IP地址可以ping通,域名无法ping通问题
  • 原文地址:https://www.cnblogs.com/yunqishequ/p/14498104.html
Copyright © 2011-2022 走看看