我有一个有两列的表格:
如果我使用 RankX 创建一个度量,我会得到整个表格的排名,按值排序。一切都很好。
RankX_Table Dax:
RankX_Category = RANKX(all(RankX_Dummy[Category]), [Total_Value]
)
我想按类别创建排名。如果我为此创建一个度量,排名只会显示“1”
|类别 |价值|总价值 | 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])
我想我错过了一个细节,但我不知道是什么。
尝试以下
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 将为重复值在排名中留下间隙。