数据仓库的分层

📅 2026/7/22 8:02:57
数据仓库的分层
整体思路原始数据→洗干净→按主题整理→按维度汇总→面向业务做宽表第一层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。好处查的快、不用连表——代价是字段多、有冗余每个字段值在每行都存一遍。