Power BI中按唯一Index计算培训满意度平均分的异常排查
问题分析与解决方案
你的DAX公式存在两个核心问题,导致部分筛选场景下平均分异常:
分组逻辑冗余且有潜在风险
你同时按[Index]和[Training satisfaction score]分组,虽然正常情况下每个Index对应唯一分数,分组结果和仅按Index分组一致,但当数据出现异常(比如某个Index意外出现不同分数)或筛选上下文干扰时,可能导致同一个Index被多次计入,直接影响平均结果。迭代时引用原表列而非分组临时表列
AVERAGEX中直接引用原表的[Training satisfaction score],在复杂筛选场景下,可能因DAX上下文转换错误,错误计算该Index下所有可见行的分数聚合值(而非单一唯一分数),极端情况会出现平均值超出100的异常。
正确的DAX写法
方式一:SUMMARIZE分组提取唯一分数
Average Training satisfaction = AVERAGEX( SUMMARIZE( 'Tracker EMEA 24', 'Tracker EMEA 24'[Index], "Unique Satisfaction Score", MAX('Tracker EMEA 24'[Training satisfaction score]) ), [Unique Satisfaction Score] )
- 用
MAX是因为每个Index对应唯一分数,MAX/MIN/SUM都能得到正确的单一值,确保每个Index仅输出一行唯一分数。
方式二:DISTINCT+SUMX组合(逻辑更直观)
Average Training satisfaction = DIVIDE( SUMX( DISTINCT('Tracker EMEA 24'[Index]), CALCULATE(MAX('Tracker EMEA 24'[Training satisfaction score])) ), DISTINCTCOUNT('Tracker EMEA 24'[Index]) )
- 先获取所有唯一Index,对每个Index计算其唯一分数并求和,最后除以唯一Index的数量,从根源保证每个Index仅统计一次。
这两种写法都能确保无论筛选条件如何变化,都只会基于每个Index的唯一满意度分数计算平均,彻底解决异常问题。
内容的提问来源于stack exchange,提问作者Kim Leysen
相关产品推荐
相关产品推荐

