数据仓库之维度建模

 

1. 复制层(SSA,system-of-records-staging-area)
      SSA 直接复制源系统(比如从mysql中读取所有数据导入到hive中的同结构表中,不做处理)的数据,尽量保持业务数据的原貌;与源系统数据唯一不同的是,SSA 中的数据在源系统数据的基础上加入了时间戳的信息,形成了多个版本的历史数据信息。

2. 原子层(SOR,system-of-record)
     SOR 是基于模型开发的一套符合 3NF 范式规则的表结构,它存储了数据仓库内最细层次的数据,并按照不同的主题域对数据分类存储;比如高校数据统计服务平台根据目前部分需求将全校数据在 SOR 层中按人事、学生、教学、科研四大主题存储;SOR 是整个数据仓库的核心和基础,在设计过程中应具有足够的灵活性,以能应对添加更多的数据源、支持更多的分析需求,同时能够支持进一步的升级和更新.

3 .汇总层(SMA,summary-area)
    SMA 是 SOR和DM(集市层) 的中间过渡,由于 SOR 是高度规范化数据,此要完成一个查询需要大量的关联工作,同时DM 中的数据粒度往往要比 SOR 高很多,对要生DM 中的汇总数据需要进行大量的汇总工作,此,SMA 根据需求把 SOR 数据进行适度的反范(例如,设计宽表结构将人员信息、干部信息等多表的数据合并起来)和汇总(例如,一些常用的头汇总、机构汇总等);从而提高数据仓库查询性能。

4.集市层/展现层(DM, data mart)
    DM 保存的数据供用户直接访问的:可以将 DM 理解成最终用户接最终想要看的数据;DM 主要是各类粒度的事数据,通过提供不同粒度的数据,适应不同的数访问需求;高校数据统计服务平台 DM 中的数据

--------------------- 
作者:牛大财有大才 
来源:CSDN 
原文:https://blog.csdn.net/qq_26442553/article/details/79318165 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

  1. 如何分层
    • 结合Inmon和Kimball的集线器式和总线式的数据仓库的优点,分层为ODS【-MID】-DW-DM-OLAP/OLAM/app
    • ODS层是将OLTP数据通过ETL同步到数据仓库来作为数据仓库最基础的数据来源。在这个过程中,数据经过了一定的清洗,比如字段的统一,脏数据的去除等,但是数据的粒度是不会变化的。ODS层的数据可以只保留一定的时间。
    • MID中间层是采用Inmon集线器架构的方式,使用范式建模(贴源)的方法。这一层主要是做规范化的事情,比如应用库表非规范化,字段格式复杂(json格式)需做一些处理。这一层不是必须有的。也不会对外开放使用。范式建模保证了数据一致性、唯一性、正确性。
    • DW-DM层是采用Kimball的总线式的数据仓库架构,针对部门(比如财务部门)或者某一主题(比如商户、用户),通过维度建模(推荐星型模型),构建一致性维度,原子粒度的数据是DW层,按照实体或者主题经过一定的汇总,建设数据集市模型。数据集市可以为OLAP提供服务。
  2. 为什么要分层
    • 空间换时间。通过建设多层次的数据模型供用户使用,避免用户直接使用操作型数据,可以更高效的访问数据。
    • 把复杂问题简单化。讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
    • 便于处理业务的变化。随着业务的变化,只需要调整底层的数据,对应用层对业务的调整零感知.
  3. 分层的价值
    • 高效的数据组织形式【易维护
      面向主题的特性决定了数据仓库拥有业务数据库所无法拥有的高效的数据组织形式,更加完整的数据体系,清晰的数据分类和分层机制。因为所有数据在进入数据仓库之前都经过清洗和过滤,使原始数据不再杂乱无章,基于优化查询的组织形式,有效提高数据获取、统计和分析的效率。
    • 时间价值【高性能】
      数据仓库的构建将大大缩短获取信息的时间,数据仓库作为数据的集合,所有的信息都可以从数据仓库直接获取,数据仓库的最大优势在于一旦底层从各类数据源到数据仓库的ETL流程构建成型,那么每天就会有来自各方面的信息通过自动任务调度的形式流入数据仓库,从而使一切基于这些底层信息的数据获取的效率达到迅速提升。
      从应用来看,使用数据仓库可以大大提高数据的查询效率,尤其对于海量数据的关联查询和复杂查询,所以数据仓库有利于实现复杂的统计需求,提高数据统计的效率。
    • 集成价值【简单化】
      数据仓库是所有数据的集合,包括日志信息、数据库数据、文本数据、外部数据等都集成在数据仓库中,对于应用来说,实现各种不同数据的关联并使多维分析更加方便,为从多角度多层次地数据分析和决策制定提供的可能。
    • 历史数据【历史性】
      记录历史是数据仓库的特性之一,数据仓库能够还原历史时间点上的产品状态、用户状态、用户行为等,以便于能更好的回溯历史,分析历史,跟踪用户的历史行为,更好地比较历史和总结历史,同时根据历史预测未来。

https://www.cnblogs.com/benchen/p/6010265.html

 

缓慢变化维

Type 0:原样保留

维度属性值不会发生变化。适合属性标记为“原型”的情况,也适用于日期维度的大多数属性。
如:客户原始的信用卡积分或持久型标识符

Type 1:重写覆盖

维度属性值总反映最新情况。破坏了历史情况。虽然易于实现,但是要小心,因为受此影响的聚集事实表和OLAP多维数据库将会重复计算。

Type 2:增加新行

需要代理键,因为自然键可能会重复,多行描述同一个key id。

Type 3:增加新属性

 

Type 4:增加微型维度

Type 5:增加微型维度及Type 1支架

Type 6:增加Type 1属性到Type 2维度

Type 7:双Type 1和Type 2维度

ref:
https://www.cnblogs.com/charisna/p/4673866.html
https://www.cnblogs.com/xqzt/p/4472005.html
https://www.jianshu.com/p/2dc837169789
 

ref:

https://www.jianshu.com/p/17baa9f96ca7
https://www.infoq.cn/article/2017%2F10%2FDimensional-Kimball-big-data-Had
https://zhuanlan.zhihu.com/p/32129701
https://blog.csdn.net/qq_26442553/article/details/79318165

你可能感兴趣的:(Hive)