一.数据仓库介绍
- 什么是数据仓库
答:面对主体的,对数据进行统计分析,存储历史数据,对未来提供决策支持 - 数据仓库的最大特征
答:既不生产数据,也不消耗数据; - 数仓的四大特点
答:面向主体(分析什么什么就是主题)、集成性(数据的种类 来源比较多,需要将各个来源的数据全部集中在一起)、非易失性(存储的都是过去既定发生的数据,这些数据一般不会出现变更)、时变性(随着时间推移,原有分析方案无法满足分析要求,需要更新分析手段,以及数据也会进行新增操作) - ETL
答:数据抽取,数据转换,数据装载。
狭义上ETL:从ods层将数据抽取出来,对数据进行清洗处理,将数据加载到dw层过程;
广义上ETL:整个数仓全过程,包含从数据源到ODS,从ODS到DW,从DW到DA,从DA到业务。 - OLTP和OLAP区别
答:OLTP联机事务处理面向交易;OLAP:联机分析处理决策支持系统
- 数据仓库与数据集市的区别
数据仓库包含数据集市,数据集市是小型数据仓库
数据仓库针对的是企业整体分析数据的集合。数据集市是针对部门级别分析的数据集合。
数据仓库通常包含粒度较细的数据明细。数据集市则会在数据仓库的基础上进行数据聚合,这些聚合后的数据就会直接用于部门业务分析 - 应用系统:使用数仓完成数据分析数据查询数据报表等功能的系统。
二.维度分析基本介绍
- 维度:分析问题的角度。事务的特征。
- 指标:衡量事务发展的标准,也叫度量。常见度量值:绝对指标,相对指标
- 下钻和上卷:获取高级别的汇总信息过程叫上卷,获取低级别的明细信息的过程叫下钻
- 维度分析的基本介绍:分析问题的角度,当分析一个主题时,可以从不同的角度来分析,而这些角度就是维度
4.1定性维度:求每个各个情况,求每天每年。group by或窗口函数
4.2定量维度:主要指的是求某一个具体值得相关内容,或者某个范围的维度 where
4.3维度下钻和上卷:增加了细化维度;
三.数仓模型
- 数仓建模
数仓建模主要作用提供对数仓中表结构进行理论支持
1.1三范式建模:关系型数据库中,在创建一个表的时候,这个表应该有一个建的过程中,尽可能避免数据冗余存储问题。(范式越高表被拆分的越厉害)
1.2维度建模:应用在OLAP数据库中,在构建表时,以能够满足分析要求能够降低分析难度,即使出现数据冗余也不影响,表在构建的主键可以不存在。维度建模的核心是:事实表和维度表。
1.3 事实表:事实指分析的主题,事实表就是要分析的主体对应的表。一般都是通过事实表进行指标统计,在统计过程中需要结合各个维度,此时可能需要其他维度表参与。
1.4维度表:事实表中外键所对应的表
将既可以做事实表也可以做维度表的表当做事实表
1.5维度退化:将维度信息数据从维度表抛离出来,将这些信息冗余到事实表中,这个过程称为维度退化
- 数仓发展模型
2.1星型模型:只有一个分析的主体,也就只有一个事实表,在事实表周围围绕多个维度表,而且维度表与维度表之间没有任何联系(数仓发展初期)
2.2雪花模型::只有一个分析的主体,也就只有一个事实表,在事实表周围围绕多个维度表,而且维度表可以接着关联其他的维度表(数仓发展走歪了,不利于维护和加大了需求分析难度)
2.3星座模型:多个分析的主题,有了多个事实表,在事实表周围围绕多个维度表,维度表和维度表在条件符合的情况下是可以共享维度。(中后期)(维度表的范围和粒度都是一致的,我们可以认为两个维度表可以共享)
- 缓慢渐变维:为了记录数据历史变更数据
3.1 SCD1:最简单的记录方案,不维护历史变更数据,每次都是直接将原数据覆盖,仅适合于错误数据处理工作
3.2 SCD2(拉链表):在原有表增加两个字段(start_time,ennd_time) ,通过两个字段,来维护用户每一段变化的数据经历的周期,从而形成拉链数据 过程。(只要有一个字段发生变更,都需要对整条数据重新记录,冗余较高;实现比较简单,可以维护更多的历史版本数据)
3.3 SCD3(缓慢渐变类型3)只维护更少的历史记录(只使用于数据的存储空间不足,并且用户接受有限历史数据)
四.数仓分层介绍
- 分层本质是人为划分的,可以将某几个库或者某几个表划分在各个层次中,分层的主要哦目的:用任务分工利于后续维护工作。
- ODS(源数据层):对接数据源,用于将数据源中数据采集到ODS层,会和数据源保持相同粒度
- DW(数据仓库层):对数据进行统计分析操作,构建统一宽表统计结果数据,数据来源于ODS层
- DA(app层):存储分析的结果表,对DW层统计宽表,根据需求从宽表获取想要的数据