电商数据仓库—用户行为数仓
数仓分层概念
- 为什么数仓分层?(优点)
- 把复杂问题简单化,方便定位问题
- 减少重复开发,通过中间数据层可以增加一次计算的复用性
- 隔离原始数据,使真实数据和统计数据解耦开
- 分为那几层?具体作用是什么?
- ODS:原始数据层,主要存储最原始采集来的数据
- DWD:数据清洗层,对ODS层的数据进行清洗,去空值,去异常值,去重复值
- DWS:服务数据层,对DWD层的数据进行一个轻度的汇总,主要以明细为主
- ADS:数据应用层,对DWS层的数据进行一个明确的统计,为各种统计报表提供数据
数仓搭建详情
-
搭建ODS
-
搭建DWD
-
自定义UDF和UDTF来搭建基础事务表(DWD)
- 自定义UDF和UDTF分别继承UDF和GenericUDTF
- UDF中重写evaluate方法
- UDTF中主要重写process方法
-
自定义UDF和UDTF的作用
hive中的已有的函数不能满足业务需求,需要自定义
-
自定义UDF和UDTF分别处理什么问题
用UDF函数解析公共字段;用UDTF函数解析事件字段。
-
各个业务术语和指标的理解及做法
-
活跃用户
解释:每天只要登陆了的用户
做法:在启动日志中统计不同的设备ID出现的次数
-
新增用户
解释:第一次注册登陆的用户
做法:用活跃用户表left join新增用户表,如果新增表中mid为空,则是属于新增用户
-
次日留存用户
解释:昨天新增用户在今天登陆的
做法:昨天新增用户表join今天活跃用户,并且条件是两个表的mid相等
-
沉默用户
解释:第一次注册登陆后,再也没有登陆过(一般指的是7天之后还没登陆的用户)
做法:按照设备id对日活表进行分组,登录次数为1,且是在一周前登陆
-
本周回流用户
解释:本周活跃了,上周没活跃,上上周活跃了
做法:用本周用户活跃表left join本周用户新增表,其结果left join上周用户活跃表,并且本周用户新增表和上周用户活跃表的mid为空的用户
-
流失用户
解释:一周没有登陆过的用户
做法:按照设备id对日活表进行分组,且七天没有登陆过
-
最近连续3周活跃用户数
解释:连续三周都登陆过的用户的总数
做法:按照设备id对周活表进行分组,且统计次数为三次
-
最近七天内连续三天活跃用户数
解释:在七天内有连续三天登陆过的用户的总数
做法:先查询出7天内的活跃用户,按照设备id分组并且日期重大到小排名;然后计算出日期和排名的差值,再对同用户及差值进行分组,统计出次数大于 3的mid,然后以mid分组去重
整个文档中涉及的所有层级及表
- ODS
- 事件日志表
- 启动日志表
- DWD
- 启动表
- 事件基础表
- 点赞表
- 商品点击表
- 收藏表
- 评论比表
- …
- DWS
- 日活表
- 每日新增设备表
- 每日留存用户明细表
- 周活表
- 月活表
- 日活表
- ADS
- 每日新增设备数量表
- 留存用户比率表
- 留存用户数量表
- 活跃设备数量表
- 沉默用户数量表
- 流失用户数量表
- 最近7天连续3天活跃用户数量表
- 本周回流用户数量表
- 连续三周活跃用户数量表
-