DAX技术求助:如何计算高于人均平均值的人数
解决方案:计算高于平均值的人数DAX度量值
没问题,这个需求用DAX就能轻松实现,结合你已有的度量值,我给你写好对应的度量并拆解细节:
最终度量值代码
Number of Persons Above Average = VAR CurrentAvg = [Average Amount per Person] RETURN COUNTX( VALUES(Data[Person]), IF([Amount] > CurrentAvg, 1, 0) )
代码逻辑解释
- 定义全局平均值变量:用
VAR CurrentAvg把你已有的Average Amount per Person度量存成变量,确保我们用的是当前筛选上下文(比如选中Feb-18)下的全局平均值,不会在遍历单个人员时被局部上下文干扰。 - 遍历人员统计符合条件的数量:
VALUES(Data[Person]):获取当前筛选范围内的所有唯一人员列表;- 对每个人员,判断其总金额
[Amount]是否大于全局平均值CurrentAvg,符合条件返回1,否则返回0; COUNTX会自动统计所有返回1的行,也就是高于平均值的人数。
验证你的示例场景
当筛选Feb-18时:
- 全局平均值为
(10+12+15+25)/4 = 15.5; - 逐个检查人员金额:Jason(10)、Fred(12)、George(15)都小于15.5,仅Jim(25)大于,所以度量值返回1,完全符合预期。
这个度量会自动适配不同的筛选上下文,比如选Jan-18时,平均值为2,只有George的3高于平均值,会返回1,逻辑完全自洽。
内容的提问来源于stack exchange,提问作者whytheq
相关产品推荐
相关产品推荐

