Microsoft Lab
全部软件
Power BI约 8 分钟

数据模型与关系:把多个表连起来

重点内容


事实表与维度表

事实表(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 会按栏位名称和资料自动建立一些关系,要检查一下对不对。

手动建立:

  1. 左边切到 Model view(模型视图)
  2. 把 Products 的 ProductID 拖到 Orders 的 ProductID 上
  3. 或按 Home›Manage relationships›New

关系设定:

设定意思建议
Cardinality一对多(1:*)、一对一(1:1)、多对多(*:*)大部分用一对多
Cross filter directionSingle(维度 → 事实)或 Both(双向)默认用 Single;双向容易出现意料之外的筛选结果
Make this relationship active两个表之间只能有一条「作用中」关系其他关系会变虚线,需要时用 DAX 的 USERELATIONSHIP 启用

📌 在关系线上,1 那端的栏位值必须不重复。产品表里如果同一个产品编号出现两次,就不能当「一」的那端,要先回 Power Query Remove Duplicates。


日期表

几乎每个模型都需要一个独立的日期表,才能按年、季、月、星期分析,也才能用时间智能函数(EP04)。

用 DAX 建一个(Modeling›New table):

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" )
)

建好后:

  1. 选取这个表 → Table tools›Mark as date table,选 Date 栏位
  2. 在 Model view 把 Date[Date] 连到 Orders[OrderDate](一对多)
  3. 选取 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,报表作者比较不会选错
  • 数字栏位设定默认加总方式:选栏位 → Column tools›Summarization(例如「单价」不应该被加总)
  • 维度表放上面、事实表放下面,Model view 看起来比较清楚

学完你会

常见错误

  • ❌ 把所有资料 Merge 成一个超宽的大表:模型变大、难维护,用维度表 + 关系比较好。
  • ❌ 随便开 Both 双向筛选:筛选结果变得难以预测,甚至出现模糊关系错误。
  • ❌ 维度表的键值有重复:不能建立一对多关系,先去除重复。
  • ❌ 直接用订单表的日期栏做时间分析:没有日期表,时间智能函数算不对、没有订单的日子也会消失。
  • ❌ 月份按字母排序(Apr、Aug、Dec……):要设 Sort by column。

Sources

官方文档:

  1. Understand star schema and the importance for Power BI - Microsoft Learn
  2. Create and manage relationships in Power BI Desktop - Microsoft Learn
  3. Model relationships in Power BI Desktop - Microsoft Learn
  4. Create date tables in Power BI Desktop - Microsoft Learn
  5. Set and use date tables in Power BI Desktop - Microsoft Learn

📝 随堂测验

答完才知道有没有真的学会。答错没关系,每题都有解析。

测验一下共 6 题
只记在你的浏览器里,换设备不会同步。