按维度分组求最大值之和:DAX公式结果错误寻求修正
修正DAX公式:按维度分组的最大值之和
你的原公式在无额外筛选上下文的情况下可以正常计算每个dimension1分组的最大值之和,但如果报表中存在其他筛选器(比如切片器、行/列维度),VALUES(T1[dimension1])会返回当前筛选范围内的dimension1值,同时CALCULATE(MAX(T1[Value]))可能受其他维度筛选干扰,导致结果不符合预期。
以下分两种场景给出修正方案:
场景1:计算全局所有dimension1分组的最大值之和(不受外部筛选影响)
如果需要忽略报表中的其他筛选条件,始终计算所有dimension1分组的最大值总和,使用以下公式:
sum_of_max = SUMX( ALL(T1[dimension1]), // 获取所有不重复的dimension1值,不受外部筛选限制 CALCULATE( MAX(T1[Value]), ALLEXCEPT(T1, T1[dimension1]) // 仅保留dimension1的筛选上下文,确保每个分组取全局最大值 ) )
场景2:计算当前筛选上下文内dimension1分组的最大值之和(响应外部筛选)
如果需要跟随报表中的其他筛选(比如仅计算选中维度范围内的dimension1最大值之和),使用以下微调后的公式,确保MAX计算仅受dimension1分组控制:
sum_of_max = SUMX( VALUES(T1[dimension1]), CALCULATE( MAX(T1[Value]), ALLEXCEPT(T1, T1[dimension1]) // 清除其他维度的筛选,确保每个dimension1分组取当前筛选下的最大值 ) )
关键说明
ALLEXCEPT(T1, T1[dimension1])的核心作用是清除除dimension1之外的所有筛选上下文,保证每个dimension1分组的MAX(Value)计算仅基于该分组内的数据,避免其他维度的筛选干扰结果。
内容的提问来源于stack exchange,提问作者Tom_pl
相关产品推荐
相关产品推荐

