【问题标题】:Compute a calculation over SUMMARIZE in DAX在 DAX 中计算 SUMMARIZE
【发布时间】:2017-01-31 03:33:59
【问题描述】:

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

原始表包含每个学生的一次测试,但我已将这个表“左连接”到一个新创建的表,即学生主管,因此我也可以计算主管的分数。问题是当我计算每个部门的平均分数时,因为它包含我用这个新表创建的所有重复项。

这些是我的桌子:

这是我的模型:

仅计算平均分数的明显 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]))

【问题讨论】:

    标签: excel powerbi powerpivot dax


    【解决方案1】:

    这就是我的处理方式。

    首先创建一个如下所示的度量来获取每个上下文中的分数:

    Sum Score := MAX(Score[Score])
    

    然后创建平均计算度量:

    Avg Score :=
    DIVIDE (
        SUMX ( DISTINCT ( Score[Student] ), [Sum Score] ),
        DISTINCTCOUNT ( Score[Student] )
    )
    

    注意Sum Score 度量是必需的,因为Avg Score 度量使用它来执行计算。

    你会在 Power BI 中得到类似这样的矩阵(数据透视表):

    如果这有帮助,请告诉我。

    【讨论】:

    • 嗨亚历杭德罗,非常感谢您的回答。当学生有超过 1 个独特的测试时,您的计算会出现问题,但是您对 SUMX 的想法帮助解决了这个问题,我将在下面发布。再次感谢!
    • @Victor,你没有在你的问题中具体说明,我很高兴你设法解决了它。
    【解决方案2】:

    好的,多亏了 alejandro 的想法,我才能找到答案。基本上我正在创建一个动态表,其中包含一组按测试 ID 和平均分数(即真实分数)。然后我使用 AVERAGEX 来计算这些测试的平均值。这是 DAX 代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多