目录
——低成本、轻量级数据仓库设计解决方案
我们为何要进行数据仓库建模?
抛开教科书式的定义来说,数据仓库(开源的 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_ | _info | gdl_sales_info |
| DIM层 | dim_ | – | dim_customer |
| ADL层 | adl_ | – | adl_region_sum |
| UDL层 | udl_ | – | udl_nation_stats |
| 中间表 | tmp_ | – | tmp_merge_result |
| ODS层 | – | – | oms_orders (源系统同步) |
五、使用流程
- 业务调研 → 填写
业务过程Sheet - 模型设计 → 分别在
维度表/事实表定义表结构 - 指标整合 → 在
指标字典统一逻辑公式 - 评审迭代 → 更新
变更日志并标记版本 - 生成SQL → 根据Excel结构自动生成DDL脚本(可配合Python脚本)
六、局限性 & 替代方案
| 场景 | Excel 方案 | 专业工具推荐 |
|---|---|---|
| 复杂关系可视化 | 手动绘图(受限) | ERWin, Lucidchart |
| 自动化版本管理 | 手动记录变更 | Git + Data Vault |
| 元数据自动同步 | 不支持 | Apache Atlas |


七、自动化输出

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