RankX 不适用于类别,仅显示“1”

问题描述 投票:0回答:2

情况

我有一个有两列的表格:

  • 类别(字符串)
  • 值(整数)

如果我使用 RankX 创建一个度量,我会得到整个表格的排名,按值排序。一切都很好。

Table with Category, Value and Rank

RankX_Table Dax:

RankX_Category = RANKX(all(RankX_Dummy[Category]), [Total_Value]


问题

我想按类别创建排名。如果我为此创建一个度量,排名只会显示“1”

Table with Category, Value, Rank_Table, Rank_Category

|类别 |价值|总价值 | RankX_Table | RankX_类别

|一个 | 100 | 100 100 | 100 3 | 1

|一个 | 150 | 150 150 | 150 1 | 1

|乙| 50 | 50 50 | 50 9 | 1

|乙| 55 | 55 55 | 55 8 | 1

|乙| 100 | 100 100 | 100 3 | 1

等等

RankX_类别 Dax:

RankX_Category = RANKX(all(RankX_Dummy[Category]), [Total_Value])

我想我错过了一个细节,但我不知道是什么。

powerbi dax powerbi-desktop rank
2个回答
0
投票

尝试以下

RANKX(
    FILTER(ALL(RankX_Dummy[Category]), RankX_Dummy[Category] = EARLIER(RankX_Dummy[Category])),
    RankX_Dummy[Value],
    ,DESC,
    Dense
)

DAX 查询说明:

RANKX: 该函数根据指定的表达式和顺序计算排名。它根据表达式的顺序为每一行分配一个排名。

FILTER(ALL(RankX_Dummy[Category]), RankX_Dummy[Category] = EARLIER(RankX_Dummy[Category])): 公式的这部分过滤表以仅包含与当前行具有相同

Category
的行。
EARLIER
用于获取迭代上下文中当前行的类别值。

RankX_Dummy[Value]: 这是将用于排名的表达式。在本例中,它是

Value
列。

DESC: 这表示排名应按降序排列,因此最高的值排名较低(例如,1 表示最高,2 表示第二高,依此类推)。

Dense:这是一个可选参数,指定如何处理重复值。 Dense 将为重复值分配连续的排名,而 Skip 将为重复值在排名中留下间隙。


0
投票

试试这个。

RankX_Category2 = 
 VAR t = CALCULATETABLE(RankX_Dummy, REMOVEFILTERS(RankX_Dummy), VALUES(RankX_Dummy[Category]))
 RETURN
 RANKX(t, [Total_Value] )

© www.soinside.com 2019 - 2024. All rights reserved.