Power BI 中的模式和数据建模:适合初学者的分步指南
Source: Dev.to
要为您提供准确的翻译,请提供您希望翻译的完整文本(除代码块、URL 和源链接外)。您可以直接粘贴文章内容,我将按照要求保持原始格式、Markdown 语法和技术术语,仅翻译正文部分为简体中文。
介绍
数据建模是使用 Power BI 时 最重要的技能 之一。即使你的数据本身是正确的,糟糕的数据建模也会导致报表运行缓慢、数字错误以及视觉效果混乱。
本文将 从零开始 解释 Power BI 中的模式和数据建模工作原理。内容编写旨在让初学者 一步一步、点击点击 地构建出正确的模型。
你将学习到:
- Power BI 中数据建模的含义
- 事实表 vs. 维度表
- 星型模式和雪花模式
- 关系(多对一、基数、过滤方向)
- 为什么良好的建模能提升性能和准确性
- 如何在 Power BI 中创建干净的数据模型(一步一步)
Power BI 中的数据建模是什么?
数据建模 是以下过程:
- 组织表格
- 定义表格之间的关系
- 构建数据结构,使 Power BI 能高效分析
将数据建模想象成 设计房屋的基础——如果基础薄弱,所有上层建筑都会出现问题。
为什么良好的数据建模至关重要?
- 性能 – 设计良好的模型加载更快,对查询的响应更迅速
- 准确性 – 正确的关系确保计算和聚合结果准确
- 可扩展性 – 良好的模型能够处理不断增长的数据量而不出现性能下降
- 可维护性 – 简洁的模型更易于更新和排查问题
- 用户体验 – 快速、准确的报表有助于做出更好的业务决策
在 Power BI 中,数据建模主要在以下位置进行:
- 模型视图 – 关系图
- 数据视图 – 表结构
事实表和维度表
事实表
事实表是数据模型中的核心表,包含关于业务流程的定量数据(度量)。可以把它们看作“发生了什么”表。
事实示例
- 销售额
- 销售数量
- 利润
- 产量
事实表的特征
- 包含数值度量(销售额、数量、成本、利润)
- 通常有很多行(可以包含数百万记录)
- 包含指向维度表的外键
- 表示业务事件或交易
- 通常列较少(列宽窄),但行很多(行长)
示例:Sales_Fact 表
| Column | Description |
|---|---|
| SaleID | 主键 |
| DateKey | 指向日期维度的外键 |
| ProductKey | 指向产品维度的外键 |
| CustomerKey | 指向客户维度的外键 |
| StoreKey | 指向门店维度的外键 |
| Quantity | 度量(销售单位) |
| SalesAmount | 度量(收入) |
| Cost | 度量(销售成本) |
| Profit | 度量(销售额 – 成本) |

维度表
维度表存储描述性信息(上下文)。
维度示例
- 日期
- 产品
- 客户
- 位置
维度表的特征
- 包含文本或类别
- 小于事实表
- 用于过滤和分组
示例:Product_Dimension 表

什么是 Schema?
schema 是定义事实表和维度表如何连接的结构。
在 Power BI 中,最常见的两种 schema 是:
- Star schema ⭐ (recommended)
- Snowflake schema ❄️
Source: …
星型模式(强烈推荐)
什么是星型模式?
星型模式具有:
- 一个中心事实表
- 多个直接连接到它的维度表
它看起来像一个星形。

为什么星型模式是 Power BI 的最佳选择
- ✔ 性能更快
- ✔ DAX 公式更简洁
- ✔ 聚合更准确
- ✔ 易于理解
Power BI 的引擎(VertiPaq)针对星型模式进行了优化。
步骤指南:在 Power BI 中创建星型模式
步骤 1 – 加载数据
- 打开 Power BI Desktop。
- 点击 Home 选项卡 → Get Data。
- 选择你的数据源(Excel、CSV、SQL 等)。
- 点击 Load。
步骤 2 – 在数据视图中检查表
- 点击左侧面板的 Data 图标(表格)。
- 打开每个表并识别:
- 事实表(包含数值列)
- 维度表(包含描述性列)
步骤 3 – 转到模型视图
- 点击左侧的 Model 图标(图表)。
- 你会看到每个表以盒子的形式显示。
步骤 4 – 创建关系
- 从
Product_Dim拖动 ProductID。 - 将其放到
Sales_Fact中的 ProductID 上。 - 在 Create Relationship 窗口中设置:
- Cardinality(基数): One to Many (1:)*
- Cross filter direction(交叉过滤方向): Single
- 确保维度表位于 1 端。
- 点击 OK。
对其他维度(日期、客户、地点)重复相同的过程。
雪花模式
什么是雪花模式?
snowflake schema 是一种变体,其中维度表被规范化并连接到其他维度表,形成“雪花”模式。
为什么 … (原始来源中此部分被截断)
注意: 原始内容在 “Why S” 之后突然结束。应补充本节的其余部分,以完整讨论雪花模式。
Snowflake 在 Power BI 中不太理想
- ❌ 性能较慢
- ❌ 关系更复杂
- ❌ DAX 公式更难写
Power BI 在维度是 去规范化(扁平化)时表现更好。
最佳实践: 在可能的情况下将雪花模型转换为星型模型。
理解 Power BI 中的关系
基数
- 一对多 (1:*) – 最常见且推荐
- 多对多 – 除非绝对必要,否则避免
过滤方向
- 单向 – 推荐
- 双向 – 可能导致错误的总计
规则: 过滤应从 维度 → 事实 流向。
为什么良好的数据建模至关重要
性能
| 差的模型 | 好的模型 |
|---|---|
| • 可视化缓慢 | • 报告快速 |
| • 高内存使用 | • 计算高效 |
准确性
不良建模可能导致:
- 双重计数
- 总计错误
- 误导性报告
正确的建模可确保:
- 准确的聚合
- 可靠的业务决策
常见初学者错误(避免这些)
- ❌ 多个事实表直接相连
- ❌ 到处都是多对多关系
- ❌ 不必要的雪花模型
- ❌ 将事实表用作过滤器
✔ 始终以星型模式的思维进行设计。
结论
数据建模在 Power BI 中 不是可选的——它是必不可少的。
总结:
- 对数字使用 事实表
- 对描述使用 维度表
- 构建 星型模式
- 使用 一对多关系
- 将过滤方向保持为 单向
当您的数据模型干净整洁时,其他所有工作都会变得更容易——包括 DAX、可视化和性能。
