如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措。

数据仓库中就是存放了大量的规矩数据,非常清晰明了。

数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。只有将数据有序的组织和存储起来之后,数据才能得到高性能、低成本、高效率、高质量的使用。

高性能:良好的数据模型能够帮助我们快速查询所需要的数据。

低成本:良好的数据模型能减少重复计算,实现计算结果的复用,降低计算成本。(比如:查找A指标,这个时候你可以将一些中间的过程数据存储起来,便于下一次查询B指标的时候使用。)

高效率:良好的数据模型能极大的改善用户使用数据的体验,提高使用数据的效率。(数仓是一个公共的地方,至少别让同事骂你。)

高质量:良好的数据模型能改善数据统计口径的混乱,减少计算错误的可能性。(比如 张三说性别使用 男 女 ,李四自己搞了一个数仓,男使用man,女使用woman)

数据仓库建模概念

数据仓库建模是构建数据仓库的核心环节,旨在通过合理的结构设计整合异构数据,支持高效查询与分析。其目标包括消除冗余、确保数据一致性、优化查询性能,并为决策分析提供历史数据视角。

常见建模方法

星型模型
以事实表为中心,连接多个维度表,结构简单且查询高效。事实表存储业务度量(如销售额),维度表存储描述性属性(如时间、产品)。

雪花模型
维度表进一步规范化,形成层级关系,减少数据冗余,但查询复杂度较高。适用于维度属性复杂且需要节省存储的场景。

星座模型
多个事实表共享维度表,支持多业务过程分析。常见于大型数据仓库,需平衡复杂性与灵活性。

建模流程

需求分析
明确业务目标和分析场景,确定关键指标(如销售额、用户留存率)及维度(如时间、地区)。

逻辑建模
设计事实表与维度表的关联关系,定义主键、外键及字段粒度。例如:

-- 事实表示例
CREATE TABLE fact_sales (
    sale_id INT PRIMARY KEY,
    product_key INT FOREIGN KEY REFERENCES dim_product(product_key),
    date_key INT FOREIGN KEY REFERENCES dim_date(date_key),
    amount DECIMAL(10,2)
);

物理建模
根据数据库特性优化存储结构,如分区表、索引设计。考虑数据压缩、列式存储等技术提升性能。

关键原则

  • 粒度控制:事实表需明确最小业务粒度(如订单级或日汇总级)。
  • 缓慢变化维:处理维度属性随时间变化的问题,常用类型包括覆盖历史值、新增记录或拉链表。
  • 数据一致性:确保跨模型的统一性,如共享维度表或使用一致性维度。

工具与技术

  • ETL工具:Informatica、Talend用于数据抽取与加载。
  • 建模工具:Erwin、PowerDesigner辅助设计关系模型。
  • 云平台:Snowflake、BigQuery提供托管数仓服务,支持弹性扩展。

通过合理选择模型与方法,数据仓库建模能够为企业提供高效、可扩展的数据分析基础。

更多推荐