我有以下情况。我有通过考试的学生。他们可能同时拥有超过1名主管。我想在DAX中创建一个计算每个级别(即部门,主管,学生)的平均分数。
原始表格中包含每个学生的一次测试,但是我已经加入了#34;这张桌子上有一个新创建的学生 - 主管,所以我也可以计算出主管的分数。问题是当我计算每个部门的平均分数时,因为它包含我使用这个新表创建的所有重复项。
这些是我的表格:
这是我的模特:
显而易见的DAX只是计算得分的平均值,对于下面的数据透视表上的学生和主管来说很好,但在部门级别它是错误的:
Avg Score:=AVERAGE(score[Score])
此时我尝试过类似下面的内容,但没有成功。我的观点是创建一个带有SUMMARIZE的动态表,该表按照testid进行分组并进行平均得分。然后我想再次平均,这将是正确的分数并将1column-1row转换为数值。但这不起作用,我不确定原因:
Avg Score= VAR ThisTable=SUMMARIZE(score,score[TestId],"IndividualScore",AVERAGE(score[Score])) RETURN SUMMARIZE(ThisTable,"AvgScore",AVERAGE([IndividualScore]))
答案 0 :(得分:0)
这就是我接近它的方式。
首先创建一个类似下面的度量,以获得每个上下文中的分数:
Sum Score := MAX(Score[Score])
然后创建平均计算度量:
Avg Score :=
DIVIDE (
SUMX ( DISTINCT ( Score[Student] ), [Sum Score] ),
DISTINCTCOUNT ( Score[Student] )
)
请注意Sum Score
指标是必需的,因为Avg Score
指标会使用它来执行计算。
您将在Power BI中获得类似Matrix(数据透视表)的内容:
如果有帮助,请告诉我。
答案 1 :(得分:0)
好的,所以感谢alejandro的想法,我可以找到答案。基本上我是通过测试ID和平均分数(即真实分数)创建一个具有组的动态表。然后我使用AVERAGEX来计算那些测试的平均值。这是DAX代码:
Avg CSAT:=VAR ThisTable=SUMMARIZE(score,score[TestId],"SumOfScore",AVERAGE(score[Score])) RETURN AVERAGEX(ThisTable,[SumOfScore])