数仓分层架构详解:ODS、DWD、DWS

一、ODS层(Operation Data Store)- 原始数据层

核心定位:

  • 数据仓库的"原始档案库"
  • 与业务系统数据保持1:1的镜像关系
  • 保持"贴源"特性,不做业务逻辑处理

核心功能:

  1. 数据缓冲:

    • 全量/增量同步业务系统数据
    • 保留历史变更记录(CDC)
    • 示例:MySQL Binlog日志、API接口原始数据
  2. 数据标准化:

    • 统一数据格式(如时间戳统一为UTC+8)
    • 基础清洗(去除乱码、控制字符)
    • 不改变原始数据结构
  3. 数据保留:

    • 通常保留30-180天(根据存储成本调整)
    • 支持数据重放和回溯

技术实现:

  • 存储格式:TextFile/Json/Avro(原始格式)
  • 分区策略:按日期分区(dt=20230101)
  • 工具:DataX、Flink CDC、Sqoop

二、DWD层(Data Warehouse Detail)- 明细数据层

核心定位:

  • 数据仓库的"标准化细节数据层"
  • 业务过程的数据建模层
  • 数据资产化的核心层

核心功能:

  1. 数据清洗:

    • 空值处理(填充/过滤)
    • 异常值处理(如年龄=200)
    • 数据脱敏(手机号、身份证)
  2. 维度退化:

    • 将维度表属性合并到事实表
    • 示例:订单表增加"用户等级"字段
  3. 数据标准化:

    • 统一枚举值(如"男"统一为"M")
    • 单位统一(金额统一为元)
    • 代码标准化(地区代码统一为国标)
  4. 业务建模:

    • 星型模型构建
    • 拉链表处理(缓慢变化维)
    • 分桶表优化(大表Join)

技术实现:

  • 存储格式:Parquet/ORC(列存)
  • 分区策略:按日期+业务线分区
  • 工具:Spark SQL、Flink SQL、Hive SQL

三、DWS层(Data Warehouse Summary)- 汇总数据层

核心定位:

  • 数据仓库的"业务指标计算层"
  • 数据服务的核心支撑层
  • 数据价值的主要输出层

核心功能:

  1. 指标计算:

    • 原子指标(GMV、UV)
    • 派生指标(日活率、复购率)
    • 衍生指标(同比、环比)
  2. 数据聚合:

    • 按时间维度(日/周/月)
    • 按业务维度(品类/区域/渠道)
    • 按用户维度(新老客/会员等级)
  3. 宽表构建:

    • 多表关联(订单+用户+商品)
    • 预计算(TopN、漏斗分析)
    • 数据压缩(减少重复计算)
  4. 数据服务化:

    • 支持OLAP查询
    • 支持API接口
    • 支持自助分析

技术实现:

  • 存储格式:Druid/Kylin(OLAP)
  • 分区策略:按时间粒度分区
  • 工具:Presto、ClickHouse、Kylin

四、各层对比分析

维度 ODS层 DWD层 DWS层
数据粒度 最细粒度(原始记录) 明细粒度(业务事件) 聚合粒度(指标)
数据量 最大(TB级) 中等(百亿级) 较小(亿级)
更新频率 实时/准实时(分钟级) 批处理(小时级) 批处理(天级)
数据延迟 1-5分钟 1-2小时 1天
数据质量 原始质量(可能含脏数据) 清洗后(高质量) 业务可用(高价值)
使用对象 数据工程师 数据分析师 业务人员
典型表 ods_order_raw dwd_order_detail dws_user_daily

五、扩展说明

  1. ADS层(Application Data Store):

    • 应用数据层(报表/看板)
    • 数据量最小(千万级)
    • 更新频率最高(分钟级)
  2. DIM层(Dimension):

    • 维度数据层(用户/商品/地区)
    • 通常与DWD层并行存在
    • 数据量较小(百万级)
  3. 数据流动:

    复制代码
    业务系统 → ODS → DWD → DWS → ADS
    ↑           ↑        ↑       ↑
    CDC      数据清洗  指标计算  数据服务
  4. 设计原则:

    • ODS层:保持原始性,不丢失信息
    • DWD层:保持灵活性,支持多种业务需求
    • DWS层:保持稳定性,支持快速查询
  5. 最佳实践:

    • ODS层保留至少30天数据
    • DWD层建立数据质量监控
    • DWS层建立指标口径文档
    • 各层建立数据血缘关系
相关推荐
Data analyse4562 分钟前
rrweb回放事件资源加载顺序重放校验
前端·人工智能·算法·机器学习·数据分析
运维小文24 分钟前
apache nifi 2.90部署+运维手册
大数据·运维·数据分析·apache·nifi
言乐635 分钟前
Python于LOLM针对伊泽瑞尔的数据分析
开发语言·python·机器学习·数据分析·pandas
CNSSIRD数据库43 分钟前
中国省地县乡四级行政建制及区划代码-2025年版
大数据·数据库·数据分析·论文笔记
Data analyse4561 小时前
用户路径SQL按会话起止时间聚合的方法
大数据·服务器·前端·数据库·人工智能·sql·数据分析
省钱兄--zs2 小时前
无人自助拼豆系统架构设计与功能实现落地部署全流程实战指南
java·数据仓库·spring boot·系统架构·需求分析
棣廷3 小时前
初识Hive(1)
数据仓库·hive·hadoop
小飞象—木兮3 小时前
经营分析核心思路:经营分析的六层执行框架、底层原则、 全行业通用经营分析方法论
大数据·人工智能·矩阵·数据分析·用户运营
星夜离尘563 小时前
MATLAB 清洗 CSV 采样日志:重复时间戳、无效行、分组统计与自动出图
开发语言·matlab·数据分析·数据清洗·csv
数脉3 小时前
让每一次提问都有据可答:我们的数据血缘平台 AI 助手功能预告
大数据·数据挖掘·数据分析