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

如何用DAX仅对Lookup表中存在的匹配值做聚合计算

解决方案

你当前的写法逻辑本身没有问题,未得到预期结果的核心原因是矩阵默认会展示key表所有存在的site行(哪怕对应度量值返回空),可以通过以下两种方式实现需求,全程不需要在筛选面板配置任何硬编码规则:

方案1:不建立表关系(兼容你当前的断开模型)

直接修改度量值,先判断当前行的site是否在lookup表范围内,符合条件再返回聚合结果:

countSiteServiceLookup = 
// 读取当前上下文的site值
VAR CurrentSite = SELECTEDVALUE('key'[site])
// 判断site是否存在于lookup表
VAR IsValidSite = CurrentSite IN VALUES('Lookup'[site])
RETURN
IF(
    IsValidSite,
    // 符合条件则计算对应site-service组合的总月数
    CALCULATE(COUNT('key'[month]), REMOVEFILTERS('key'[month])),
    BLANK()
)

将该度量值放入矩阵值区域后,矩阵会自动隐藏返回空值的site2行,直接得到你需要的结果。如果你习惯用TREATAS写法,也可以用下面等价的度量值:

countSiteServiceLookup = 
CALCULATE(
    CALCULATE(COUNT('key'[month]), REMOVEFILTERS('key'[month])),
    TREATAS(VALUES('Lookup'[site]), 'key'[site])
)

使用这个写法时只需要在矩阵的**行属性设置中关闭「显示无数据的项」**即可隐藏site2行。

方案2:建立表关系(性能更优)

  1. 先在模型中建立Lookup[site]到key[site]的一对多单方向关系(Lookup表为一端,key表为多端)
  2. 直接使用如下度量值即可:
countSiteServiceLookup = 
CALCULATE(
    COUNT('key'[month]),
    REMOVEFILTERS('key'[month]),
    // 关联lookup表筛选有效site
    'Lookup'
)

关联后关系会自动过滤不在Lookup表中的site,不需要额外判断逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:06:03