数仓为什么要分层?
1.把复杂问题简单化 把复杂的任务分解成多层来完成,每一层只处理简单的任务,方便定位。
2.减少重复开发 规范数据分层,通过中间层数据,能够减少极大的重复计算,增加一次结果的重复性
3.隔离原始数据 不论是数据的异常还是数据的敏感性,使真实数据与统计数据解耦开。
数据仓库分层:
ODS层:原始数据层,存放原始数据,直接加载原始日志,数据保持原貌不做处理。
DWD层:对ODS层数据进行清洗(去空值,脏数据,超过极限范围的数据),维度退化(小表和成大表),脱敏(手机号中加入****)等
DWS层:以DWD为基础,按天进行轻度汇总。需要按照主题建模,主题就是分析问题的一个角度,圈定了一个分析的范围,计算出这个主题的各种指标,而我们的指标只要是汇总,在dws里面我们只汇总了过去一天的数据,得到以天为粒度的指标。
DWT层:以DWS为基础,按主题进行汇总。实际工作中,需要算某个app,过去1天,过去一周,过去一个月,过去一个季度,过去一年上线以来的新增用户。
ADS层:给领导,给产品经理上交的统计结果。直接通过DWS和DWT很快获得
数据仓库粒度理解:
确定表的最大值和最小值,表的细化程度越高,粒度越小;细化程度越低,粒度越大
数据集市和数据仓库的概念:
数据集市是一种微型的数据仓库,它通常有更少的数据,更少的主题领域,以及更少的历史数据,因此是部门级的,一般来说只能为某个局部范围内的管理人员服务。
数据仓库:是企业级的,能为整个企业各个部门的运行提供决策支持手段。
命名规范:
表命名:层名_表名,
临时表:***_tmp(为得到一些结果,临时数据随时删除,一般建的内部表)
用户行为表:以log为后缀,如果不加就是db
脚本命名:驼峰命名(AaBb),蛇形命名(aa_bb)
范式:
理解为设计一张数据表的表结构,符合的标准级别,规范和要求
范式的优点:关系型数据库设计时,遵守一定的规范要求,目的在于降低数据的冗余。数据一致性,方便增删数据
缺点;缺点就是要多次join,只需要对两条数据进行join,不用对两个整表,数据量比较小,影响不大。
分类:第一范式,第二范式,第三范式,第四第五范式
函数依赖:
完全函数依赖:分数完全依赖于学号,课程
部分函数依赖:姓名部分依赖学号,课程
传递函数依赖:学号退出系名,系名推出系主任,反过来退不出来;
三范式区分:
第一范式:属性不可分割,原子性
第二范式:不存在“部分函数依赖”
第三范式:不能存在传递函数依赖
关系建模和维度建模:
数据处理大致分为:联机事务处理(OLTP),联机分析处理((OLAP)
OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果
区别:
对比属性 |
OLTP |
OLAP |