数据仓库维度模型知识点记录
1. 生命周期
a) 业务需求定义
i. 收集需求
ii. 分析业务
iii. 数据仓库建立总线矩阵
iv. 项目规划
b) 维度建模、
i. 建模过程
1. 标识需要建模的业务过程
2. 声明粒度
3. 标识和选择维度
4. 标识和选择事实
ii. 维度表
1. 代理键
a) 日期维度可以使用20140101这样的智能键,智能键可以用来分区
2. 渐变维度
a) SCD1 直接更新
b) SCD2 标记维度的时间作用域,插入新数据,增加新行
c) SCD3 不同的列 记录不同时间域的值,增加新列
d) 将经常变化属性集合为小维度表
3. 退化维度
a) 没有对应维度表的非事实属性:类似于订单ID
4. 支架维度/引用维度
a) 比较类似于雪花模型,例如顾客的生日属性可以链接到日期维度表。
日期维度表就是顾客维度的支架维度
5. 多值维度
a) 使用桥接表实现
b) 事实与维度的多值关系
i. 例如订单的为多商户分成,可以通过一个商户分组链接表实现,
订单事实中记录商户分组的ID ,分组链接表中分行记录不同商
户的账号ID 及其分成
c) 维度与维度的多值关系
i. 例如用户帐户维度与消费自然人客户维度有多对多关系。因此在
帐户维度表与自然人维度表中加入一个“帐户与客户关系”桥接
表。记录
d) 可变层次展示
i. 例如职员与职员间隶属关系:可以使用桥接表记录每个职员与其
所有下属之间的隶属距离和其下属的直接上司,就可以层次化的
表示出职员之间关系
6. 角色扮演维
a) 例如下单日期维度和退款日期维度都是通过视图链接到日期维度表,
这两个维度都是角色扮演维。
7. 杂项维度
a) 慎用杂项维度
b) 将小维度合并组成杂项维度。
iii. 事实表
1. 事务型事实
2. 周期快照事实
3. 累计快照事实
4. 没有事实的事实
a) 例如用户登录行为事实,其只有维度没有度量,那么添加一个值永远
为1的login_cnt字段为度量,方便sum
5. 面向状态的事实表
a) 例如帐户余额其实对应了一个具体的自然人,在自然人的地理位置变
化后,该自然人维度会有SCD 2的转换,可能代理键从1 – 2.帐户余
额需要做一个SCD 2的转换,将自然人维度引用该为2. 其实是为了查
询任意时间点,某个地理位置的帐户余额总和
c) 物理设计和ETL 开发
i. 源数据探查
1. 出具数据剖析表来记录字段的类型,数据分布等
ii. 子系统
1. 提取
a) 数据剖析:KETTLE 有插件datacleaner 实现
i. NULL 值判断
ii. 字符串匹配
iii. 数值分布报表
iv. 正则表达式匹配等
b) 更改数据捕获系统:KETTLE
c) 提取系统:KETTLE 的INPUT 节点的功能
2. 清理和一致化:KETTLE 已经实现
a) 数据清洗
i. 转换数据类型
ii. 重命令列等
b) 数据检验
i. Kettle 提供了流读取功能来验证数据是否错误
1. 取值范围是否合规
2. 关系完整性是否存在
3. 是否符合状态机规则(例如没有支付日期时就不应该有支付
状态)
4. 一般依赖约束:例如派生列和其父列是否满足约束
c) 错误事件模式:KETTLE 的错误流节点
i. 过程错误:trans step等出错
ii. 数据校验错误
iii. 过滤器错误
iv. 一般步骤错误
v. ETL 工具箱中描述的错误事件数据分析表能够起作用
d) 审核维度汇编器:KETTLE 通过统计节点实现
i. 审计事实细节:数据从哪里来,什么时候加载,在那个服务器上
加载
ii. 数据质量指标:读取了多少记录,过滤了多少记录
iii. ETL 工具箱中提供了审计维度的模型
e) 重复数据删除:KETTLE 的删除节点
f) 一致化系统:KETTLE 的 LookUp 映射节点实现
3. 装载和发布
a) 渐变维度处理
b) 代理键生成
c) 层次结构管理
d) 事实表的管理
e) 都可由KETTLE 现有节点 或者 组合不同节点实现
4. 管理
a) 任务调度系统:KETTLE 有简单实现
b) 备份系统:没有
c) 版本控制系统:没有
d) 排序系统:KETTLE 有
e) 谱系和依赖关系分析:KETTLE 可以通过插件实现。
f) 监控系统:KETTLE 有简单的免费功能版监控
d) 主数据管理
i. 模型资源管理
1. 类似于UML 的模型管理
2. 增加了各实体及属性的版本控制
3. 实现
a) 实体表:用来保存各个实体
b) 属性表:用来保存各实体的属性及其各版本对应信息,更改时间等
c) 关系表:用来保存各实体间关系
4. 用于解决类似于表扩散的问题
e) 元数据管理
i. 过程元数据
1. ETL 系统的开始、结束时间,CPU 使用率,内存使用,处理数据行数等统
计数据
2. 筛选和审计结果
3. 数据库或者表使用信息
4. 报表查看次数、系统调用次数等
ii. 技术源数据
1. 源数据系统描述:例如连接方式,账号、密码等
2. ETL 调度依赖关系等
3. 数据库中元素描述:例如mysql 中的元数据
4. OLAP 聚集的定义
5. 报表的定义
iii. 业务元数据
1. 数据筛选说明
2. 数据字典
3. ETL MAPPING
4. 业务规则描述:例如SCD 类型、空值处理策略等
iv. 扩展
1. 影响分析、血缘分析等其实是根据业务元数据中的ETL MAPPING,将各属
性及其派生属性生成类似于Storm 中的业务树类似的有向无环图,从而查询出其血缘及影响。
f) 数据质量
i. 属性取值范围约束
ii. 关系完整性
iii. 状态依赖规则(是否满足状态机模型约束,比如订单支付中状态只能对应支付
表中正在处理状态)
iv. 一般性依赖状态:例如派生列依赖于其他列取值
v. 数据质量保证的想法
1. 通过数据剖析来控制源头数据
2. 通过数据检验和错误处理保证处理过程的正确
3. 通过审计维度保证处理结果的正确
g) 调度系统
i. 调度跟踪
ii. 资源分配