Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 具有一些空白值并使用切片器的Power BI动态排序_Powerbi_Ranking - Fatal编程技术网

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

Powerbi 具有一些空白值并使用切片器的Power BI动态排序,powerbi,ranking,Powerbi,Ranking,我有一张有15个人的桌子,每个月有7天的分数。我想使用Power BI中的RANKX公式将最低(1)的平均分数排到最高。 如果我看一下,这一切都很好,但当我使用切片机时,比如只看一两个月,就会表现得很奇怪。排名不再以1开头了 我用这个公式: Rank = RANKX( ALLSELECTED('Score Table'[Person]);CALCULATE(AVERAGE('Score Table'[Score]));;ASC;Dense) 请看附件中的图片 非常感谢您的帮助您能试试

我有一张有15个人的桌子,每个月有7天的分数。我想使用Power BI中的RANKX公式将最低(1)的平均分数排到最高。 如果我看一下,这一切都很好,但当我使用切片机时,比如只看一两个月,就会表现得很奇怪。排名不再以1开头了

我用这个公式:

Rank = RANKX(
    ALLSELECTED('Score Table'[Person]);CALCULATE(AVERAGE('Score Table'[Score]));;ASC;Dense) 
请看附件中的图片


非常感谢您的帮助

您能试试这个,看看它是否有效吗

Rank =
RANKX(
    CALCULATETABLE(
        VALUES( 'Score Table'[Person] ),
        ALLSELECTED( 'Score Table'[Person] )
    ),
    CALCULATE( AVERAGE( 'Score Table'[Score] ) ),
    ,
    ASC,
    Dense
)
让我们一步一步地思考原始代码

  • 它迭代“Person 1”到“Person 20”,并计算该人的平均得分
  • 评估当前筛选上下文中人员的平均得分(如“人员1”)
  • 在20人中找到“人1”的排名位置
  • 在步骤(1)中,它包括从1到20的所有人员,因为视觉系统中没有人员过滤器。在这里,看起来在所选期间没有第15人和第18人的分数,因此计算结果为空白

    现在,兰克斯大学的教授说

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

    第8人和第15人的平均分数为空,因此RANKX将其视为0。现在回到第一个人,她的平均分是62.43,有两个人的平均分是0。因此,人员1的等级将为2


    通过将“分数表”[Person]中的值包装在CALCULATETABLE中,您可以忽略在所选期间没有分数的人。

    您能试试这个方法,看看是否有效吗

    Rank =
    RANKX(
        CALCULATETABLE(
            VALUES( 'Score Table'[Person] ),
            ALLSELECTED( 'Score Table'[Person] )
        ),
        CALCULATE( AVERAGE( 'Score Table'[Score] ) ),
        ,
        ASC,
        Dense
    )
    
    让我们一步一步地思考原始代码

  • 它迭代“Person 1”到“Person 20”,并计算该人的平均得分
  • 评估当前筛选上下文中人员的平均得分(如“人员1”)
  • 在20人中找到“人1”的排名位置
  • 在步骤(1)中,它包括从1到20的所有人员,因为视觉系统中没有人员过滤器。在这里,看起来在所选期间没有第15人和第18人的分数,因此计算结果为空白

    现在,兰克斯大学的教授说

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

    第8人和第15人的平均分数为空,因此RANKX将其视为0。现在回到第一个人,她的平均分是62.43,有两个人的平均分是0。因此,人员1的等级将为2

    通过将“分数表”[Person]中的值包装在CALCULATETABLE中,可以忽略在所选期间没有分数的人员