无法弄清楚如何让 RANKX 工作

Cannot figure out how to get RANKX to work

过去两天我一直在为此苦苦挣扎。我正在尝试使用 Power BI 创建一个简单的报告来显示前 10 次出现的事件。

我有一个名为 Requests 的 table,它具有以下内容:

Id    Code
1     00001
2     00001
3     00500
4     00001
5     00500
6     00730
...

我正在尝试计算每次出现的代码并显示前 10 个:

Code    Count    Rank
00001   3        1     
00500   2        2
00730   1        3

我创建了一个名为 Count 的度量:

Count = COUNTROWS(Requests)

我尝试通过以下方式创建排名衡量标准:

Rank = RANKX(ALL(Requests), [Count])
Rank = RANKX(Requests, [Count])

一切都得到相同的值 1:

Code    Count    Rank
00001   3        1
00500   2        1

我做错了什么?

我相信你得到全 1 的原因是你创建的度量每次使用时只会给你 table 中的总行数,然后你基本上尝试对相同的数字进行排名对于每一行,一遍又一遍地反对自己。

您可以通过使用 TOPN 然后 RANKX 来获得您想要的。为此,创建一个新的 table 并输入此代码以根据 ID 计数从请求 table 中获取前 10 个代码:

TOP10 = TOPN(10,GROUPBY(Requests,Requests[Code],"Count",countx(CURRENTGROUP(),Requests[Id])))

然后使用此代码添加一个新列以进行排名:

Rank = RANKX(TOP10,TOP10[Count])

您将从上面显示的前 6 行中获得此结果:

如果您不想太麻烦,可以使用内置的 Top N Filter。只需为 Code 列设置前 N 个筛选器,按 Count 的值显示前 10 个:

考虑在 Power BI Desktop 中使用 VALUES 和变量计算 table:

Top 10 Codes =
VAR MyTable =
    ADDCOLUMNS (
        VALUES ( Requests[Code] ),
        "Occurences", COUNTROWS ( RELATEDTABLE ( Requests ) )
    )
RETURN
    TOPN (
        10,
        ADDCOLUMNS ( MyTable, "Rank", RANKX ( MyTable, [Occurences] ) ),
        [Rank], ASC
    )