我们为何要进行数据仓库建模?

——低成本、轻量级数据仓库设计解决方案

我们为何要进行数据仓库建模?

抛开教科书式的定义来说,数据仓库(开源的 Hadoop 体系和阿里的 MaxCompute/ODPS 等)本质上也是数据库,只不过它主要用于:

1.从外部数据源引入和存储历史数据;

2.分析数据

因此相比事务性数据,数据仓库对数据集成和数据分析能力要求较高,相对应的功能更丰富和更强大。比如对复杂的 JSON 文本处理和分析, 可以通过集成 Java / Python/Shell 等语言自定义函数来实现更加灵活的处理。


什么时候我们需要开始使用数据仓库?

  • 需要分析的数据量较大(单批 GiB),此时事务性数据库分析性能堪忧,需要通过建立索引而且会分析查询会影响在线事务。而数仓一般采用列式存储,自带索引性能加成。
  • 分析查询不想影响在线事务
  • 需要记录历史数据
  • 需要对来自不同数据库、数据源的数据进行整合、关联分析和交叉探查。比如将存储在 SLS 的用户日志和 MySQL 的用户信息进行关联分析,通过用户的行为日志建立用户画像。
  • 批处理分析,需要定期批量查询分析数据并生成结果,比如各种 BI 报表。
  • 还有一种场景是数据库虽然不大,但是数据处理逻辑比较复杂,简单的数据库无法满足需求,必须有数据处理逻辑来对数据进行多次的清洗,和任务处理和管理,这种场景下虽然使用的底层可能还是传统的数据库,但是处理方法和逻辑也可以按照数据库建模的方式来规划,比如帆软的数据处理工具和数据报表系统

数据仓库系统一般采取下图架构来满足上述使用场景的:

  • 数据从不同的数据源引入到统一的存储
  • 在统一存储里进行分析计算
  • 计算得到分析结果给外部消费
  • 串联上述数据引入、处理和分析过程的程序就是 ETL(Extract-Transform-Load,抽取-转换-加载)任务

如程序语言设计大师 Niklaus Wirth 所说,程序=算法+数据结构。数据仓库这一大程序中关注最重要的2件事情就是:

  • 数据仓库的数据结构:如何设计数据的存储格式和数据之间的关联关系?也就是数据建模
  • 数据仓库的算法:如何编写和调度数据处理任务,完成数据的引入、处理分析算法。也就是ETL任务。

一、工具定位

  • 目标用户:数据工程师、数仓架构师、业务分析师
  • 核心功能
    ✅ 维度建模(星型/雪花模型设计)
    ✅ 表结构定义(字段、类型、约束)
    ✅ 血缘关系与指标管理
    ✅ 版本记录(通过Sheet历史管理)
  • 优势:无需专业软件,Excel 即可快速搭建可迭代的数仓原型。

二、Excel 文件结构说明

Sheet 名称功能描述示例字段
1. 业务过程定义核心业务过程过程名称、所属部门、关键指标
2. 维度表设计维度表结构表名、字段、数据类型、SCD类型、描述
3. 事实表设计事实表结构表名、关联维度、度量字段、粒度
4. 血缘关系图用单元格绘图展示表间关系手动绘制星型模型示意图
5. 指标字典统一管理业务指标指标名、计算逻辑、数据源、负责人
6. 变更日志记录模型修改历史日期、修改内容、修改人、版本号

三、分层设计与颜色标识体系

标签色数据层前缀说明
橙色UDL层udl_高度汇聚层
蓝色ADL层adl_轻度汇聚层
绿色DIM层dim_维度表
红色GDL层gdl_事实表(后缀 _info)
⚪ 灰色ODS层源系统同名表(无前缀)

四、表命名规范(全局强制)

数据层前缀后缀示例
GDL层gdl__infogdl_sales_info
DIM层dim_dim_customer
ADL层adl_adl_region_sum
UDL层udl_udl_nation_stats
中间表tmp_tmp_merge_result
ODS层oms_orders (源系统同步)

五、使用流程

  1. 业务调研 → 填写 业务过程 Sheet
  2. 模型设计 → 分别在 维度表/事实表 定义表结构
  3. 指标整合 → 在 指标字典 统一逻辑公式
  4. 评审迭代 → 更新 变更日志 并标记版本
  5. 生成SQL → 根据Excel结构自动生成DDL脚本(可配合Python脚本)

六、局限性 & 替代方案

场景Excel 方案专业工具推荐
复杂关系可视化手动绘图(受限)ERWinLucidchart
自动化版本管理手动记录变更Git + Data Vault
元数据自动同步不支持Apache Atlas

七、自动化输出

八、最佳实践建议

  1. 中小型项目可用 Excel 快速启动设计
  2. 当表数量 > 50 时,建议迁移至专业工具(如PowerDesigner)
  3. 结合 dbdiagram.io 将Excel数据转为ER图(导出CSV后导入)

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部