当前位置: 首页 > ds >正文

数据仓库维度建模详细过程

数据仓库的维度建模(Dimensional Modeling)是一种以业务用户理解为核心的设计方法,通过维度表事实表组织数据,支持高效查询和分析。其核心目标是简化复杂业务逻辑,提升查询性能。以下是维度建模的详细过程:


一、维度建模的核心概念

  1. 维度表(Dimension Table)

    • 描述业务实体的属性(如时间、产品、客户、地理位置)。
    • 例如:时间维度表包含年、季度、月、日等字段。
  2. 事实表(Fact Table)

    • 存储业务过程的度量值(如销售额、订单数量)。
    • 例如:销售事实表包含销售金额、销售量,并关联多个维度表的外键。

二、维度建模的步骤

1. 选择业务过程(Business Process)
  • 目标:明确需要分析的业务流程(如销售、订单、库存)。
  • 输入:与业务团队沟通,识别关键业务流程和分析需求。
  • 示例:分析电商平台的“订单处理”过程。
2. 声明粒度(Declare Grain)
  • 目标:定义事实表中每一行数据的细节层级。
  • 原则:选择最细粒度的数据(如订单中的每个商品项而非整个订单)。
  • 示例:订单事实表的粒度是“每个订单项的商品销售记录”。
3. 确定维度(Identify Dimensions)
  • 目标:确定描述业务过程的维度,覆盖所有分析视角。
  • 常见维度:时间、产品、客户、渠道、地理位置等。
  • 示例:订单事实表的维度可能包括 时间维度产品维度客户维度店铺维度
4. 确定事实(Identify Facts)
  • 目标:确定业务过程的度量值(数值型字段)。
  • 类型
    • 可加事实:如销售额、数量(可跨维度求和)。
    • 半可加事实:如库存量(不可跨时间求和)。
    • 不可加事实:如比率(需计算后分析)。
  • 示例:订单事实表的度量包括 销售额折扣金额商品数量
5. 构建维度模型(Build Schema)
  • 星型模型(Star Schema)

    • 事实表居中,直接关联所有维度表(无规范化)。
    • 优点:查询简单、性能高。
    • 缺点:可能存在冗余数据。
  • 雪花模型(Snowflake Schema)

    • 维度表进一步拆分为子维度表(规范化设计)。
    • 优点:减少冗余。
    • 缺点:查询复杂度高。
      Snowflake Schema

三、关键设计要点

  1. 缓慢变化维(Slowly Changing Dimensions, SCD)

    • 问题:维度属性随时间变化(如客户地址变更)。
    • 处理方式
      • Type 1:直接覆盖旧值(不保留历史)。
      • Type 2:新增记录,保留历史(常用)。
      • Type 3:新增字段记录新旧值(有限历史)。
  2. 退化维度(Degenerate Dimension)

    • 将事务的唯一标识(如订单号)直接存储在事实表中,无需单独维度表。
  3. 一致性维度(Conformed Dimensions)

    • 跨不同事实表共享同一维度(如时间维度),确保分析一致性。

四、应用场景

  1. 报表分析:如按时间、地区统计销售额。
  2. 历史数据分析:追踪客户行为变化。
  3. OLAP(联机分析处理):支持多维度的快速钻取、切片和切块。

五、示例:电商销售维度建模

1. 业务过程
  • 分析用户在电商平台下单的销售行为。
2. 粒度
  • 每个订单项的商品销售记录(即一条订单可能对应多条事实记录)。
3. 维度表设计
  • 时间维度:年、季度、月、日、小时。
  • 产品维度:产品ID、名称、类别、价格。
  • 客户维度:客户ID、姓名、地区、会员等级。
  • 店铺维度:店铺ID、名称、所在城市。
4. 事实表设计
  • 订单事实表
    CREATE TABLE fact_order (order_item_id INT PRIMARY KEY,product_key INT,       -- 关联产品维度customer_key INT,      -- 关联客户维度time_key INT,          -- 关联时间维度store_key INT,         -- 关联店铺维度sales_amount DECIMAL,  -- 销售额quantity INT,          -- 销售数量discount DECIMAL       -- 折扣金额
    );
    

六、注意事项

  1. 数据一致性:确保维度表在不同业务过程中保持一致。
  2. 性能优化
    • 为常用查询字段(如时间、产品类别)建立索引。
    • 预聚合高频查询指标(如每日销售额汇总)。
  3. 可扩展性:预留扩展字段以适应未来业务变化。

总结

维度建模通过事实表维度表的清晰结构,将复杂业务转化为直观的分析模型,是数据仓库设计的核心方法。其核心优势在于:

  • 用户友好:业务人员易于理解。
  • 高性能:减少多表关联,提升查询速度。
  • 灵活性:支持多维分析。

但需注意避免过度规范化(如雪花模型)导致的性能问题,同时合理处理缓慢变化维。

http://www.xdnf.cn/news/9100.html

相关文章:

  • 频繁报FTPResponse 421 received.Server closed connection
  • 1. 数据结构
  • 《软件工程》第 8 章 - 人机交互设计
  • QML设计登录界面
  • 基于FPGA的IIC多通道选择器(IIC Switch/Bridge)
  • Qt popup窗口半透明背景
  • mac for vscode集成的源代码管理 撤销和删除文件报错Permission denied
  • 【Macos】安装前端环境rust+node环境
  • 从界面设计到设备互联:基于Qt的ARM Linux自动化控制面板开发全解析
  • 【图像处理基石】什么是色彩模式?
  • 深度学习在建筑物提取中的应用综述
  • 【Qt开发】输入类控件
  • C语言初阶--结构体
  • 高性能排行榜系统架构实战
  • 解码词向量:让AI语言模型更透明
  • Leetcode 3563. Lexicographically Smallest String After Adjacent Removals
  • 基于Flask实现当当网书籍数据分析大屏
  • 清除谷歌浏览器中的“您的浏览器由所属组织/贵单位管理”
  • 《软件工程》第 2 章 -UML 与 RUP 统一过程
  • GitHub Page填写域名显示被占用
  • (转)Docker与K8S的区别
  • Java中Map集合的遍历方式详解
  • 【监控】PromQL 查询语言
  • vscode连接的linux服务器,上传项目至github
  • 开启MySQL的binlog日志
  • 每天掌握一个Linux命令 - ab(Apache Benchmark)
  • 进程IO之 进程
  • 组态王KingSCADA4.0连接1200PLC实战教程以及麒麟版问题说明
  • 【Spring Boot 实战】使用 HTTP 响应压缩优化接口性能
  • webtrees——在线协作家谱