3.拉链表 留存率 同比和环比

1.拉链表

      概念:记录一条数据每天的变化信息。

     案例:

创建一个主表

---拉链表
---创建一个主表,模拟3个字段 按照时间进行分区
--- uuid 用户唯一表示
--- version 版本
--- visit_time 访问时间 以天为记录单位
create table if not exists ods_zipper_test(
   uuid string  comment "用户id",
   version string comment "版本号",
   visit_time string comment "时间"
)comment "主表"
partitioned by(day string)
row format delimited fields terminated by ",";

按照分区导入数据

load data local inpath '/home/hadoop/test_data/拉链11.txt' overwrite into table ods_zipper_test partition(day="2018-10-11");
load data local inpath '/home/hadoop/test_data/拉链12.txt' overwrite into table ods_zipper_test partition(day="2018-10-12");
load data local inpath '/home/hadoop/test_data/拉链13.txt' overwrite into table ods_zipper_test partition(day="2018-10-13");

 数据样式:

创建一个拉链表  按照时间进行分区

---创建一个拉链表,
--- uuid version first_date(第一次访问时间) last_date(最后一次访问时间)
create table if not exists dw_zipper(
   uuid string  comment "用户id",
   version string comment "版本号",
   first_date string comment "第一次访问时间",
   last_date string comment "最后一次访问时间"
)comment "拉链表"
partitioned by(day string);

往拉链表中写入数据   写入的时候需要更改时间

--- 每天往拉链表中存入数据
insert overwrite table dw_zipper partition(day="2018-10-13")
select 
     coalesce(b1.uuid,b2.uuid) as uuid,
     coalesce(b1.version,b2.version) as version,
     coalesce(b2.first_date,b1.visit_time) as first_date,
     coalesce(b1.visit_time,b2.last_date) as last_date
from
(
    select 
         uuid,
         version,
         visit_time
    from ods_zipper_test
    where day="2018-10-13"
)b1
full outer join
(
    select 
    uuid,
    version,
    first_date,
    last_date
    from dw_zipper
    where day="2018-10-12"
)b2
on(b1.uuid=b2.uuid) 
order by uuid;

 

拉链表中的数据为:

  

完整数据为



2.留存率

留存率=新增用户中登录用户数/新增用户数*100%(一般统计周期为天)
新增用户数:在某个时间段(一般为第一整天)新登录应用的用户数;
登录用户数:登录应用后至当前时间,至少登录过一次的用户数;
次日留存率:(当天新增的用户中,在注册的第2天还登录的用户数)/第一天新增总用户数;
第3日留存率:(第一天新增用户中,在注册的第3天还有登录的用户数)/第一天新增总用户数;
第7日留存率:(第一天新增的用户中,在注册的第7天还有登录的用户数)/第一天新增总用户数;
第30日留存率:(第一天新增的用户中,在注册的第30天还有登录的用户数)/第一天新增总用户数。

案例:需求 根据上面的数据求以下:

时间 当天活跃用户数 新增用户数 累计活跃用户数 次日留存率 3日留存率

创建业务表

create table if not exists da_user_action_d(
dt string comment '日期',
active_user_num bigint comment '活跃用户数',
new_user_num bigint comment '新增用户数',
total_active_user_num bigint comment '累计活跃用户数',
next_retention double comment '次日新增用户留存率',
three_retention double comment '3日新增用户留存率'
)
partitioned by(day string)

根据拉链表来实现需求:按照时间来进行分区

insert overwrite table da_user_action_d partition (day="2018-10-13")
select
     b1.dt as dt,--- 时间
     b1.active_user_num as active_user_num,---当天活跃的用户数
     b1.new_user_num as new_user_num,---当天新增的用户数
     b1.total_active_user_num as total_active_user_num,--- 累计活跃用户数
     round(b2.next_retention/b1.new_user_num,2) as next_retention,-- 次日新增用户留存率
     round(b2.three_retention/b1.new_user_num,2) as three_retention-- 3日新增用户留存率
from
(
      select
           day as dt,--- 时间
           sum(if(last_date=day,1,0)) as active_user_num, ---当天活跃的用户数
           sum(if(first_date=day,1,0)) as new_user_num,---当天新增的用户数
           count(1) as total_active_user_num--- 累计活跃用户数
      from dw_zipper
      group by day
)b1
left join
(
     select
          first_date as dt,
          sum(if(date_add(first_date,1)=last_date,1,0)) as next_retention,-- 次日新增用户留存率
          sum(if(date_add(first_date,2)=last_date,1,0)) as three_retention -- 3日新增用户留存率
     from dw_zipper 
     where day="2018-10-13" 
     group by first_date
)b2 on b1.dt=b2.dt

      1).次日新增用户留存率  即2018-10-12 的数据

         

      2).三日新增用户留存率  即2018-10-13的数据

       



3.同比和环比

同比:与历史同一时期进行比较,例如:今年6月与去年6月比较
环比:与上一统计段比较就是与前一个相邻的时期作比较,例如:今年3月与4月对比
同比率:(本期发展水平-去年同期水平)/去年同期水平×100%
环比率:(本期数-上期数)/上期数×100%

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、课程简介随着技术的飞速发展,经过多年的数据积累,各互联网公司已保存了海量的原始数据和各种业务数据,所以数据仓库技术是各大公司目前都需要着重发展投入的技术领域。数据仓库是面向分析的集成化数据境,为企业所有决策制定过程,提供系统数据支持的战略集合。通过对数据仓库中数据的分析,可以帮助企业改进业务流程、控制成本、提高产品质量等。二、课程内容本次精心打造的数仓项目的课程,从项目架构的搭建,到数据采集模块的设计、数仓架构的设计、实战需求实现、即席查询的实现,我们针对国内目前广泛使用的Apache原生框架和CDH版本框架进行了分别介绍,Apache原生框架介绍中涉及到的技术框架包括Flume、Kafka、Sqoop、MySql、HDFS、Hive、Tez、Spark、Presto、Druid等,CDH版本框架讲解包括CM的安装部署、Hadoop、Zookeeper、Hive、Flume、Kafka、Oozie、Impala、HUE、Kudu、Spark的安装配置,透彻了解不同版本框架的区别联系,将大数据全生态系统前沿技术一网打尽。在过程中对大数据生态体系进行了系统的讲解,对实际企业数仓项目中可能涉及到的技术点都进行了深入的讲解和探讨。同时穿插了大量数仓基础理论知识,让你在掌握实战经验的同时能够打下坚实的理论基础。三、课程目标本课程以国内电商巨头实际业务应用场景为依托,对电商数仓的常见实战指标以及难点实战指标进行了详尽讲解,具体指标包括:每日、周、月活跃设备明细,留存用户比例,沉默用户、回流用户、流失用户统计,最近连续3周活跃用户统计,最近7天内连续3天活跃用户统计,GMV成交总额分析,转化及漏斗分析,品牌复购分析、订单拉链的设计等,让学生拥有更直观全面的实战经验。通过对本课程的学习,对数仓项目可以建立起清晰明确的概念,系统全面的掌握各项数仓项目技术,轻松应对各种数仓难题。四、课程亮点本课程结合国内多家企业实际项目经验,特别加入了项目架构模块,从集群规模的确定到框架版本选型以及服务器选型,手把手教你从零开始搭建大数据集群。并且总结大量项目实战中会遇到的问题,针对各个技术框架,均有调优实战经验,具体包括:常用Linux运维命令、Hadoop集群调优、Flume组件选型及性能优化、Kafka集群规模确认及关键参数调优。通过这部分学习,助学生迅速成长,获取前沿技术经验,从容解决实战问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值