博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据仓库分层
阅读量:4206 次
发布时间:2019-05-26

本文共 3386 字,大约阅读时间需要 11 分钟。

目录

  在做像pv、cv类型的分析,往往借助于一张大宽表和几张维度表,所有的统计分析都基于这张大宽表与维度表。在这种简单的应用场景,这种设计没有问题且简单明了,但是如果业务场景复杂,数据种类多,维度多,那么数据仓库的设计就尤为重要,结构清晰明了的数据仓库设计将方便对问题数据进行排查。数据分层的好处:

 清晰数据结构、减少重复开发、数据血缘追踪、把复杂问题简单化、屏蔽原始数据的异常、屏蔽业务的影响,不必改一次业务就需要重新接入数据

数据仓库可分为三层:ODS层、DW层、APP层。

在这里插入图片描述

数据运营层:ODS(Operational Data Store)

  “面向主题的”数据运营层,也叫ODS层,是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,即 ETL 之后,装入本层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。

  一般来讲,为了考虑后续可能需要追溯数据问题,因此对于这一层就不建议做过多的数据清洗工作,原封不动地接入原始数据即可,至于数据的去噪、去重、异常值处理等过程可以放在后面的DWD层来做。

数据仓库层:DW(Data Warehouse)

  数据仓库层从 ODS 层中获得的数据按照主题建立各种数据模型。DW层又细分为 DWD(Data Warehouse Detail)层、DWM(Data WareHouse Middle)层和DWS(Data WareHouse Servce)层。

  1. 数据明细层:DWD(Data Warehouse Detail)

      该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。另外,在该层也会做一部分的数据聚合,将相同主题的数据汇集到一张表中,提高数据的可用性。

  2. 数据中间层:DWM(Data WareHouse Middle)

      该层会在DWD层的数据基础上,对数据做轻度的聚合操作,生成一系列的中间表,提升公共指标的复用性,减少重复加工。直观来讲,就是对通用的核心维度进行聚合操作,算出相应的统计指标。

  3. 数据服务层:DWS(Data WareHouse Servce)

      又称数据集市或宽表。按照业务划分,如流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。一般来讲,该层的数据表会相对比较少,一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。
      在实际计算中,如果直接从DWD或者ODS计算出宽表的统计指标,会存在计算量太大并且维度太少的问题,因此一般的做法是,在DWM层先计算出多个小的中间表,然后再拼接成一张DWS的宽表。由于宽和窄的界限不易界定,也可以去掉DWM这一层,只留DWS层,将所有的数据在放在DWS亦可。

数据集市层:DM

  为数据集市层,这层数据是面向主题来组织数据的,通常是星形或雪花结构的数据。经常说的报表数据,一般就放在这里。以某个业务应用为出发点而建设的局部DW,DM只关心自己需要的数据,不会全盘考虑企业整体的数据架构和应用。每个应用有自己的DM。也就是说,面向实际的数据需求,以DWD或者DWS层的数据为基础,组成的各种统计报表。

数据应用层:APP(ADS)

  为应用层,这层数据是完全为了满足具体的分析需求而构建的数据,也是星形或雪花结构的数据。从数据粒度来说是高度汇总的数据。

在这里插入图片描述

事实表与维度表

DW维度表

  维度建模,数据拆分成事实表和维度表。
  维度表(dimension)表示对分析主题所属类型的描述,信息比较固定,且数据量小,可以看作是用户来分析数据的窗口。每个维度表都包含单一的主键。维度表的主键可以作为与之关联的任何事实表的外键。维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。维度表示要对数据进行分析时所用的一个量,例如分析产品销售情况,可以按类别或按区域来分析. 这样的按…分析就构成一个维度。例如,包含产品信息的维度表通常包含将产品分为食品、饮料、非消费品等若干类的层次结构,这些产品中的每一类进一步多次细分,直到各产品达到最低级别。在维度表中,每个表都包含独立于其他维度表的事实特性,例如,客户维度表包含有关客户的数据。维度表中的列字段可以将信息分为不同层次的结构级。
  事实表(fact table)是数据聚合后依据某个维度生成的结果表
  每个数据仓库都包含一个或者多个事实数据表。事实数据表的主要特点是包含数字数据(事实),并且这些数字信息可以汇总,以提供有关单位作为历史的数据,每个事实数据表包含一个由多个部分组成的索引,该索引包含作为外键的相关性纬度表的主键,而维度表包含事实记录的特性。事实数据表不应该包含描述性的信息,也不应该包含除数字度量字段及使事实与纬度表中对应项的相关索引字段之外的任何数据。事实表的记录数会不断增加,表规模迅速增长。从最低的粒度级别来看,事实表行对应一个度量事件。
  包含在事实数据表中的“度量值”有两种:一种是可以累计的度量值,另一种是非累计的度量值。用户可以通过累计度量值获得汇总信息,例如,可以汇总具体时间段内一组商店的特定商品的销售情况。非累计的度量值也可以用于事实数据表,例如,在一座大厦的不同位置测量温度时,如果将大厦中所有不同位置的温度累加是没有意义的,但是求平均值是有意义的。
  一般来说,一个事实数据表都要和一个或多个维度表相关联,用户在利用事实数据表创建多维数据集时,可以使用一个或多个维度表。
