Power BI - Rankx和过滤器

我有下面的表,并希望添加计算列 Rank (oldest top-3) ,仅当状态为"O"时才排名 . 请注意,** Rank(最高的前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))

我得到前三名,而不是botom . 此外,使用过滤器,它会过滤掉任何其他数据 . 我试图用ALLSELECTED替换FILTER,但它没有用 .

回答(1)

2 years ago

输入

我创建了一个名为 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 按降序排列系列 .

输出