具有一些空白值并使用切片器的 Power BI 动态排名

Power BI dynamic ranking with some blank values and using slicers

我有一个 table 有 15 个人,每个月都会获得 7 天的分数。我想在 Power BI 中使用 RANKX 公式对最低 (1) 到最高平均分进行排名。 如果我看的话这一切都很好,但是当我使用切片机并且只看一两个月时开始表现得很奇怪。排名不再从1开始了?

我使用这个公式:

Rank = RANKX(
    ALLSELECTED('Score Table'[Person]);CALCULATE(AVERAGE('Score Table'[Score]));;ASC;Dense) 

请看附图。

帮助非常感谢image showing the issue

你能试试看是否有效吗?

Rank =
RANKX(
    CALCULATETABLE(
        VALUES( 'Score Table'[Person] ),
        ALLSELECTED( 'Score Table'[Person] )
    ),
    CALCULATE( AVERAGE( 'Score Table'[Score] ) ),
    ,
    ASC,
    Dense
)

让我们一步步思考一下原始代码。

  1. 它遍历 "Person 1" 到 "Person 20" 并计算那个人的平均分。
  2. 评估当前筛选上下文的人的平均分数(比如"Person 1")。
  3. 求"Person 1"在20个人中的排名位置

在步骤(1)中,因为视觉对象中没有Person筛选器,所以包含了从1到20的所有Persons。在这里,看起来在所选时间段内没有第 15 个人和第 18 个人的分数,因此它的计算结果为空白。

现在,RANKX 的 document 说,

If expression or value evaluates to BLANK it is treated as a 0 (zero) for all expressions that result in a number, or as an empty text for all text expressions.

人8和15的平均分是BLANK,所以RANKX把它当作0分。现在回到人1,她的平均分是62.43,还有两个人的平均分是0分。所以,第 1 个人的等级将为 2。

通过在 CALCULATETABLE 中用 VALUES 包裹 'Score Table'[Person],您可以忽略在选定时间段内没有得分的人。