数据仓库的分层

📅 2026/7/22 8:23:25 👁️ 阅读次数 📝 编程学习
数据仓库的分层

整体思路:原始数据→洗干净→按主题整理→按维度汇总→面向业务做宽表

第一层:ODS(贴源层)

全称:Operational Data Store

干什么:将源数据存到数仓里,几乎不改动,最多添加日期分区方便按天查。

什么时候用:数据出了问题想回溯原始记录时。

第二层:DWD(明细层/整合层)

全称:Data Warehouse Detail

干什么:ODS数据做清洗+标准化+主题整合。这是数仓最核心的一层。

具体做了什么事:去重、字段统一、空值处理、多源合并、关联建立

这一层做完的标志:数据干净、编码统一、表与表之间能关联,业务方可以直接用。

第三层:DWS(汇总层)

全称:Data Warehouse Summary

干什么:DWD明细数据按常用维度做轻度聚合。提前算好,报表直接查,不用每次从几亿行明细重算。

什么时候用它:写日报、周报、月度分析时,从DWS取不用写复杂聚合。

第四层:ADS(应用层/数据集市)

全称:Application Data Service

干什么:面向具体业务场景的宽表,直接给报表工具、BI看板、数据接口用。

这一层特点:字段多、表宽、面向特定人群,市场部一张表、财务部一张表,互不干扰。

问题1:为什么不能从ODS直接取数?

答案:脏、乱、格式不统一、多源不关联

问题2:为什么不从DWD直接做报表?

答案:太慢,每次从几亿条明细算

问题3:为什么还要单独做ADS?

答案:DWS是通用的,市场部和财务部需求不同,各做各的ADS互不干扰

补充:什么是宽表?

宽表:把多张表里有关联的字段横向拼成一张大表。本来分散在用户表、订单表、产品表的信息,全部摊在一行里。

eg:假设要分析“张三昨天用手机号13800138000花了多少钱”。

窄表(DWD层的存法,多张表各管各的)

用户表、手机号表、账单表

三张表,查一次问题要JOIN两次

好处:省存储、不改结构。

宽表(ADS层的存法,一张表全有)

一张表,字段横向铺开,查任何东西不用JOIN,直接SELECT...WHERE。

好处:查的快、不用连表——代价是字段多、有冗余(每个字段值在每行都存一遍)。