具有一些空白值并使用切片器的 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
)
让我们一步步思考一下原始代码。
- 它遍历 "Person 1" 到 "Person 20" 并计算那个人的平均分。
- 评估当前筛选上下文的人的平均分数(比如"Person 1")。
- 求"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],您可以忽略在选定时间段内没有得分的人。
我有一个 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
)
让我们一步步思考一下原始代码。
- 它遍历 "Person 1" 到 "Person 20" 并计算那个人的平均分。
- 评估当前筛选上下文的人的平均分数(比如"Person 1")。
- 求"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],您可以忽略在选定时间段内没有得分的人。