第1章 数据仓库概念
数据仓库( Data Warehouse ),是为企业制定决策,提供数据支持的。可以帮助企业改进业务流程、提高产品质量等。
数据仓库的输入数据通常包括:业务数据、用户行为数据和爬虫数据等
业务数据:就是各行业在处理事务过程中产生的数据。比如用户在网站中登录、下单、支付等过程中,需要和网站后台数据库进行增删改查交互,产生的数据就是业务数据。业务数据通常存储在MySQL、Oracle等数据库中。

用户行为数据:用户在使用产品过程中,通过埋点收集与客户端产品交互过程中产生的数据,并发往日志服务器进行保存。比如页面浏览、点击、停留、评论、点赞、收藏等。用户行为数据通常存储在日志文件中。

爬虫数据:通常是通过技术手段获取其他公司网站的数据。不建议同学们这样去做。

第2章 项目需求及架构设计
2.1 需求分析
1)采集平台
(1)用户行为数据采集平台搭建
(2)业务数据采集平台搭建
2)离线需求
| 主题 | 衍生指标/派生指标 | 派生指标/被依赖的派生指标 | 统计周期 | 统计粒度 | 原子指标 | ||
| 业务过程 | 度量值 | 聚合逻辑 | |||||
| 流量主题 | 最近 1/7/30 日各来源访客数 | 最近 1 日各会话页面浏览 * | 最近 1 日 | 会话 | 页面浏览 | ||
| 最近 1/7/30 日各来源会话总数 | 最近 1 日各会话页面浏览 * | ||||||
| 最近1/7/30日各来源会话平均浏览页面数 | 最近 1 日各会话浏览页面数 | 最近 1 日 | 会话 | 页面浏览 | 1 | count() | |
| 最近1/7/30日各来源会话平均停留时长 | 最近 1 日各会话停留时长 | 最近 1 日 | 会话 | 页面浏览 | during_time | sum() | |
| 最近1/7/30日各来源跳出率 | 最近 1 日各会话浏览页面数 | ||||||
| 最近1/7/30日路径分析(页面跳转) | 最近 1/7/30 日 | source-target | 页面浏览 | 1 | count() | ||
| 用户主题 | 最近 1 日流失用户数 | 用户末次登陆日期 | 历史至今 | 用户 | 用户登陆 | login_date | max() |
| 最近 1 日回流用户数 | 用户末次登陆日期 | ||||||
| 最近 1-7 日新增用户留存率 | 用户末次登陆日期 | ||||||
| 用户注册日期 | 历史至今 | 用户 | 用户注册 | register_date | |||
| 最近 1/7/30 日新增用户数 | 用户注册日期 | ||||||
| 最近 1/7/30 日活跃用户数 | 用户末次登陆日期 | ||||||
| 最近 1/7/30 日首页浏览人数 | 最近 1/7/30 日 | 页面浏览 | mid_id | count(distinct ) | |||
| 最近 1/7/30 日商品详情页浏览人数 | 最近 1/7/30 日 | 页面浏览 | mid_id | count(distinct ) | |||
| 最近 1/7/30 日加购人数 | 最近 1/7/30 日各用户加购课程数 | 最近 1/7/30 日 | 用户 | 用户加购 | course_id | count() | |
| 最近 1/7/30 日下单人数 | 最近 1/7/30 日各用户下单次数 | 最近 1/7/30 日 | 用户 | 用户下单 | order_id | count(distinct ) | |
| 最近 1/7/30 日支付人数 | 最近 1/7/30 日各用户支付次数 | 最近 1/7/30 日 | 用户 | 用户支付 | order_id | count(distinct ) | |
| 最近 1/7/30 日新增下单人数 | 用户首次下单日期 | 历史至今 | 用户 | 用户下单 | order_dt | min() | |
| 最近 1/7/30 日新增支付人数 | 用户首次支付日期 | 历史至今 | 用户 | 用户支付 | payment_dt | min() | |
| 最近 1/7/30 日各年龄段下单人数 | 用户末次下单日期 | 历史至今 | 用户 | 用户下单 | order_dt | max() | |
| 课程主题 | 最近 1/7/30 日各类别下单次数 | 最近 1/7/30 日 | 类别 | 用户下单 | order_id | count(distinct ) | |
| 最近 1/7/30 日各类别下单人数 | 最近 1/7/30 日 | 类别 | 用户下单 | user_id | count(distinct ) | ||
| 最近 1/7/30 日各类别下单金额 | 最近 1/7/30 日 | 类别 | 用户下单 | order_amount | sum() | ||
| 最近 1/7/30 日各学科下单次数 | 最近 1/7/30 日 | 学科 | 用户下单 | order_id | count(distinct ) | ||
| 最近 1/7/30 日各学科下单人数 | 最近 1/7/30 日 | 学科 | 用户下单 | user_id | count(distinct ) | ||
| 最近 1/7/30 日各学科下单金额 | 最近 1/7/30 日 | 学科 | 用户下单 | order_amount | sum() | ||
| 最近 1/7/30 日各课程下单次数 | 最近 1/7/30 日 | 课程 | 用户下单 | order_id | count(distinct ) | ||
| 最近 1/7/30 日各课程下单人数 | 最近 1/7/30 日 | 课程 | 用户下单 | user_id | count(distinct ) | ||
| 最近 1/7/30 日各课程下单金额 | 最近 1/7/30 日 | 课程 | 用户下单 | order_amount | sum() | ||
| 最近 1/7/30 日各课程用户平均评分 | 最近 1/7/30 日 | 课程 | 用户评价 | review_stars | avg() | ||
| 最近 1/7/30 日各课程评价用户数 | 最近 1/7/30 日 | 课程 | 用户评价 | user_id | count() | ||
| 最近 1/7/30 日各课程用户好评率 | 最近 1/7/30 日各课程好评用户数 | 最近 1/7/30 日 | 课程 | 用户评价 | user_id | count() | |
| 最近 1/7/30 日各课程评价用户数 | |||||||
| 交易主题 | 最近 1/7/30 日下单总额 | 最近 1 日各会话下单金额 | 最近 1 日 | 会话 | 用户下单 | order_amount | sum() |
| 最近 1/7/30 日下单次数 | 最近 1 日各会话下单次数 | 最近 1 日 | 会话 | 用户下单 | order_id | count(distinct ) | |
| 最近 1/7/30 日下单人数 | 最近 1 日各会话下单 * | 最近 1 日 | 会话 | 用户下单 | |||
| 最近 1/7/30 日各省份下单次数 | 最近 1 日各会话下单次数 | ||||||
| 最近 1/7/30 日各省份下单人数 | 最近 1 日各会话下单 * | ||||||
| 最近 1/7/30 日各省份下单金额 | 最近 1 日各会话下单金额 | ||||||
| 最近1/7/30日各来源销售额 | 最近 1 日各会话下单金额 | ||||||
| 最近1/7/30日各来源转化率 | 最近 1 日各会话下单 * | ||||||
| 最近 1 日各会话页面浏览 * | |||||||
| 考试主题 | 最近 1/7/30 日各试卷考试人数 | 最近 1/7/30 日 | 试卷 | 用户考试 | user_id | count() | |
| 最近 1 日各试卷平均分 | 最近 1 日 | 试卷 | 用户考试 | score | avg() | ||
| 最近 7/30 日各试卷平均分 | 最近 7/30 日各试卷总分 | 最近 7/30 日 | 试卷 | 用户考试 | score | sum() | |
| 最近 7/30 日各试卷考试人数 | |||||||
| 最近 1 日各试卷平均时长 | 最近 1 日 | 试卷 | 用户考试 | duration_time | avg() | ||
| 最近 7/30 日各试卷平均时长 | 最近 7/30 日各试卷总时长 | 最近 7/30 日 | 试卷 | 用户考试 | duration_time | sum() | |
| 最近 7/30 日各试卷考试人数 | |||||||
| 最近 1/7/30 日各课程考试人数 | 最近 1/7/30 日 | 课程 | 用户考试 | user_id | count(distinct) | ||
| 最近 1/7/30 日各课程平均分 | 最近 1/7/30 日 | 课程 | 用户考试 | score | avg() | ||
| 最近 1/7/30 日各课程平均时长 | 最近 1/7/30 日 | 课程 | 用户考试 | duration_time | avg() | ||
| 最近 1/7/30 日各试卷成绩分布 | 最近 1/7/30 日 | 试卷-分数段 | 用户考试 | user_id | count() | ||
| 最近 1/7/30 日各题目正确率 | 最近 1/7/30 日各题目正确答题次数 | 最近 1/7/30 日 | 题目 | 用户考试 | 1 | count() | |
| 最近 1/7/30 日各题目答题次数 | 最近 1/7/30 日 | 题目 | 用户考试 | 1 | count() | ||
| 播放主题 | 最近 1/7/30 日各章节视频播放次数 | 最近 1/7/30 日 | 章节 | 视频播放 | session_id | count() | |
| 最近 1/7/30 日各章节人均观看时长 | 最近 1/7/30 日各章节视频播放时长 | 最近 1/7/30 日 | 章节 | 视频播放 | during_time | sum() | |
| 最近 1/7/30 日各章节观看人数 | 最近 1/7/30 日 | 章节 | 视频播放 | user_id | count(distinct ) | ||
| 最近 1/7/30 日各章节观看人数 | |||||||
| 完课主题 | 最近 1/7/30 日各课程用户平均完成章节数 | 各用户各章节首次完播日期 | 历史至今 | 章节-用户 | 视频播放 | play_dt | min() |
| 最近 1/7/30 日各课程完课人数 | 各用户各章节首次完播日期 | ||||||
| 最近 1/7/30 日完课人数 | 各用户各章节首次完播日期 | ||||||
| 最近 1/7/30 日完课人次 | 各用户各章节首次完播日期 | ||||||
3)实时需求
| 主题 | 子主题 | 衍生指标/派生指标 | 派生指标/被依赖的派生指标 | 统计周期 | 统计粒度 |
| 流量主题 | 各渠道流量统计 | 当日各来源独立访客数 | 各窗口各版本各来源各地区各类别独立访客数 | 窗口 | 版本-来源-地区-类别 |
| 当日各来源会话总数 | 各窗口各版本各来源各地区各类别开启会话数 | 窗口 | 版本-来源-地区-类别 | ||
| 当日各来源会话平均浏览页面数 | 各窗口各版本各来源各地区各类别开启会话数 | ||||
| 各窗口各版本各来源各地区各类别页面浏览数 | 窗口 | 版本-来源-地区-类别 | |||
| 当日各来源会话平均停留时长 | 各窗口各版本各来源各地区各类别开启会话数 | ||||
| 各窗口各版本各来源各地区各类别页面停留时长 | 窗口 | 版本-来源-地区-类别 | |||
| 当日各来源跳出率 | 各窗口各版本各来源各地区各类别开启会话数 | ||||
| 各窗口各版本各来源各地区各类别跳出会话数 | 窗口 | 版本-来源-地区-类别 | |||
| 流量分时统计 | 当日分时独立访客数 | 各窗口各版本各来源各地区各类别独立访客数 | |||
| 当日分时页面浏览数 | 各窗口各版本各来源各地区各类别页面浏览数 | ||||
| 当日分时新访客数 | 各窗口各版本各来源各地区各类别独立访客数 | ||||
| 新老访客流量统计 | 当日各类访客独立访客数 | 各窗口各版本各来源各地区各类别独立访客数 | |||
| 当日各类访客页面浏览数 | 各窗口各版本各来源各地区各类别页面浏览数 | ||||
| 当日各类访客跳出率 | 各窗口各版本各来源各地区各类别开启会话数 | ||||
| 各窗口各版本各来源各地区各类别跳出会话数 | 窗口 | 版本-来源-地区-类别 | |||
| 当日各类访客平均在线时长 | 各窗口各版本各来源各地区各类别页面停留时长 | ||||
| 各窗口各版本各来源各地区各类别独立访客数 | |||||
| 当日各类访客平均访问页面数 | 各窗口各版本各来源各地区各类别页面浏览数 | ||||
| 各窗口各版本各来源各地区各类别独立访客数 | |||||
| 关键词统计 | 当日各关键词评分 | 各窗口各来源各关键词出现次数 | 窗口 | 来源-关键词 | |
| 用户主题 | 用户变动统计 | 当日回流用户数 | 各窗口回流用户数 | 窗口 | |
| 用户新增活跃统计 | 当日新增用户数 | 各窗口注册用户数 | 窗口 | ||
| 当日活跃用户数 | 各窗口登陆独立用户数 | 窗口 | |||
| 用户行为漏斗分析 | 当日首页浏览人数 | 各窗口首页浏览独立访客数 | 窗口 | ||
| 当日课程列表页浏览人数 | 各窗口课程列表页独立访客数 | 窗口 | |||
| 当日课程详情页浏览人数 | 各窗口课程详情页独立访客数 | 窗口 | |||
| 当日加购人数 | 各窗口加购独立用户数 | 窗口 | |||
| 当日下单人数 | 各窗口下单独立用户数 | 窗口 | |||
| 当日支付成功人数 | 各窗口支付成功独立用户数 | 窗口 | |||
| 新增交易用户统计 | 当日新增下单人数 | 各窗口新增下单人数 | 窗口 | ||
| 当日新增支付成功人数 | 各窗口新增支付成功人数 | 窗口 | |||
| 课程主题 | 下单情况统计 | 当日各学科下单金额 | 各窗口各课程下单金额 | 窗口 | 课程 |
| 当日各类别下单金额 | 各窗口各课程下单金额 | ||||
| 当日各课程下单金额 | 各窗口各课程下单金额 | ||||
| 评价情况统计 | 当日各课程用户平均评分 | 各窗口各课程评分总和 | 窗口 | 课程 | |
| 各窗口各课程评价用户数 | 窗口 | 课程 | |||
| 当日各课程评价用户数 | 各窗口各课程评价用户数 | ||||
| 当日各课程好评用户数 | 各窗口各课程好评用户数 | 窗口 | 课程 | ||
| 当日各课程好评率 | 各窗口各课程好评用户数 | ||||
| 各窗口各课程评价用户数 | |||||
| 交易主题 | 各来源交易统计 | 当日各来源订单总额 | 各窗口各来源下单金额 | 窗口 | 来源 |
| 当日各来源下单人数 | 各窗口各来源下单独立用户数 | 窗口 | 来源 | ||
| 当日各来源订单数 | 各窗口各来源订单数 | 窗口 | 来源 | ||
| 各省份交易统计 | 当日各省份订单总额 | 各窗口各省份下单金额 | 窗口 | 省份 | |
| 当日各省份下单人数 | 各窗口各省份下单独立用户数 | 窗口 | 省份 | ||
| 当日各省份订单数 | 各窗口各省份订单数 | 窗口 | 省份 | ||
| 交易综合统计 | 当日订单总额 | 各窗口各来源下单金额 | |||
| 当日订单数 | 各窗口各来源订单数 | ||||
| 考试主题 | 各试卷考试统计 | 当日各试卷考试人次 | 各窗口各试卷考试人次 | 窗口 | 试卷 |
| 当日各试卷平均分 | 各窗口各试卷总分 | 窗口 | 试卷 | ||
| 各窗口各试卷考试人次 | |||||
| 当日各试卷平均时长 | 各窗口各试卷考试总时长 | 窗口 | 试卷 | ||
| 各窗口各试卷考试人次 | |||||
| 各课程考试统计 | 当日各课程考试人次 | 各窗口各试卷考试人次 | |||
| 当日各课程平均分 | 各窗口各试卷总分 | ||||
| 各窗口各试卷考试人次 | |||||
| 当日各课程平均时长 | 各窗口各试卷考试总时长 | ||||
| 当日各试卷考试人次 | |||||
| 各试卷成绩分布 | 当日各试卷成绩分布 | 各窗口各试卷成绩分布 | 窗口 | 试卷-分数段 | |
| 答题情况统计 | 当日各题目正确答题次数 | 各窗口各题目正确答题次数 | 窗口 | 题目 | |
| 当日各题目答题次数 | 各窗口各题目答题次数 | 窗口 | 题目 | ||
| 当日各题目正确率 | 各窗口各题目正确答题次数 | ||||
| 各窗口各题目答题次数 | |||||
| 播放主题 | 各章节播放统计 | 当日各章节视频播放次数 | 各窗口各章节视频播放次数 | 窗口 | 章节 |
| 当日各章节累计播放时长 | 各窗口各章节视频播放时长 | 窗口 | 章节 | ||
| 当日各章节观看人数 | 各窗口各章节观看人数 | 窗口 | 章节 | ||
| 当日各章节人均观看时长 | 各窗口各章节视频播放时长 | ||||
| 各窗口各章节观看人数 |
2.2 需求汇总

