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

请求编写DAX度量值:计算学生技能完成数相对整体中位数的占比

解决DAX度量值计算学生技能完成数相对全体中位数百分比的问题

问题背景

现有学生技能完成数据如下:

Student NameHead to Toe
Student 12
Student 23
Student 35
Student 46

全体学生的Head to Toe技能完成数中位数为4,需要创建DAX度量值,在应用学生姓名筛选时,展示当前学生的技能完成数相对于该全体中位数的百分比。

原度量值的问题

你编写的度量值无法正常工作的核心原因:

%HeadtoToe = 
VAR HTCohort= SUM(Assessment_Skills[Head_To_Toe])
VAR HTStudent = MEDIAN(Assessment_Skills[Head_To_Toe])
VAR RESULT = DIVIDE(HTCohort,HTStudent)
RETURN RESULT 

当应用学生姓名筛选时,MEDIAN(Assessment_Skills[Head_To_Toe])只会计算当前筛选出的单个学生的数值(单个值的中位数就是其本身),导致最终结果始终为100%,完全不符合需求。

正确的DAX度量值

要获取不受筛选影响的全体学生中位数,需要使用ALL()函数清除筛选上下文,确保无论选择哪个学生,中位数都取全体数据的计算结果:

%HeadtoToe = 
VAR TotalMedian = MEDIAN(ALL(Assessment_Skills[Head_To_Toe]))
VAR StudentValue = SUM(Assessment_Skills[Head_To_Toe])
RETURN DIVIDE(StudentValue, TotalMedian, 0)

代码解释

  • TotalMedian:通过ALL(Assessment_Skills[Head_To_Toe])清除该列的筛选上下文,固定计算全体学生的Head to Toe中位数(此处为4)。
  • StudentValue:获取当前筛选学生的Head to Toe完成数(单个学生对应唯一值,用SUM/MAX/MIN均可)。
  • DIVIDE:安全计算百分比,第三个参数0是除零时的默认返回值,避免出现报错。

测试结果

应用学生筛选后,各学生的计算结果如下:

  • Student 1:2/4 = 50%
  • Student 2:3/4 = 75%
  • Student 3:5/4 = 125%
  • Student 4:6/4 = 150%

内容的提问来源于stack exchange,提问作者TSA Sonak WNMU

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:32:42