数仓分层
来源
https://www.bilibili.com/video/BV1t54y1r7Mc?p=79
参考文章:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/122426579
数仓建模:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/122402191
所谓数仓建模:就是应该建哪些表,表与表之间的关系是怎样的,表里都应该有哪些字段
所谓分层,就是每一层放不同的表,比如ODS,DWD分别方不同的表
ODS(Operation Data Store)原始数据层
-
ODS层的数据来源
-
业务系统产生的原始数据,比如下单以后产生的订单,用户浏览页面形成的行为日志,爬虫等一系列数据源的数据
-
开发中几乎都不会直接从ODS层拿数据,因为这里有隐私数据;
-
ETL(Extract-Transform-Load)
将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程。
对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的。必须消除源数据中的不一致性
目的是将企业中的分散、凌乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。
-
主要的数据处理是:去空值、去极值(比方取款300亿)、去业务极值、部分数据脱敏、维度退化等即对业务数据传过来的表进行维度退化和降维(如:商品一级二级、省市县、年月日等)。
DWD(Data WareHouse detail)明细数据层
所谓这层的数据清洗(比如去除空值,去除脏数数据[手机号码、身份证号码长度不合法]以及数据脱敏)
维度退化:百度数仓建模
说白了这一层就是再对ODS层的数据再次进行整理,因为ODS层的数据可能会比较乱,包括日志的解析(日志在ODS是一个字符串)
这层会做维度建模,事实表(dwd_fact)、维度表(dwd_dim)两种
-
DWD层的数据来源
-
ODS层的数据到DWD层,需要对数据进行清洗做ETL操作(比如去除空值,去除脏数数据[手机号码、身份证号码长度不合法]以及数据脱敏)
-
维度退化:百度数仓建模
-
-
DWD层会做维度建模,事实表(dwd_fact)、维度表(dwd_dim)两种
-
小结
-
这一层就是再对ODS层的数据再次进行整理,因为ODS层的数据可能会比较乱,包括日志的解析(日志在ODS是一个字符串)
-
DWS(Data WareHouse Service)数据服务层
-
DWS会对以DWD的数据为基础,根据不同的指标进行轻度汇总,比如今天有多少活跃用户。。
DWT(Data WareHouse Topic)数据主题层
主题,比如用户,地区,说白了就是对象
-
这层是以DWS层的数据为基础,根据不同的主题进行汇总
-
按照一定的主题域进行组织,主题是一个抽象的概念,是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。每一个主题基本对应一个宏观的分析领域。
比如保险公司的数据,有养老保险、医疗保险、汽车保险;这个保险就是一个主题
-
比如:银行的数据仓库的主题:客户
ADS(Application Data store)数据应用层
为各种统计报表提供数据
azkaban
使用azkaban去调度每一层?百度下
数据仓库为什么要分层
-
把复杂问题简单化
-
将复杂的任务分解层多层来完成,每一层只处理简单的任务,方便定位问题
-
-
减少重复开发
-
规范数据分层,通过中间层数据,能够减少极大的重复计算,增加一次计算结果的复用性
-
-
隔离原始数据
-