首页 > 解决方案 > 高于平均水平的人数

问题描述

我有这个来自 Excel 的简单数据集:

Date    Person  Amount
Jan-18  jason   1
Jan-18  fred    2
Jan-18  george  3
Feb-18  jason   10
Feb-18  fred    12
Feb-18  george  15
Feb-18  jim     25

我添加了两个措施:

Amount = SUM( Data[Amount] )

Average Amount per Person = 
  AVERAGEX(
      VALUES( Data[Person]),
      [Amount]
  )

这可以按我的预期工作,并且在我选择特定日期时是动态的:

在此处输入图像描述

我现在想要的是“高于平均水平的人数” - 所以在屏幕截图中只有 Jim 高于 15.50,因此该度量应返回 1。

我对此措施的尝试是这样的:

Number of Persons Above Average = 
  CALCULATE(
      DISTINCTCOUNT( Data[Person] ),
      FILTER(
          Data,
          SUM( Data[Amount] ) >= [Average Amount per Person]
      )
  )

正如您在下面看到的,它只返回显示的人数 - 在本例中为 4

如何将上述措施修改为正确的DAX

在此处输入图像描述

标签: powerbidax

解决方案


我喜欢在以下情况下使用变量:

Number of Persons Above Average =
  VAR AveragePerPerson = [Average Amount per Person]
  RETURN
      CALCULATE ( DISTINCTCOUNT ( Data[Person] ),
          Data[Amount] >= AveragePerPerson )

这样您就不必担心如何在内部计算平均度量,CALCULATE并且您不必使用FILTER函数。


推荐阅读