《大型综合项目-基于大数据平台的数据仓库》学习笔记(11):埋点日志报表篇2

本项目教程笔记源自多易教育《Titan综合数据仓库与数据运营系统》,在CSDN学院有相关视频教程购买链接,大数据企业级项目实战–Titan大型数据运营系统
本项目课程是一门极具综合性和完整性的大型大数据项目实战课程,课程项目的业务背景源自各类互联网公司对海量用户浏览行为数据和业务数据分析的需求及企业数据管理、数据运营需求。
学完本课程,你将很容易就拿到大数据数仓建设或用户画像建设等岗位的OFFER

本课程项目涵盖数据采集与预处理数据仓库体系建设、用户画像系统建设、数据治理(元数据管理、数据质量管理)、任务调度系统、数据服务层建设、OLAP即席分析系统建设等大量模块,力求原汁原味重现一个完备的企业级大型数据运营系统。

跟随项目课程,历经接近100+小时的时间,从需求分析开始,到数据埋点采集,到预处理程序代码编写,到数仓体系搭建…逐渐展开整个项目的宏大视图,构建起整个项目的摩天大厦。


多易教育,专注大数据培训; 课程引领市场,就业乘风破浪
多易教育官网地址
https://www.51doit.cn
多易教育在线学习平台
https://v.51doit.cn

一、【用户分析】新用户留存分析

1、需求分析

次日留存率定义
       1)次日留存用户:T日新增的用户,在T+1日再次出现的人,就叫T日的次日留存的用户
       2)次日留存率:(次日留存人数/T日新用户数)就叫
N日留存定义:
       1)T日新增的用户,在T+N日再次出现的人,就叫T日的N日留存用户
报表示例1
在这里插入图片描述
思路分析
       经过分析,发现,新鲜度计算其实本质上就是留存计算!只不过这个报表中,要求算:
              1日后留存 2日后留存 3日后留存 … 30日后留存

       计算时,上述梯形报表,其实不需要一次性计算所有数据格子,每天只要算梯形中的斜边上数据格子
比如,在2019-06-15号的数据出来后,就计算

14号的 1日留存
13号的 2日留存
12号的 3日留存
11号的 4日留存
 .......
2、ADS新用户留存明细表模型

DWS_APL_NRT_REC:新用户留存明细表
如果直接按照OLAP平台上的可视化形式建表(横表),计算不方便
我们设计出如下竖表模型,可以同样表达留存数据,但计算会更加方便:
用户留存明细表

日期新增数留存天数留存人数
6.5413
6.5423
6.6212
6.5433
6.5221
6.5212
-- 留存明细表
drop table if exists ads_apl_nrt_rec;
create table ads_apl_nrt_rec(
first_time string, -- 首登日
dnu_cnts int, -- 当日新增用户总数
nrt_days int, -- 留存天数
nrt_cnts int   -- 留存人数
)
stored as parquet;
3、ADS新用户留存明细表开发

利用访问历史记录表来实现用户留存表计算
计算逻辑:
在这里插入图片描述

代码实现:
INSERT INTO TABLE ADS_USR_NRT
SELECT
first_time   as dt,
count(1)     as new_cnts,
datediff('2019-10-29',first_time)  as rt_days,
count(if(end_time ='2019-10-29',1,null)) as rt_cnts    
FROM DWS_USR_HSL WHERE dt='2019-10-29'
  AND datediff('2019-10-29',first_time)<=30 
AND  datediff('2019-10-29',first_time)>=1
 GROUP BY first_time
;

二、【用户分析】用户新鲜度分析

1、需求分析

可视化报表所需求的数据是:
        当日所有活跃用户中,分别属于1天前、2天前、n天前的新用户的占比;

2、ADS新鲜度数据模型

通过分析需求中原型页面,撇去表象,发现本真:
       无非就是需要计算某个日期上的活跃用户中的“不同日期新增用户”占比

然后,发现可以用两种形式的模型来为页面提供数据支持:

