一、数据仓库设计目标
1、层级结构清晰,设计合理、且具备应对变化的条件,数据摆放合理,遵从软件工程设计理论高內聚、低耦合原则,尽量避免ods直接产出报表;逻辑库划分结构清晰(为了合理组织数据,可以适当建立一些逻辑数据库)。
2、数据一致性(通过总线架构构建一致性维度和一致性事实)的保证,避免信息孤岛产生;剔除过度冗余数据。
3、高数据质量:数据全、数据质量高、数据好用、可扩展、安全性、及时性。
4、应对业务、需求的变更,具备一定的稳健性。
5、严格按照业务过程建模,形成统一规范,将仓库迭代过程自动平滑进行下去。
实施基本原则:
1、高內聚、低耦合。
2、核心模型与扩展模型分离,复杂计算数据和静态数据分离,变化数据与不变数据分离。
3、通用指标计算下沉及单一。
4、数据可回滚。
5、一致性。
6、命名清晰、易于理解。
二、模型设计核心步骤
1、业务调研
首先需要理解的一点,数据模型设计合理一定是基于业务进行设计,而非针对需求建模,目标用于明确公司业务流程,进而在业务流程基础上细化业务过程。
2、数据探查
数据探查工作是对统计分析业务需求和数据需求中的数据实际情况进行检查和分析,判断当前的业务生产系统或数据仓库中是否能够满足需求中描述的数据范围和数据质量。
数据探查的主要目标是掌握现有业务流程、数据范围、数据源的数据结构、数据质量、现有的模型情况、现有的数据完整性等内容。通过对实际数据的分析检查,问题总结,同时依托业务探查结果,为后续的模型设计提供坚实的业务依据和数据依据。
3、模型设计
数据仓库中模型设计主要依托于业务调研,参考数据探查结果做合理取舍,最终将数据和业务绑定到一起,达到合理设计数据模型的目的。建模步骤如下:
1)通过业务调研,确定主要业务流程。
2)根据业务流程抽象原子业务过程,即选择业务过程,确定每个业务过程数据范围,根据数据分布合理调整或重构业务过程。
3)确定粒度,一般情况考虑最细粒度。
4)确定维度。
5)确定事实。
6)更新总线矩阵及映射文档,提供ETL实现。
三、数据架构
Kimball架构下建议三层架构设计:ODS,DW,APP
ODS一般缓冲落仓数据即可,可以设计到全量更新、分区增量、实时采集等多种方式,ODS最多可以划分为2层设计,一次缓冲区,一层持久层,保留历史。
DW一般分为两部分dim和fact:
dim数据设计需要考虑代理键、变化维度、层次维度、行为维度等技术问题。
fact一般分两部分,明细事实表和指标事实表,明细事实表模型设计尤其重要,其用于进行屏蔽业务变化的能力完全取决于模型设计优劣,设计思路参考《Kimabll数仓架构下如何确定模型落地哪些表》。
APP层设计过程不作重点关注。
命名规范建议参考阿里巴巴maxcompute文档,不赘述。