一、数据仓库概述
概念
数据仓库是一种面向商务智能活动的数据管理系统,用于分析和报告来自多个来源的结构化和半结构化数据。
特点:
面向主题,按一定主题域组织。
集成,综合提炼的数据。
反应历史变化,数据相对稳定。
为分析服务。
2. 对比
数据仓库和数据库对比
特性 | 数据仓库 | 数据库 |
定位 | 数据分析OLAP | 事务处理OLTP |
操作 | 查询 | 增删改查 |
数据粒度 | 维度 | 事件记录 |
存储方式 | 列存 | 行存 |
表结构 | 星型、雪花 | 三范式( 属性不可再分; 满足一,且完全依赖主属性; 满足二,且不存在传递依赖) |
数据结构 | 读优化 | 读写优化 |
数据模型
星型:由一张事实表和一组维度表组成,这些维度表以事实表为中心,和事实表直接相连。
雪花型:星型的基础上,维度表可以有其他维度表,并且维度表和和维度表之间连接。较星型性能低。
附:
事实表:分析主题的度量以及与各维度表相关联的外键,通过join与维度表相连。
度量包括:
可加:最为灵活,可以按照与事实表关联的任意维度汇总。
半可加:可以按照某些维度汇总,但不能对所有维度汇总,如:差额。除了时间维度外,它们可以跨所有维度进行加法操作。
不可加事实:这些维度完全不可加,如比率。
事实表可分为:
事务事实表:该表一行对应空间或者时间上某点的度量时间,即流水数据。
周期快照事实表:该表每一行汇总了发生在某一标准周期,如一天、一小时。即按某种维度轻度汇总的数据。
累计快照事实表:该表的行汇总发生在过程开始和结束之间可预测步骤内的度量事件。即记录整个业务过程,如下单时间、支付时间等
无事实的事实表:有些事件没有事实,事实包含多个维度。如 某天学生参加的课程。
开发原则:
业务完整
不冗余
度量拆解
粒度
空值处理
维度表:用户分析数据的窗口,包含事实数据表中事实记录的特性,每个维度表都包含单一的主键列用于与之关联的事实表的外键。
特征:
维度表的范围较宽,如具有多个属性、列。
较事实表行数相对小。
内容固定。
分层概念
分层的意义:解耦,把复杂的问题简单化。
分层的好处:数据结构清晰、减少重复开发、统一数据口径、复杂问题简单化。
通用的分层架构(由下向上):
层级 | 说明 | 描述 |
ADS | 数据应用层 | 面向实际的数据需求,可以直接给业务人员使用。以DWD、DWS为基础,组成各种统计报表。 |
DWS | 数据汇总层 | 以分析的主题对象作为建模驱动,基于上传的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表手段物化模型。构建命名规范、口径一致的统计指标。 |
DWD | 数据明细层 | 以业务过程为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表,并提供一定的数据质量保证。 |
ODS | 原始数据层 | 存放未处理的或者经过简单清洗的数据,原则全量保留。 |
二、数仓建模
流程
业务理解:对业务整体梳理,理清业务间的关系和业务流程。需要对数据模型范围界定,最后对整体目标和阶段划分设定。
领域建模:抽取关键业务概念,对其分组、聚合。抽象同组概念内的业务流程、理清分组概念间的关系。
逻辑建模:对数据层次逻辑化,包括 业务实体化、事件实体化、说明实体化。
物理建模:数据模型物理化,包括基于数仓平台进行技术调整,考虑后续的模型性能和数据管理,以及数据模型脚本开发。
模型迭代:对数据模型脚本的维护和迭代。
过程
选择业务过程:由组织完成的微观活动,包含以下共同特征:
业务过程通常使用行为动词表示,通常表示业务执行的过程。
通常由某个操作型系统支持,如账单系统、购买系统。
建立或获取关键性 能 度量。
通常由输入激活,产生输出度量,即一系列过程产生一系列事实表。
声明粒度:精确定义某个事实表的每一行表示什么。(如何描述事实表中每个行的内容)
确定维度:承担每个度量环境中所有可能的单值描述符。在选择每个维度时,应该列出所有具体的、文本类型的属性用于充实每个维度表。(如何描述来自业务过程度量事件的数据)
确定事实:确定业务中的度量值,如下单次数等。
三、其他概念补充
缓慢变化维
数据随时间变化,比如用户表中的年龄、地址等信息。
拉链表
记录事物从开始到现在的状态的所有变化信息;每次上报的都是历史记录的最终状态。
元数据
包括技术元数据和业务元数据。
技术元数据:表、分区、名称、类型、索引等。
业务元数据:主题域、维度等。
四、参考
《数据仓库工具箱》第三版