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

按类别(项目)获取最大单价失败,求解决方案

按项目获取最大单价却返回最小值的DAX问题解决

问题描述

需要按「项目」类别提取对应最大单价,但现有DAX公式始终返回最小值(实际得到1.79,预期为3.58)。当前使用的DAX代码如下:

Max of Unit Price max per Project = 
MAXX(
    KEEPFILTERS(VALUES('Table1'[Project])),
    CALCULATE(MAX('Table1'[Unit Price]))
)

注:示例数据仅包含一个项目类别(对应列未显示)。

问题原因

KEEPFILTERS 会强制保留当前行上下文的筛选条件,导致 CALCULATE(MAX('Table1'[Unit Price])) 只能计算当前行上下文范围内的单价最大值,而非整个项目组的全局最大值。由于视觉对象的行上下文限制,最终返回的是当前行对应的小值,而非项目级的最大值。

解决方案

推荐使用 ALLEXCEPT 清除无关筛选,仅保留「项目」列的分组逻辑,确保计算每个项目的全局最大单价:

Max of Unit Price max per Project = 
CALCULATE(MAX('Table1'[Unit Price]), ALLEXCEPT('Table1', 'Table1'[Project]))

如果需要保留 MAXX 的写法,可移除 KEEPFILTERS 并添加 ALLSELECTED 清除行上下文筛选:

Max of Unit Price max per Project = 
MAXX(
    VALUES('Table1'[Project]),
    CALCULATE(MAX('Table1'[Unit Price]), ALLSELECTED('Table1'))
)

说明

  • ALLEXCEPT('Table1', 'Table1'[Project]):仅保留「项目」列的筛选,清除表中其他所有列的行上下文筛选,确保计算的是每个项目分组内的最大单价。
  • 上述两种写法均能摆脱行上下文限制,正确返回项目对应的最大单价3.58。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:55:04