方式一:横表

日期当日活跃总数0天新增占比1天新增占比2天新增占比3天新增占比
2019/6/15201465%70%48%66%

方式二:竖表

计算日期活跃总数新鲜天数人数
2019/6/151001天前新增占比10
2019/6/151002天前新增占比20
2019/6/151003天前新增占比25
2019/6/151004天前新增占比30
2019/6/151005天前新增占比2
2019/6/151006天前新增占比3
2019/6/151007天前新增占比5
2019/6/15100
2019/6/1510030天前新增占比

“占比”可以转换成“数”来计算,更灵活

竖表建模
CREATE TABLE ads_apl_ufs (
  dt string
  ,act_amt INT
  ,frs_days INT
  ,frs_cnts INT
  ) stored AS parquet;
3、ADS用户新鲜度报表计算

本报表,基于用户登录历史记录明细表dws_usr_hsl,可轻松得出!
在这里插入图片描述

计算逻辑:
从上图可以看出,新鲜度数据,其实可以从留存明细表中直接提取得出;
比如,要得到12.18号的新鲜度:

比如,要得到12.18号的新鲜度:
12.18号的活跃用户中,有几个是1天前新增的 ==> 等价于 12.17号的1日留存数
12.18号的活跃用户中,有几个是2天前新增的 ==> 等价于 12.16号的2日留存数
12.18号的活跃用户中,有几个是3天前新增的 ==> 等价于 12.15号的3日留存数
12.18号的活跃用户中,有几个是4天前新增的 ==> 等价于 12.14号的4日留存数
12.18号的活跃用户中,有几个是5天前新增的 ==> 等价于 12.13号的5日留存数
..........

而右边等价数据,可以从新用户留存明细中直接查询而得!
而查询的条件应该是: 日期+留存天数 =》 当前

《详见项目代码》

三、【用户分析】用户活跃成分分析

1、需求分析

在这里插入图片描述
分析可得,
        本报表需求的数据为:每天的活跃用户中,连续活跃了1天、2天、N天的用户的占比;
        实质是:统计用户的连续活跃行为;

2、DWS连续活跃区间记录表模型

连续活跃记录:dws_apl_uac_rec连续活跃区间记录表

Uid首登日活跃区间起始活跃区间结束
U0012019-06-022019-06-022019-06-04
U0012019-06-022019-06-072019-06-04
U0012019-06-022019-06-109999-12-31
U0022019-06-122019-06-129999-12-31
U0032019-06-152019-06-159999-12-31
3、DWS连续活跃区间记录表计算
/*
  ETL 开发
  计算逻辑:
	1.源表:活跃记录拉链表 dws_usr_rac
	2.逻辑:先过滤出当日活跃的记录,然后分别累计(连续1天的,连续2天的....)人数即可
*/

在这里插入图片描述
《详见项目代码》

4、ADS活跃成分分析报表开发
1)、活跃成分分析报表模型

用户活跃度报表

日期当日总活跃数活跃天数类别类别人数人数占比
1620001600
16200021000
建表语句:
drop table if exists ads_usr_cta;
create table ads_usr_cta(
dt string,
act_cnts int comment '当日活跃总数',
continuos int comment '连续天数',
cnts int comment '人数',
per double comment '人数占比'
)
stored as parquet;
2)、活跃成分分析报表开发

《详见项目代码》

四、【用户分析】用户访问间隔分析

1、需求分析

在这里插入图片描述

2、ADS访问间隔分析表模型

访问间隔分布报表:ADS_APL_UAI

截止日期隔几天发生过多少人次
2020-01-180500
2020-01-182400
2020-01-183800
3、ADS访问间隔分析表开发
1)、方案1:spark

在这里插入图片描述

2)、方案2:sql

在这里插入图片描述

sql语句:

