Power BI-Rankx和过滤器

时间:2018-12-10 11:33:21

标签: powerbi

我已经在表格下面,想要添加计算列排名(最老的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,但是没有用。

2 个答案:

答案 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而不是1documentation of RANKX表示0以降序对系列进行排序。

输出

enter image description here

答案 1 :(得分:0)

FILTER('order', 'order'[Status] = "O"),更改为FILTER(all('order'), 'order'[Status] = "O"),否则,您的结果可能在一张表中全部相同。