数仓设计基础

一、分层设计

有些设计将 DWD 和 DWS 合并为中间层,或在 DWS 之上再设"数据集市层",但分层思想一致:逐层抽象、复用、解耦

层级 名称 作用 数据特征
ODS 存储层 从db抽取过来的原样数据 无业务逻辑加工
DWD 明细层 清洗、去重、规范编码、维度退化,生成细粒度事实。(如空值替换、格式统一、外键完整性检查) 这一层一般建立数据质量监控(如唯一性、非空、值域) 原子粒度,经过轻度清洗,保留最细业务过程
DWS 汇总层 按主题或维度预聚合,形成宽表或轻度汇总 中度聚合,服务于常用报表或多维分析
ADS 应用层 面向具体应用(报表、大屏、OLAP)加工的个性化数据 高度聚合,特定业务服务

二、数据建模

1. Kimball 维度建模(推荐)

  • 核心 :由 事实表维度表 构成星型或雪花模型。

  • 事实表:记录业务过程的可加度量(如销售额、数量),外键关联维度表。

  • 维度表:描述业务环境的实体(时间、产品、客户、地域),包含文本属性。

  • 优点:查询性能好,易理解,适合 BI 分析。

  • 变体:星型模型(维度非规范化,单层)vs 雪花模型(维度规范化,多层)。星型更常用。

2. Inmon 范式建模(三范式)

  • 核心:先建企业级数据仓库(3NF),再根据需求构建数据集市。

  • 优点:数据冗余低,一致性高,适合复杂更新操作。

  • 缺点:分析查询需多表关联,性能较差。

三、设计流程

  1. 分析需求

    • 明确业务目标(KPI、分析维度、报表需求)。

    • 确定数据粒度(订单级、日/月汇总级)。

  2. 数据源分析

    • 盘点数据源(业务库、日志、文件等)。

    • 评估数据质量、更新频率、接口方式。

  3. 总线矩阵设计

    • 定义业务过程与公共维度(一致性维度)。

    • 确保不同事实表能通过共用维度进行关联(如日期、产品)。

  4. 声明粒度

    • 确定事实表中每一行代表的业务细节层次(如"一次订单支付"而非"一天订单汇总")。

    • 粒度越细,灵活性越高,但存储成本也越高

  5. 确定维度

    • 针对每个事实表,列出所有可能描述环境的维度(谁、何时、何地、何物)。

    • 为每个维度构建维度表,包含主键、属性和缓慢变化维(SCD)策略。

  6. 确定事实

    • 选择可度量的数值指标(可加、半可加、不可加)。

    • 设计事实表的外键(关联维度)和度量列。

  7. 物理设计与 ETL/ELT

    • 选择表分区(按日期)、索引(如位图索引)、压缩方式。

    • 设计 ETL/ELT 流程(从 ODS → DWD → DWS → ADS)

四、示例

电商相关业务:订单表、商品表、用户表、商品模板表、地域表等。

  • ODS:直接同步。

  • DWD

    事实表 订单表

    维度表 时间、地域、商品模板、用户

  • DWS:按天\用户\地域 等维度 经行数据处理

  • ADS: 高价值用户、地域购买力 等

五、技术选型

组件 可选技术
离线数仓 Hive、Spark SQL、Greenplum、MaxCompute
实时数仓 Flink + Kafka + Druid/ClickHouse/Hologre
MPP 数据库 ClickHouse、Doris、StarRocks、Redshift
数据湖 Iceberg、Hudi、Delta Lake(集成spark)、Paimon(集成flink)
ETL 工具 DataX、SeaTunnel、DolphinScheduler
可视化 superset、grafana
相关推荐
宽海智能仓储物流2 天前
航发自动化立体库异构系统改造:宽海智能30天联调技术全解析
运维·数据仓库·自动化
程序员小羊!4 天前
医疗数据仓库ODS层敏感信息防护实战:7大关键策略
数据仓库
欢迎来到祖安!4 天前
企业微信 API 接口能力介绍:支持消息收发、图片发送、表情互动、联系人管理等多场景应用
java·前端·数据仓库·spring cloud·企业微信
RestCloud5 天前
飞书多维表格落地新思路:ETL做数据导入,豆包做业务智能分析
数据仓库·飞书·etl·数据传输·api对接·豆包
AgentMaster6 天前
元数据、血缘、质量、安全四大模块能力拆解,数据治理方案对比:4 种技术路线深度评测
大数据·数据库·数据仓库·人工智能·原型模式
Gl�ria6 天前
Hadoop Hive 和 YARN 的关系
数据仓库·hive·hadoop
MC丶科7 天前
软考架构师90天冲刺|DAY44·Redis高级应用
数据库·数据仓库·redis·缓存·oracle·容器·规格说明书
lhldsg9 天前
幼儿托管系统开发实战指南:从需求分析到架构设计全流程解析
数据库·数据仓库·需求分析
fastjson_10 天前
Hive 自定义函数
数据仓库·hive·hadoop
lhldsg11 天前
智慧场馆解决方案软件开发实战:从需求分析到落地部署全流程
数据库·数据仓库·需求分析