/*
  方式2:用sql实现
*/
with tmp as 
(select
uid,
datediff(if(end_dt='9999-12-31','2019-06-19',end_dt),begin_dt) as day1_cnts,
end_dt,
lead(begin_dt,1,null)  over(partition by uid order by begin_dt) as jump_dt
from dws_user_active_zip
where dt='2019-06-19')

select 
uid,
interval_type,
sum(cnts)

from 

(
select
uid,
interval_type,
cnts 

from

(
select 
uid
,map('隔1天',day1_cnts,if(jump_dt is null,"NA",concat('隔',datediff(jump_dt,end_dt),'天')),1) as m
from tmp
)o

lateral view

explode(m) t as interval_type,cnts 
) o2
where interval_type!='NA'
group by uid,interval_type

五、【用户分析】活跃留存分析

1、需求分析

假设当前是2019-06-19号
在这里插入图片描述

2、ADS活跃留存分析表模型
/*
    活跃用户留存分析表
	建模:竖表
	ads_apl_art_rec
*/
create table ads_apl_art_rec(
dt string,
act_cnts int,
retention_days string,
retention_cnts int
)
stored as parquet;
3、ADS活跃留存报表计算
1)、计算逻辑

每日都只要以当日为基数
往前推1天、2天、3天、4天、5天、……的留存数计算
在这里插入图片描述

/*
    方案1:简单粗暴的日活逐日join
    计算逻辑:
      1. 源表: 各天的日活表
      2. 逻辑: 滚动计算,计算前N天到当天的,活跃留存数
                比如,6.6号,算6.5-6.6的1日留存
                    6.7号,算6.5-6.7的2日留存,算6.6-6.7的1日留存
                  6.8号,算6.5-6.8的3日留存,算6.6-6.8的2日留存,算6.7-6.8的1日留存
                  ......
         将  6.5的日活 join 6.8的日活,求count  --》 得到6.5号的3日后活跃留存
                6.6的日活 join 6.8的日活,求count  --》 得到6.6号的2日后活跃留存
                6.7的日活 join 6.8的日活,求count  --》 得到6.7号的1日后活跃留存           
*/
/*
    方案2:通过“用户活跃区间记录”表来计算
   计算逻辑:
      1. 源表: dws_usr_cta
      2. 逻辑
一方面:
            过滤出区间end_dt = 9999-12-31的且记录(这些是当日有活跃的,也才是所谓留存的)
按照 end_dt - start_dt 差来分组(这个差就是 “留存天数”,>7则为7),求人数
(这里即得出  “留存天数,留存人数”两个字段) tmp1
       另一方面:
从日活统计表中,查询7天内的,每天日期及活跃总数  tmp2
       最后:
           用  tmp2  LEFT  JOIN tmp1  on  DATE_SUB(当日,tmp1.留存天数)=tmp2.日期         
*/
2)、代码实现

《详见项目代码》

六、【终端分析】终端属性分析

1、需求分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、计算方案

本报表的实质就是:
       按照各种维度:联网方式、运营商、app版本
       统计“新用户数”和“活跃用户数”和“启动次数”等

上述需求,都可以通过查询 日活/日新 多维报表 即可得出
《详见项目代码》

七、【App分析】app版本用户分布

1、版本分布报表

在这里插入图片描述
在这里插入图片描述
本报表的实质就是:
       按照app版本维度,来统计“新用户数”和“活跃用户数”和“启动次数”等

上述需求,都可以通过查询 日活/日新 多维报表 即可得出
《详见项目代码》


多易教育,专注大数据培训; 课程引领市场,就业乘风破浪
多易教育官网地址
https://www.51doit.cn
多易教育在线学习平台
https://v.51doit.cn

本项目教程笔记源自多易教育《Titan综合数据仓库与数据运营系统》,在CSDN学院有相关视频教程购买链接,大数据企业级项目实战–Titan大型数据运营系统
本项目课程是一门极具综合性和完整性的大型大数据项目实战课程,课程项目的业务背景源自各类互联网公司对海量用户浏览行为数据和业务数据分析的需求及企业数据管理、数据运营需求。
学完本课程,你将很容易就拿到大数据数仓建设或用户画像建设等岗位的OFFER