结论: 1、事实表就是你要关注的内容
    2、维度表就是你观察该事务的角度,是从哪个角度去观察这个内容的
例如,某地区商品的销量,是从地区这个角度观察商品销量的。事实表就是销量表,维度表就是地区表。

维度表的作用:

1.缩小了事实表的大小
2.便于维度的管理和维护,增加,删除和修改维度的属性,不必对事实表的大量记录进行改动
3.维度表可以为多个事实表重用,以减少重复工作

ODS与DW的区别

【1】数据的当前性

  ODS包括的是当前或接近当前的数据,ODS反映的是当前业务条件的状态,ODS的设计与用户或业务的需要是有关联的,而DW则是更多的反映业务条件的历史数据。
【2】数据的更新或加载
  ODS中的数据是可以进行修改的,而DW中的数据一般是不进行更新的。ODS的更新是根据业务的需要进行操作的,而没有必要立即更新,因此它需要一种实时或近实时的更新机制。另外,DW中的数据是按照正常的或预先指定的时间进行数据的收集和加载的。
【3】数据的汇总性
  ODS主要是包括一些细节数据,但是由于性能的需要,可能还包括一些汇总数据,如果包括汇总数据,可能很难保证数据的当前性和准确性。ODS中的汇总数据生命周期比较短,所以可称作为动态汇总数据,如果细节数据经过了修改,则汇总数据同样需要修改。而DW中的数据可称为静态的汇总数据。
【4】数据建模
  ODS是站在记录层面访问的角度而设计的,DW或DM则是站在结果集层面访问的角度而设计的。ODS支持快速的数据更新,DW作为一个整体是面向查询的。
【5】查询的事务
  ODS中的事务操作比较多,可能一天中会不断的执行相同的事务,而DW中事务的到达是可以预测的。
【6】用途
  ODS用于每一天的操作型决策,是一种短期的;DW可以获取一种长期的合作广泛的决策。ODS是策略型的,DW是战略型的。
【7】用户
  ODS主要用于策略型的用户,比如保险公司每天与客户交流的客服;而DW主要用于战略型的用户,比如公司的高层管理人员。
【8】数据量(主要区别之一)
  ODS只是包括当前数据,而DW存储的是每一个主题的历史快照;

  数据仓库的整理架构,各个系统的元数据通过ETL同步到操作性数据仓库ODS中,对ODS数据进行面向主题域建模形成DW(数据仓库),DM是针对某一个业务领域建立模型,具体用户(决策层)查看DM生成的报表。ODS层的数据不能作为报表,因为部门只关心自己业务的数据而不关心全盘的数据,而ODS层中存放的是业务系统的明细数据,因此报表应该用DM层数据而非ODS层数据。

在这里插入图片描述

转载地址:http://oyhli.baihongyu.com/

你可能感兴趣的文章
【一天一道LeetCode】#48. Rotate Image
查看>>
【一天一道LeetCode】#56. Merge Intervals
查看>>
【一天一道LeetCode】#57. Insert Interval
查看>>
【一天一道LeetCode】#58. Length of Last Word
查看>>
【一天一道LeetCode】#59. Spiral Matrix II
查看>>
【一天一道LeetCode】#30. Substring with Concatenation of All Words
查看>>
【一天一道LeetCode】#60. Permutation Sequence.
查看>>
【一天一道LeetCode】#113. Path Sum II
查看>>
【一天一道LeetCode】#114. Flatten Binary Tree to Linked List
查看>>
【unix网络编程第三版】阅读笔记(二):套接字编程简介
查看>>
【一天一道LeetCode】#115. Distinct Subsequences
查看>>
【一天一道LeetCode】#116. Populating Next Right Pointers in Each Node
查看>>
【一天一道LeetCode】#117. Populating Next Right Pointers in Each Node II
查看>>
【一天一道LeetCode】#118. Pascal's Triangle
查看>>
【一天一道LeetCode】#119. Pascal's Triangle II
查看>>
【unix网络编程第三版】阅读笔记(三):基本套接字编程
查看>>
同步与异步的区别
查看>>
IT行业--简历模板及就业秘籍
查看>>
JNI简介及实例
查看>>
DOM4J使用教程
查看>>