如何在Power BI中计算度量值基于均值的Z分数
实现Z分数计算的解决方案
前提说明
你已经提前创建好了3个基础度量,我们先统一命名方便示例:
[Distinct Sport Count]:每个ID对应的唯一运动项目计数,即你用DISTINCTCOUNT()创建的度量[Average Count]:所有ID的唯一运动计数的均值,你的场景中值为3[Std Dev Count]:所有ID的唯一运动计数的总体标准差,你的场景中值约为0.81649658
核心逻辑
Z分数的计算公式为:
Z = (单个观测值 - 总体均值) / 总体标准差
需要特别注意:计算均值和标准差时要移除ID维度的筛选上下文,避免当前行的ID筛选导致只统计单个ID的均值/标准差,得到错误结果。
DAX 度量代码(适配Power BI/Excel Power Pivot场景)
假设你的源表名为SportsData,ID列名为SportsData[ID],度量写法如下:
Z Score = VAR CurrentIDCount = [Distinct Sport Count] VAR OverallAverage = CALCULATE([Average Count], REMOVEFILTERS(SportsData[ID])) VAR OverallStdDev = CALCULATE([Std Dev Count], REMOVEFILTERS(SportsData[ID])) RETURN DIVIDE(CurrentIDCount - OverallAverage, OverallStdDev, BLANK())
结果验证
你的场景中计算结果如下:
| ID | Z分数 | 说明 |
|---|---|---|
| 123456 | 0 | 计数等于均值 |
| 234567 | ~-1.22 | 符合略低于-1的预期 |
| 345678 | ~1.22 | 符合略高于1的预期 |
注意事项
如果你的报表存在其他需要保留的筛选条件(比如运动类型分组、时间筛选等),上述写法仅会移除ID列的筛选,其他筛选条件仍然生效,符合常规的分组统计Z分数的需求。
内容的提问来源于stack exchange,提问作者user35131
相关产品推荐
相关产品推荐

