zoukankan      html  css  js  c++  java
  • 数据仓库 转化率及漏斗分析

    一 ADS层之新增用户占日活跃用户比率

    数据来源:ADS层用户活跃数表和每日新增设备表

    建表语句:

    drop table if exists ads_user_convert_day;
    create external table ads_user_convert_day( 
        `dt` string COMMENT '统计日期',
        `uv_m_count`  bigint COMMENT '当日活跃设备',
        `new_m_count`  bigint COMMENT '当日新增设备',
        `new_m_ratio`   decimal(10,2) COMMENT '当日新增占日活的比率'
    ) COMMENT '转化率'
    row format delimited fields terminated by '	'
    location '/warehouse/gmall/ads/ads_user_convert_day/'
    ;

    数据导入:

    ①对于转化率,一般是先处理好分子或分母,最后相除即可。

    ②cast(xx as decimal(10,2)),将对应数据转成2位小数的decimal类型。

    insert into table ads_user_convert_day
    select
        '2019-02-10',
        sum(uc.dc) sum_dc,
        sum(uc.nmc) sum_nmc,
        cast(sum( uc.nmc)/sum( uc.dc)*100 as decimal(10,2))  new_m_ratio
    from 
    (
        select
            day_count dc,
            0 nmc
        from ads_uv_count
    where dt='2019-02-10'
    
        union all
        select
            0 dc,
            new_mid_count nmc
        from ads_new_mid_count
        where create_date='2019-02-10'
    )uc;

    二 ADS层之用户行为漏斗分析

    公式:

      访问到下单转化率 = 下单人数 / 日活跃人数

      下单到支付转化率 = 支付人数 / 下单人数

    数据来源:下单人数和支付人数来源于DWS层用户行为宽表;日活人数来源于ADS层的用户活跃表。

    建表语句:

    drop table if exists ads_user_action_convert_day;
    create external  table ads_user_action_convert_day(
        `dt` string COMMENT '统计日期',
        `total_visitor_m_count`  bigint COMMENT '总访问人数',
        `order_u_count` bigint     COMMENT '下单人数',
        `visitor2order_convert_ratio`  decimal(10,2) COMMENT '访问到下单转化率',
        `payment_u_count` bigint     COMMENT '支付人数',
        `order2payment_convert_ratio` decimal(10,2) COMMENT '下单到支付的转化率'
     ) COMMENT '用户行为漏斗分析'
    row format delimited  fields terminated by '	'
    location '/warehouse/gmall/ads/ads_user_action_convert_day/'
    ;

    数据导入:

    由于是一个宽表,订单个数和支付次数可能为0或者大于1,用sum if组合使用解决。

    insert into table ads_user_action_convert_day
    select 
        '2019-02-10',
        uv.day_count,
        ua.order_count,
        cast(ua.order_count/uv.day_count as  decimal(10,2)) visitor2order_convert_ratio,
        ua.payment_count,
        cast(ua.payment_count/ua.order_count as  decimal(10,2)) order2payment_convert_ratio
    from  
    (
    select 
        dt,
            sum(if(order_count>0,1,0)) order_count,
            sum(if(payment_count>0,1,0)) payment_count
        from dws_user_action
    where dt='2019-02-10'
    group by dt
    )ua join ads_uv_count  uv on uv.dt=ua.dt
    ;
  • 相关阅读:
    通过scp拷贝文件时无需交互输入密码
    suse linux安装lrzsz
    shc加密shell脚本
    linux小程序--cmatrix
    linux系统PXE+Kickstart自动安装系统
    升级SSH
    shell生成随机数的几种方法
    django —— MVT模型
    Django学习---笔记一
    python学习--Django虚拟环境搭建
  • 原文地址:https://www.cnblogs.com/noyouth/p/13225849.html
Copyright © 2011-2022 走看看