数仓分层设计架构
何为数仓(DW)
Data warehouse(可简写为DW或者DWH)数据仓库,是在数据库已经大量存在的情况下,它是一整套包括了etl、调度、建模在内的完整的理论体系。
数据仓库的方案建设的目的,是为前端查询和分析作为基础,主要应用于OLAP(on-line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。目前行业比较流行的有:AWS Redshift,Greenplum,Hive等。
数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好准备,这些准备包含:清洗、转义、分类、重组、合并、拆分、统计等
数据分层
在数据开发(尤其是数据仓库建设)中,经常提到的 “层” 是为了规范数据处理流程、提高数据复用性和维护性而划分的不同数据处理阶段。常见的分层包括 ODS、DWD、DWS、ADS 等,每层有明确的职责和数据处理目标。
1. ODS 层:操作数据存储层(Operational Data Store)
也称:贴源层
- 作用:作为数据的 “入口”,直接对接业务系统(如 ERP、CRM、日志系统等),存储原始数据。
- 特点:
- 保留数据原貌,基本不做清洗或只做简单处理(如去除明显错误、格式转换)。
- 数据结构通常与业务系统一致,方便追溯原始数据。
- 会存储历史快照(如按天增量 / 全量同步),支持数据回溯。
- 举例:从电商网站同步的原始订单日志、用户注册原始数据等。
2. DWD 层:数据明细层(Data Warehouse Detail)
- 作用:对 ODS 层数据进行清洗、转换和规范化,生成明细级数据。
- 特点:
- 处理包括:去重、脱敏(如隐藏手机号中间四位)、补全缺失值、修正错误数据等。
- 按业务主题拆分数据(如订单主题、用户主题、商品主题)。
- 关联基础维度(如用户 ID 关联用户基础信息),但不做聚合计算。
- 举例:清洗后的 “订单明细数据”(包含订单 ID、用户 ID、商品 ID、金额、时间等规范字段)。
3. DWS 层:数据汇总层(Data Warehouse Summary)
- 作用:对 DWD 层的明细数据进行聚合计算,生成汇总指标,供上层快速查询。
- 特点:
- 按业务需求做轻度汇总(如按天、按地区、按用户等级汇总)。
- 减少重复计算,提高查询效率(避免直接基于明细数据做复杂统计)。
- 数据粒度比 DWD 粗,比 ADS 细。
- 举例:“每日各地区订单量汇总”“用户月度消费总额” 等。
4. ADS 层:应用数据服务层(Application Data Service)
- 作用:直接面向业务场景,提供可直接使用的指标数据,供前端应用(如 BI 报表、业务系统)调用。
- 特点:
- 数据高度聚合,贴合具体业务需求(如 “首页 GMV 大盘数据”“营销活动效果指标”)。
- 可能包含复杂计算逻辑(如同比、环比、转化率等)。
- 数据格式通常更友好(如 JSON、二维表),方便应用直接读取。
- 举例:BI 报表中展示的 “近 30 天活跃用户数趋势”“各产品线销售额占比” 等。
其他常见分层:
- DIM 层:维度层(Dimension):存储静态或缓慢变化的维度数据(如用户信息、商品分类、地区信息等),供其他层关联使用,保证维度一致性。
- CDM 层:公共维度模型层:部分架构中会将 DWD 和 DWS 合并为 CDM,强调 “公共模型” 的复用性。
分层的意义:
- 隔离原始数据与业务数据:避免直接修改原始数据,便于问题追溯。
- 提高效率:汇总层减少重复计算,加速查询响应。
- 降低维护成本:每层职责明确,修改某一层数据不影响其他层。
简单说,整个流程类似 “原材料(ODS)→ 初加工(DWD)→ 深加工(DWS)→ 成品(ADS)”,层层递进满足不同场景的数据需求。