You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerBI DAX:创建度量值时如何引用关联表实现跨表筛选?

跨表筛选计算运动员群体的居民占比

因为你已经通过Person和ID字段在Residency表与Athletes表之间建立了关联关系,直接在CALCULATE中引用关联表的筛选条件即可实现需求,DAX会自动利用表间关系传递筛选上下文。

核心公式实现

Per Housing First Year (Athletes) = 
DIVIDE(
    // 计算运动员群体中的居民数量
    CALCULATE(
        COUNT(Residency[Resident]),
        Residency[Resident] = 1,
        Athletes[Athlete] = "Yes"
    ),
    // 计算运动员群体的总人数(作为占比分母)
    CALCULATE(
        COUNT(Residency[Resident]),
        Athletes[Athlete] = "Yes"
    )
)

关键说明

  1. 表间关系的作用:只要Residency与Athletes的关联是Active状态,CALCULATE会自动通过Person-ID的关联,把Athletes表中Athlete="Yes"的筛选条件映射到Residency表对应的记录上。
  2. 分母的筛选必要性:必须给分母也加上运动员的筛选条件,这样计算的是运动员群体内部的居民占比,而非运动员居民数在全体居民中的占比。
  3. 非Active关系的处理:如果表间关系是Inactive状态,需要用USERELATIONSHIP函数临时激活关系,公式调整如下:
Per Housing First Year (Athletes) = 
DIVIDE(
    CALCULATE(
        COUNT(Residency[Resident]),
        Residency[Resident] = 1,
        Athletes[Athlete] = "Yes",
        USERELATIONSHIP(Residency[Person], Athletes[ID])
    ),
    CALCULATE(
        COUNT(Residency[Resident]),
        Athletes[Athlete] = "Yes",
        USERELATIONSHIP(Residency[Person], Athletes[ID])
    )
)

可选验证方式

你也可以先在Residency表添加一个计算列,确认关联是否生效:

Is Athlete = RELATED(Athletes[Athlete])

之后用这个计算列替代关联表筛选,结果一致,但直接引用关联表筛选的写法更简洁高效。

内容的提问来源于stack exchange,提问作者M J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:12:33