了解 Power BI 中的数据建模:连接、关系和模式解析
Source: Dev.to
请提供您希望翻译的正文内容,我将按照要求保留链接并进行简体中文翻译。
目录
什么是数据建模?
数据建模是将数据组织成结构化格式的过程,这些格式定义了表之间的关系。可以把它想象成设计蓝图:
- 它定义了数据之间的连接方式
- 它确保查询高效
- 它提升了数据准确性和报告性能
在 Power BI 中,数据建模在数据加载之后进行,并涉及:
- 创建关系
- 定义表结构
- 优化表之间的数据流动
Power BI 为您提供了两种强大的数据连接方式:
- Joins(在 Power Query 中) – 实际合并表
- Relationships(在 Model view 中) – 在不复制数据的情况下逻辑链接表
Source:
Power Query 中的 SQL 连接
连接在 Power Query 编辑器中用于合并表。以下是最重要的类型,并以 Customers ↔ Orders 数据集为例进行说明。

1. 内连接 (Inner Join)
- 结果: 仅返回两个表中都存在的记录。
- 示例: 只显示有下单记录的客户。
2. 左连接 (Left Outer Join)
- 结果: 返回左表的所有记录以及右表中匹配的记录。
- 示例: 列出每位客户,即使他们尚未下单(对留存分析很有用)。
3. 右连接 (Right Outer Join)
- 结果: 返回右表的所有记录以及左表中匹配的记录。
4. 完全外连接 (Full Outer Join)
- 结果: 返回两个表的所有记录(没有匹配的地方用
NULL填充)。 - 示例: 对来自两个不同系统的客户数据进行对账。
5. 左反连接 (Left Anti Join)
- 结果: 返回左表中没有在右表中匹配的行。
- 示例: “从未下单的客户”——非常适合精准营销。
6. 右反连接 (Right Anti Join)
- 结果: 返回右表中没有在左表中匹配的行。
- 示例: 缺少客户记录的订单(用于数据质量检查)。
在 Power BI 中进行连接的步骤
- 点击 Transform data → Power Query Editor。
- 选中一个表 → Home → Merge Queries。
- 选择第二个表并指定匹配列。
- 选择连接类型(Inner、Left Outer、Left Anti 等)。
- 点击 OK 并展开所需的列。
Source: …
Power BI 关系
与 SQL 连接不同,Power BI 通常使用 关系——在模型视图中创建的逻辑链接。它们使模型保持轻量且性能良好。
关系类型
| 基数 | 描述 |
|---|---|
| 1 : M(一对多) | 最常见(例如,一个客户 → 多个订单) |
| M : M(多对多) | 多条记录与多条记录相关;需要谨慎处理 |
| 1 : 1(一对一) | 较少见,通常用于拆分表 |
关键概念
- 基数 – 告诉 Power BI 表之间的关系方式(一对多、多对多)。
- 交叉过滤方向 – 控制过滤器的传播方式:
- 单向(推荐)
- 双向(请谨慎使用)
- 活动关系 vs. 非活动关系 –
- 活动:在可视化和 DAX 中自动使用。
- 非活动:需要使用
USERELATIONSHIP()DAX 函数来激活(在角色扮演维度中非常有用)。
在哪里创建关系
- 模型视图 – 拖放字段以在表之间建立关系。
- 管理关系 – 点击 管理关系 → 新建 并定义:
- 列
- 基数
- 交叉过滤方向

事实表 vs 维度表
良好的数据模型将数据划分为事实和维度。
事实表
- 包含可度量的数据(例如,销售额、收入)。
- 通常规模大且为事务性数据。
- 持有链接到维度表的外键。
维度表
- 提供描述性上下文(例如,客户名称、产品类别、日期、地区)。
- 规模较小且相对静态。
- 持有被事实表引用的主键。
黄金法则:
- 事实告诉你发生了什么。
- 维度告诉你谁、什么、何时、何地。
模式设计:星型、雪花型 与 扁平表
(此部分的内容可以在此添加——原始段落在完成前已结束。)
常见建模问题及解决方法
(此部分内容可在此添加。)
在 Power BI 中完成所有操作的地点
(此部分的内容可以在此添加。)
摘要与关键要点
(此部分的内容可在此添加。)
Fact 与 Dimension 表的可视化解释

数据模型
1. 星型模式 (推荐)
一个中心事实表连接到非规范化的维度表。
最佳适用场景: 大多数 Power BI 项目——提供出色的性能和简洁的 DAX。

Power BI 中建模基础:事实表
2. 雪花模式
维度表已规范化(拆分为多个相关表)。
使用场景: 大型企业环境或需要严格规范化时。

雪花模式结构
3. 平面表 (DLAT)
所有数据在单个表中。
使用场景: 非常小的数据集或快速原型(对大型项目不可扩展)。
角色扮演维度与常见问题
角色扮演维度出现于同一维度用于多个目的。
示例: 单个 Dim_Date 表用于订单日期、发货日期和交付日期。
解决方案: 创建多个关系(大多数设为非活动),并在 DAX 中使用 USERELATIONSHIP() 激活相应的关系。
常见建模问题
- 循环依赖
- 模糊关系(表之间存在多条路径)
- 多对多混淆
- 事实表过宽
修复措施
- 优先使用单向关系。
- 对多对多关系使用桥接表。
- 在 模型视图 中定期审查模型。
Power BI 步骤指南
Load Data
- 将数据集导入 Power BI。
Clean Data (Power Query)
- 删除重复项。
- 如有需要,合并表(连接)。
Create Relationships
- 使用 Model View。
- 定义基数和方向。
Optimize Schema
- 在可能的情况下使用星型模式。
Validate Model
- 测试筛选器和可视化,确保其行为符合预期。
最后思考
Data modeling is the foundation of every powerful Power BI report. Understanding joins, relationships, and schemas lets you build models that are:
- Accurate → 准确
- Scalable → 可扩展
- High‑performing → 高性能
As you grow in data analytics, mastering data modeling will set you apart—not just as a dashboard builder, but as someone who truly understands data.
- Start with a Star Schema. → 从 星型模式 开始。
- Know your SQL joins for data cleaning. → 熟悉 SQL 连接 用于数据清洗。
- Use relationships wisely for analysis. → 明智地使用关系进行分析。
- Keep your model simple and performant. → 保持模型 简洁 且 高效。
You now have a complete toolkit to build professional Power BI models. → 您现在拥有完整的工具箱,可构建专业的 Power BI 模型。
Happy modeling! → 建模愉快!