






















数据模型是 Power BI 报表性能和分析能力的基础。当你的报表涉及多张表时,需要通过关系(Relationship)将它们连接起来,让 Power BI 知道如何在不同表之间进行跨表计算。
这一篇主要是相关概念的讲解。
没有建模时,每张表是独立存在的,无法进行跨表分析。例如:
建立关系后,Power BI 就能自动进行跨表关联查询,类似数据库的 JOIN 操作。
在 Power BI Desktop 左侧点击第三个图标(模型视图),可以可视化地看到所有表及其关系。
记录发生的业务事件,如销售订单、库存变动、用户访问日志。
特点:
示例:
| 订单ID | 产品ID | 客户ID | 销售日期 | 销售额 | 数量 |
|---|---|---|---|---|---|
| 1001 | P01 | C01 | 2024-01-01 | 5000 | 10 |
| 1002 | P02 | C02 | 2024-01-02 | 3000 | 6 |
描述业务实体的属性信息,用于分析和筛选。
特点:
示例:
产品维度表:
| 产品ID | 产品名称 | 产品类别 | 品牌 |
|---|---|---|---|
| P01 | 手机A | 电子产品 | 品牌甲 |
| P02 | 服装B | 服装 | 品牌乙 |
客户维度表:
| 客户ID | 客户名称 | 地区 | 客户等级 |
|---|---|---|---|
| C01 | 公司A | 北京 | VIP |
| C02 | 公司B | 上海 | 普通 |
一个关系由三个要素组成:
| 要素 | 说明 |
|---|---|
| 基数(Cardinality) | 一端是一还是多 |
| 交叉筛选方向(Cross-filter direction) | 关系如何影响筛选上下文 |
| 活动属性(Active) | 关系是否默认激活 |
| 类型 | 说明 | 场景 |
|---|---|---|
| 一对多(1:*) | 维度表1行 → 事实表多行 | 最常用!如1个产品对应多笔销售 |
| 多对一(*:1) | 与一对多相反,从事实表看向维度表 | 同上 |
| 一对一(1:1) | 两表行数一一对应 | 少见,如主表与扩展表 |
| *多对多(*: ) | 两表都是多端 | 需谨慎使用,可能导致性能问题 |
方法一:自动检测(推荐新手)
Power BI 通常会自动检测关系。
根据我的经验,如果数据库的建模足够好,命名足够规范,并且关系也在数据仓库里都定义好了,那么拿到Power BI里都会被自动识别出来,基本上不需要额外的建模工作。
方法二:手动创建
通常在没有数据仓库做支撑的场景,需要手动建模或者做调整。
| 方向 | 说明 | 场景 |
|---|---|---|
| 单向(Single) | 维度表 → 事实表 | 大多数情况使用单向即可 |
| 双向(Both) | 两表相互影响 | 需要双向联动筛选时使用 |
⚠️ 双向筛选会显著增加计算复杂度,可能影响报表性能,建议仅在必要时使用。
最推荐的建模方式,结构如下:
┌───▼───┐ ┌───▼───┐ ┌───▼───┐
│ 产品 │ │ 客户 │ │ 销售渠道│
│ 维度表│ │ 维度表│ │ 维度表 │
└───┬───┘ └───┬───┘ └───┬───┘
│ │ │
└──────────┼──────────┘
│
┌──────▼──────┐
│ 销售事实表 │
└─────────────┘
特点:
在星型模型的基础上,维度表进一步规范化,形成多层结构:
┌──────────────┐
│ 品牌维度表 │
└───────┬──────┘
│
┌─────▼─────┐
│ 产品维度表 │
└─────┬─────┘
│
┌──────▼──────┐
│ 销售事实表 │
└─────────────┘
特点:
💡 建议:在 Power BI 中,优先使用星型模型。如果维度表数据量很大,考虑用雪花模型来节省存储。
在模型视图中,右键点击字段 → "在报表视图中隐藏",可以将不需要在报表中直接使用的字段(如外键ID)隐藏起来,保持字段列表简洁。
隐藏后,字段仍然可以在 DAX 公式中使用,只是不显示在右侧字段面板中。
对于字段较多的表,可以通过显示文件夹进行分组:
Power BI 支持基于角色的行级安全,控制不同用户看到不同的数据。
示例:区域经理只能看到自己负责区域的数据
[地区] = USERPRINCIPALNAME()
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 关系线是虚线 | 关系不唯一或有问题 | 检查基数设置,确保一端唯一 |
| 图表显示空白 | 关系未建立或方向错误 | 在模型视图中检查关系 |
| 计算结果不对 | 存在多对多关系导致歧义 | 使用 SUMX 替代 SUM,或设置正确的关系方向 |
| 报表加载很慢 | 模型太复杂,双向筛选过多 | 简化模型,减少双向筛选使用 |
本篇介绍了:
下一篇:我们将学习 Power BI 的核心计算语言 DAX,从计算列和度量值开始,掌握数据分析公式的基础用法。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。