本课程项目涵盖数据采集与预处理数据仓库体系建设、用户画像系统建设、数据治理(元数据管理、数据质量管理)、任务调度系统、数据服务层建设、OLAP即席分析系统建设等大量模块,力求原汁原味重现一个完备的企业级大型数据运营系统。

跟随项目课程,历经接近100+小时的时间,从需求分析开始,到数据埋点采集,到预处理程序代码编写,到数仓体系搭建…逐渐展开整个项目的宏大视图,构建起整个项目的摩天大厦。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程简介:  本项目课程是一门极具综合性和完整性的大型项目课程;课程项目的业务背景源自各类互联网公司对海量用户浏览行为数据和业务数据分析的需求及企业数据管理、数据运营需求。 本课程项目涵盖数据采集与预处理、数据仓库体系建设、用户画像系统建设、数据治理(元数据管理、数据质量管理)、任务调度系统、数据服务层建设、OLAP即席分析系统建设等大量模块,力求原汁原味重现一个完备的企业级大型数据运营系统。  拒绝demo,拒绝宏观抽象,拒绝只讲不练,本课程高度揉和理论与实战,并兼顾各层次的学员,真正从0开始,循序渐进,每一个步骤每一个环节,都会带领学员从需求分析开始,到逻辑设计,最后落实到每一行代码,所有流程都采用企业级解决方案,并手把手带领学员一一实现,拒绝复制粘贴,拒绝demo化的实现。并且会穿插大量的原创图解,来帮助学员理解复杂逻辑,掌握关键流程,熟悉核心架构。   跟随项目课程,历经接近100+小时的时间,从需求分析开始,到数据埋点采集,到预处理程序代码编写,到数仓体系搭建......逐渐展开整个项目的宏大视图,构建起整个项目的摩天大厦。  由于本课程不光讲解项目的实现,还会在实现过程中反复揉和各种技术细节,各种设计思想,各种最佳实践思维,学完本项目并勤于实践的话,学员的收获将远远超越一个项目的具体实现,更能对大型数据系统开发产生深刻体悟,对很多技术的应用将感觉豁然开朗,并带来融会贯通能力的巨大飞跃。当然,最直接的收获是,学完本课程,你将很容易就拿到大数据数仓建设或用户画像建设等岗位的OFFER课程模块: 1. 数据采集:涉及到埋点日志flume采集系统,sqoop业务数据抽取系统等; 2. 数据预处理:涉及到各类字典数据构建,复杂结构数据清洗解析,数据集成,数据修正,以及多渠道数据的用户身份标识打通:ID-MAPPING等;3. 数据仓库:涉及到hive数仓基础设施搭建,数仓分层体系设计,数仓分析主题设计,多维分析实现,ETL任务脚本开发,ETL任务调度,数据生命周期管理等;4. 数据治理:涉及数据资产查询管理,数据质量监控管理,atlas元数据管理系统,atlas数据血缘管理等;5. 用户画像系统:涉及画像标签体系设计,标签体系层级关系设计,各类标签计算实现,兴趣类标签的衰减合并,模型标签的机器学习算法应用及特征提取、模型训练等;6. OLAP即席分析平台:涉及OLAP平台的整体架构设计,技术选型,底层存储实现,Presto查询引擎搭建,数据服务接口开发等;7. 数据服务:涉及数据服务的整体设计理念,架构搭建,各类数据访问需求的restapi开发等;课程所涉及的技术: 整个项目课程中,将涉及到一个大型数据系统中所用到的几乎所有主要技术,具体来说,包含但不限于如下技术组件:l Hadoopl Hivel HBasel SparkCore /SparkSQL/ Spark GRAPHX / Spark Mllibl Sqoopl Azkabanl Flumel lasal Kafkal Zookeeperl Solrl Prestop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值