重点内容
事实表与维度表
| 事实表(Fact) | 维度表(Dimension) | |
|---|---|---|
| 记录什么 | 发生的事情:订单、付款、访问 | 描述用的资料:产品、顾客、日期、门市 |
| 行数 | 很多,而且会一直增加 | 较少,变化慢 |
| 栏位 | 金额、数量 + 各种编号 | 名称、分类、地区等文字属性 |
| 例子 | Orders:订单编号、日期、产品编号、顾客编号、数量、金额 | Products:产品编号、名称、分类、成本 |
星型结构
flowchart TB
P["Products 产品<br/>(维度)"] -->|1 对多| O
C["Customers 顾客<br/>(维度)"] -->|1 对多| O
D["Date 日期表<br/>(维度)"] -->|1 对多| O
S["Stores 门市 / 平台<br/>(维度)"] -->|1 对多| O
O["Orders 订单<br/>(事实)"]
- 维度表在「一」的那边,事实表在「多」的那边
- 筛选从维度表流向事实表:选「分类 = 饮料」,订单表就只剩饮料的订单
建立关系
自动侦测:载入资料时,Power BI 会按栏位名称和资料自动建立一些关系,要检查一下对不对。
手动建立:
- 左边切到 Model view(模型视图)
- 把
Products的ProductID拖到Orders的ProductID上 - 或按
关系设定:
| 设定 | 意思 | 建议 |
|---|---|---|
| Cardinality | 一对多(1:*)、一对一(1:1)、多对多(*:*) | 大部分用一对多 |
| Cross filter direction | Single(维度 → 事实)或 Both(双向) | 默认用 Single;双向容易出现意料之外的筛选结果 |
| Make this relationship active | 两个表之间只能有一条「作用中」关系 | 其他关系会变虚线,需要时用 DAX 的 USERELATIONSHIP 启用 |
📌 在关系线上,1 那端的栏位值必须不重复。产品表里如果同一个产品编号出现两次,就不能当「一」的那端,要先回 Power Query Remove Duplicates。
日期表
几乎每个模型都需要一个独立的日期表,才能按年、季、月、星期分析,也才能用时间智能函数(EP04)。
用 DAX 建一个():
Date =
ADDCOLUMNS (
CALENDAR ( DATE ( 2025, 1, 1 ), DATE ( 2026, 12, 31 ) ),
"Year", YEAR ( [Date] ),
"Month No", MONTH ( [Date] ),
"Month", FORMAT ( [Date], "MMM" ),
"Quarter", "Q" & QUARTER ( [Date] ),
"Weekday", FORMAT ( [Date], "ddd" )
)建好后:
- 选取这个表 → ,选
Date栏位 - 在 Model view 把
Date[Date]连到Orders[OrderDate](一对多) - 选取
Month栏位 → Sort by column →Month No,月份才会按 Jan、Feb、Mar 排,不会按字母排
⚠️ 如果订单表的日期栏位带时间(例如 2026-03-05 14:32),要先在 Power Query 改成只有日期,不然对不上日期表。
模型整理习惯
- 表和栏位改成看得懂的名称,例如
Orders、Products,不要保留Sheet1、Query1 - 只拿来连关系、不用在报表上的编号栏位,在 Data 窗格右键 → Hide in report view,报表作者比较不会选错
- 数字栏位设定默认加总方式:选栏位 → (例如「单价」不应该被加总)
- 维度表放上面、事实表放下面,Model view 看起来比较清楚
学完你会
常见错误
- ❌ 把所有资料 Merge 成一个超宽的大表:模型变大、难维护,用维度表 + 关系比较好。
- ❌ 随便开 Both 双向筛选:筛选结果变得难以预测,甚至出现模糊关系错误。
- ❌ 维度表的键值有重复:不能建立一对多关系,先去除重复。
- ❌ 直接用订单表的日期栏做时间分析:没有日期表,时间智能函数算不对、没有订单的日子也会消失。
- ❌ 月份按字母排序(Apr、Aug、Dec……):要设 Sort by column。
Sources
官方文档:
- Understand star schema and the importance for Power BI - Microsoft Learn
- Create and manage relationships in Power BI Desktop - Microsoft Learn
- Model relationships in Power BI Desktop - Microsoft Learn
- Create date tables in Power BI Desktop - Microsoft Learn
- Set and use date tables in Power BI Desktop - Microsoft Learn