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

问题描述 投票:0回答:1

我有一个有15个人的桌子,每个月获得7天的分数。我想使用Power BI中的RANKX公式将最低(1)排名到最高平均分数。如果我全都看的话,这很好用,但是当我使用切片器时,就开始奇怪地行动,例如,只看一两个月。排名不再以1开始?

我使用此公式:

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

请看附件中的图像。

非常感谢image showing the issue

powerbi ranking
1个回答
0
投票

您可以尝试一下,看看是否可行吗?

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

让我们逐步思考原始代码。

  1. 将“ Person 1”迭代到“ Person 20”并计算该人的平均分数。
  2. [评估当前过滤器上下文的人的平均得分(例如“人1”)。
  3. 找到“人物1”在20个人中的排名。

在步骤(1)中,它包括从1到20的所有Person,因为视觉中没有Person过滤器。在这里,看起来在所选期间内第15个人和第18个人没有得分,因此其评估为空白。

现在,RANKX的document说,

如果表达式或值的计算结果为空白,则对于产生数字的所有表达式,将其视为0(零),对于所有文本表达式,将其视为空文本。

Person 8和15的平均得分为BLANK,因此RANKX将其视为0。现在回到Person 1,她的平均得分为62.43,并且有两个人的平均得分为0。因此,Person的排名1将是2。

通过将'Score Table'[Person]用CALSLATETABLE内的VALUES包装,您可以忽略在所选期间内没有分数的人。

© www.soinside.com 2019 - 2024. All rights reserved.