数据仓库理论
一、数据仓库简介
1.1、 数据仓库
数据仓库为一个面向主题的、集成的、随时间变化的、非易失的数据集合,用于支持管理者的决策过程。
- 操作型系统和分析型系统
- 数据仓库架构
1.2 、etl
-
数据抽取
- 逻辑抽取(增量抽取|全量抽取)
- 物理抽取(联机抽取|脱机抽取)
-
数据转换
- 只装载特定的数据列。例如,某列为空的数据不装载。
- 统一数据编码。例如,性别字段,有些系统使用的是1和0,有些是‘M’和‘F’,有些是‘男’和‘女’,统一成‘M’和‘F’。
- 自由值编码。例如,将‘Male’改成‘M’
- 预计算。例如,产品单价*购买数量=金额。
- 基于某些规则重新排序以提高查询性能。
- 合并多个数据源的数据并去重。
- 预聚合。例如,汇总销售数据。
- 行列转置。
- 将一列转为多列。例如,某列存储的数据是以逗号作为分隔符的字符串,将其分割成多列的单个值。
- 合并重复列。
- 预连接。例如,查询多个关联表的数据。
- 数据验证。针对验证的结果采取不同的处理,通过验证的数据交给装载步骤,验证失败的数据或直接丢弃,或记录下来做进一步检查。
-
数据装载
- 实现方式
- 先删除再插入
- replace into
- merge into
- 实现方式
1.3、 数据仓库的需求
基本需求
- 安全性
- 可访问性
- 自动化
数据需求
- 准确性(数据从哪里来?何时抽取?怎么转换)
- 时效性
- 历史可追溯性
数据转换的目的:统一数据类型、处理拼写错误、消除数据歧义、解析为标准格式等
1.4、 data vault
DataVault模型有中心表(Hub)、链接表(Link)、附属表(Satellite)三个主要组成部分。中心表记录业务主键,链接表记录业务关系,附属表记录业务描述。
二、数据转换与装载
2.1、数据清洗
数据清洗是对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,提供一致性。
1、脏数据
- 残缺数据
- 错误数据
- 重复数据
- 差异数据
2、数据清洗
- 预处理
- 标准化处理。地名、产品名等格式化
- 查重
- 出错处理和纠正
3、渐变维
更新数据的方式:
- SCD1:直接覆盖已经存在的值,不维护记录的历史。SCD1一般用于修改错误数据
- SCD2:在源数据发生变化时,給维度记录建立一个新的“版本”记录,从而维护维度历史。SCD2不删除、修改已存在的数据。
三、维度表
四、事实表
事实表中的数字度量值可划分为可加、半可加、不可加三类
三种不同类型的事实表:
- 事物事实表:以每个事物或事件为单位。例如订单表。
- 周期快照事实表:这种事实表不保存全部的数据, 只保存固定时间间隔的数据。例如每天或每月的销售额,或每月的账户余额等。
- 累积快照事实表:累积快照用于跟踪事实表的变化。例如,数据仓库可能需要累积或存储销售订单从下订单的时间开始,到订单中的商品被打包、运输和到达的各阶段的时间点数据来跟踪订单的生命周期进展情况。当这个过程进行时,随着以上各种时间的出现,事实表里的记录也要不断更新。
五、其他
- 通过存储格式减少存储空间。:Snappy(有效平衡压缩率和解压缩速度)、Gzip(最高压缩率的归档数据压缩)