数仓分层和维度建模及表的简述
数仓分层
1.ODS层
原始数据层,存放原始数据,直接加载原始日志、数据,数据保持原貌不做处理,起到备份数据的作用。数据采用LZO压缩,并创建索引减少磁盘存储空间(切片)。创建分区表,防止后续全表扫描。可以通过创建外部表供多人使用,内部表(仅供自己使用)
2.DWD层
明细数据层,对ODS层数据进行清洗(去空值,脏数据,超过极限范围的数据)。负责准备数据工作,本层需要构建维度模型,使维度退化,此操作可以减少后续大量join。多使用parquet列式存储
3.DWS层
服务数据层,进行轻度汇总
4.ADS层
数据应用层,为各种统计报表提供数据
数仓分层优点
- 复杂问题简单化
把复杂任务分成成多个步骤完成,每一层只处理单一的步骤,比较简单、并且方便定位问题 - 减少重复开发
规范数据分层,通过的中间层数据,能够减少极大的重复计算,增加一次计算结果的重复性 - 隔离原始数据
不论是数据的异常还是数据的敏感性,使业务数据与统计数据解耦开
维度建模
1.选择业务过程
选择我们需要实现的主题业务,比如下单业务,支付业务,退款业务,物流 业务,一条业务线对应一张事实表。
2.声明粒度
数据粒度指数据仓库的数据中保存数据的细化程度或综合程度的级别
声明粒度意味着精确定义事实表中的一行数据表示什么,应该尽可能选择最小粒度,以 此来应各种各样的需求。
3.确定维度
维度的主要作用是描述业务是事实,主要表示的是“谁,何处,何时”。维度退化
4.确定事实
此处的“事实”一词,指的是业务中的度量值,如访问次数、等待时间等。
数仓中表的选择
一、实体表
故名思意,就是业务中存在的现实对象,表中存在的每一条数据都是客观存在的数据
二、维度表
又称维表、码表,可以看作对某类事务粒度的抽离及细化,也是对业务过程的上下文描述,主要包含代理键、文本信息和离散的数字。是进入事实表的入口,多样的维度表可以减少数据冗余(给与对事物表的分析切割能力)。例如一张订单状态维度表和一张时间表就可以让事实表中的字段减少,细化粒度(业务状态,时间)大幅提升存储和查询效率。就结构来讲与事实表相反,行少列多。如果属性值是离散的,用于过滤和标记的,就放到维度表里,如果是属性值是连续取值,可用于计算的,就放到事实表中。
维度表类型:缓慢变化维、日期维、角色维、杂项维、支架维、多值维度桥接维
三、事实表
事实表存储了从业务活动或事件提炼处理啊的性能度量,主要包含维度表的外键和连续比那花的可加性数值或半可加事实。事务表产生于业务过程而不是业务过程的描述信息。一般是行多列少,占据数仓近九成的空间。
事物表的粒度确定了该表的主键,且事实表的所有度量值必须具有有相同的粒度.
事实表按类型分为以下几种:
1.事务事实表
面向事务,每一行对应一个事物,被称为“原子事实表”是最细粒度的事实表。事务事实表中的数据中在事务事件发生后产生,数据的粒度通常是每个事务一条记录。一旦事务被提交,事务表数据被插入,数据就不再进行更改,更新方式为增量更新。
2.周期快照事实表
按照良好的时间周期间隔(每天,每周,每月)来捕捉业务活动的执行情况,一旦装入事实表就不会再去更新,它是事务事实表的补充,而非替代。典型的例子如销售日快照表、库存日快照表等。周期快照事实表的粒度是每个时间段一条记录,通常比事务事实表的粒度要粗,是在事务事实表之上建立的聚集表。周期快照事实表的维度个数比事务事实表要少,但是记录的事实要比事务事实表多。
3.累积快照事实表
它用于描述业务过程中某个不确定时间跨度里的活动,它随着业务活动的发生会不断的更新。累积快照事实表和周期快照事实表有些相似之处,它们存储的都是事务数据的快照信息。但是它们之间也有着很大的不同,周期快照事实表记录的确定的周期的数据,而累积快照事实表记录的不确定的周期的数据。
累积快照事实表代表的是完全覆盖一个事务或产品的生命周期的时间跨度,它通常具有多个日期字段,用来记录整个生命周期中的关键时间点。另外,它还会有一个用于指示最后更新日期的附加日期字段。由于事实表中许多日期在首次加载时是不知道的,所以必须使用代理关键字来处理未定义的日期,而且这类事实表在数据加载完后,是可以对它进行更新的,来补充随后知道的日期信息

浙公网安备 33010602011771号