数据仓库的设计
数据仓库设计分层规划ODS(原始数据层): 存放未经过处理的原始数据,结构上与源系统保持一致,是数据仓库的数据准备区DWD(明细数据层):基于维度建模理论进行构建,存放维度模型中的事实表,保存各业务过程最小粒度的操作记录DWS(汇总数据层):基于上层的指标需求,以分析的主题对象作为建模驱动,构建公共统计粒度的汇总表ADS(数据应用层):存放各项统计指标结果DIM(公共维度层):基于维度建模理论进行
数据仓库设计
分层规划
- ODS(原始数据层): 存放未经过处理的原始数据,结构上与源系统保持一致,是数据仓库的数据准备区
- DWD(明细数据层):基于维度建模理论进行构建,存放维度模型中的事实表,保存各业务过程最小粒度的操作记录
- DWS(汇总数据层):基于上层的指标需求,以分析的主题对象作为建模驱动,构建公共统计粒度的汇总表
- ADS(数据应用层):存放各项统计指标结果
- DIM(公共维度层):基于维度建模理论进行构建,存放维度模型中的维度表,保存一致性维度信息
数据仓库构建流程
数据调研
1)业务调研
主要目标是熟悉业务流程、熟悉业务数据
熟悉业务流程、明确每个业务的具体流程,需要将该业务所包含的每个业务过程一一列举出来
熟悉业务数据要求做到将业务数据与业务过程对应起来,明确每个业务过程会对哪些表的数据产生影响,以及产生什么影响 注意:需要具体到是新增一条数据,还是修改一条数据,并且需要明确新增加的内容或者是修改的逻辑
2)需求分析
典型的需求指标如,最近一天各省份手机品类订单总额
分析上述需求:所求的指标是订单总额,那么所需的业务过程就是下单,订单表,维度的话是最近一天,那么就需要时间维度,各省份的话就需要地区省份维度,手机品类就需要categrouy品类维度
- 分析需求时,需要明确所需的业务过程及维度
3)总结
做完业务分析和需求分析之后,要保证每个需求都能找到与之对应的业务过程及维度。若现有数据无法满足需求,则需要和业务方进行沟通,例如某个页面需要新增某个行为的埋点。
明确数据域
数据仓库设计需要横向分层外,通常也需要根据业务情况进行纵向划分数据域,划分数据域的意义是便于数据的管理和应用
- 其实说白了就是对数据进行分类(方便开发人员后续找到该数据)
通常可以根据业务过程或者部门进行划分,本项目根据业务过程进行划分
**注意:**是一个业务过程只能属于一个数据域。
下面是电商数仓项目所需的所有业务过程及数据域划分详情。
数据域 | 业务过程 |
---|---|
交易域 | 加购、下单、取消订单、支付成功、退单、退款成功 |
流量域 | 页面浏览、启动应用、动作、曝光、错误 |
用户域 | 注册、登录 |
互动域 | 收藏、评价 |
工具域 | 优惠券领取、优惠券使用(下单)、优惠券使用(支付) |
构建业务总线矩阵
业务总线矩阵中包含维度模型所需的所有事实(业务过程)以及维度,以及各业务过程与各维度的关系。矩阵的行是一个个业务过程,矩阵的列是一个个的维度,行列的交点表示业务过程与维度的关系。
一个业务过程对应维度模型中一张事务型 事实表,一个维度则对应维度模型中的一张维度表。所以构建业务总线矩阵的过程就是设计维度模型的过程。但是需要注意的是,总线矩阵中通常只包含事务型事实表,另外两种类型的事实表需单独设计。
按照事务型事实表的设计流程,选择业务过程->声明粒度->确认维度->确认事实,得到的最终的业务总线矩阵见以下表格。
明确统计指标
指标体系相关概念:
原子指标:原子指标基于某一业务过程的度量值,是业务定义中不可再拆解的指标,原子指标的核心功能就是对指标的聚合逻辑进行了定义。我们可以得出结论,
原子指标包含三要素,分别是业务过程、度量值和聚合逻辑。
例如订单总额就是一个典型的原子指标,其中的业务过程为用户下单、度量值为订单金额,聚合逻辑为sum()求和。需要注意的是原子指标只是用来辅助定义指标一个概念,通常不会对应有实际统计需求与之对应。
派生指标:
派生指标= 原子指标+ 统计周期+业务限定+统计粒度
衍生指标:衍生指标是在一个或多个派生指标的基础上,通过各种逻辑运算复合而成的。例如比率、比例等类型的指标。衍生指标也会对应实际的统计需求。
需求分析:列的思维导图
维度模型设计
汇总模型设计
汇总模型的设计参考上述整理出的指标体系(主要是派生指标)即可。汇总表与派生指标的对应关系是,一张汇总表通常包含业务过程相同、统计周期相同、统计粒度相同的多个派生指标。
放在一张汇总表:业务过程,统计周期,统计粒度
更多推荐
所有评论(0)