1、用户行为数据采集平台搭建
2、业务数据采集平台搭建
3、数据仓库维度建模
4、分析,设备、会员、商品、地区、活动等在线教育核心主题,统计的报表指标近100个。
5、采用即席查询工具,随时进行指标分析
6、对集群性能进行监控,发生异常需要报警。
7、元数据管理
8、质量监控
9、权限管理
2.3 项目框架
2.3.1 技术选型
技术选型主要考虑因素:数据量大小、业务需求、行业内经验、技术成熟度、开发维护成本、总成本预算
2.3.2 系统数据流程设计

2.3.3 框架版本选型
1)如何选择Apache/CDH/HDP版本?
(1)Apache:运维麻烦,组件间兼容性需要自己调研。(一般大厂使用,技术实力雄厚,有专业的运维人员)(建议使用)
(2)CDH:国内使用最多的版本,但CM不开源,今年开始收费,一个节点1万美金/年。
(3)HDP:开源,可以进行二次开发,但是没有CDH稳定,国内使用较少
2)云服务选择
(1)阿云的EMR、MaxCompute、DataWorks
(2)亚马逊云EMR
(3)腾讯云EMR
(4)华为云EMR
2.3.4 服务器选型
1)物理机
2)云主机
2.3.5 集群规模
(1)每天日活跃用户100万,每人一天平均100条:100万*100条=1亿条
(2)每条日志1K左右,每天1亿条:100000000/1024/1024=约100G
(3)半年内不扩容服务器来算:100G*180天=约18T
(4)保存3副本:18T*3=54T
(5)预留20%~30%Buf=54T/0.7=77T
(6)算到这:约8T*10台服务器
