在DAX中计算SUMMARIZE的计算

时间:2017-01-30 15:50:33

标签: excel powerbi powerpivot dax

我有以下情况。我有通过考试的学生。他们可能同时拥有超过1名主管。我想在DAX中创建一个计算每个级别(即部门,主管,学生)的平均分数。

原始表格中包含每个学生的一次测试,但是我已经加入了#34;这张桌子上有一个新创建的学生 - 主管,所以我也可以计算出主管的分数。问题是当我计算每个部门的平均分数时,因为它包含我使用这个新表创建的所有重复项。

这些是我的表格:

enter image description here

这是我的模特:

enter image description here

显而易见的DAX只是计算得分的平均值,对于下面的数据透视表上的学生和主管来说很好,但在部门级别它是错误的:

Avg Score:=AVERAGE(score[Score])

enter image description here

此时我尝试过类似下面的内容,但没有成功。我的观点是创建一个带有SUMMARIZE的动态表,该表按照testid进行分组并进行平均得分。然后我想再次平均,这将是正确的分数并将1column-1row转换为数值。但这不起作用,我不确定原因:

Avg Score= VAR ThisTable=SUMMARIZE(score,score[TestId],"IndividualScore",AVERAGE(score[Score])) RETURN SUMMARIZE(ThisTable,"AvgScore",AVERAGE([IndividualScore]))

2 个答案:

答案 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(数据透视表)的内容:

enter image description here

如果有帮助,请告诉我。

答案 1 :(得分:0)

好的,所以感谢alejandro的想法,我可以找到答案。基本上我是通过测试ID和平均分数(即真实分数)创建一个具有组的动态表。然后我使用AVERAGEX来计算那些测试的平均值。这是DAX代码:

Avg CSAT:=VAR ThisTable=SUMMARIZE(score,score[TestId],"SumOfScore",AVERAGE(score[Score])) RETURN AVERAGEX(ThisTable,[SumOfScore])