我已经在表格下面,想要添加计算列排名(最老的top-3),该列仅在“状态”为“ O”时排名。请注意,“排名(最老的前3名)”是期望的结果。
Status Days open Rank (oldest top-3)
C 1
O 1 4
O 2 3
C 3
C 4
C 5
O 6 2
O 7 1
C 8
C 9
我有下面的代码,但是它们对我不起作用。
Rank = IF(order[Status] = "C", BLANK(),
RANKX(FILTER(order, order[Status] = "O"),
order[Days open], , 1, Dense))
我获得前三名,而不是第一名。同样,使用过滤器可以过滤掉其他所有数据。我试图用ALLSELECTED替换FILTER,但是没有用。
答案 0 :(得分:1)
我用以下数据创建了一个名为order
的表:
Status Days open
C 1
O 1
O 2
C 3
C 4
C 5
O 6
O 7
C 8
C 9
然后,我使用以下DAX添加了计算列:
Rank =
IF('order'[Status] = "C",
BLANK(),
RANKX(
FILTER('order', 'order'[Status] = "O"),
'order'[Days open],
,
0,
Dense
)
)
与DAX相比,唯一的区别(除了格式化)是RANKX
函数的倒数第二个选项是0
而不是1
。
documentation of RANKX
表示0
以降序对系列进行排序。
答案 1 :(得分:0)
FILTER('order', 'order'[Status] = "O")
,更改为FILTER(all('order'), 'order'[Status] = "O")
,否则,您的结果可能在一张表中全部相同。