无法弄清楚如何让RANKX工作

时间:2017-07-31 13:27:20

标签: powerbi dax

过去两天我一直在努力解决这个问题。我正在尝试使用Power BI来创建一个简单的报告来显示出现的前十次。

我有一个名为Requests的表,其中包含以下内容:

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

我做错了什么?

3 个答案:

答案 0 :(得分:0)

我相信你获得全部1的原因是你创建的度量只会在每次使用时为你提供表中的总行数,然后你基本上会尝试一遍又一遍地对相同的数字进行排序,对于每一行。

您可以使用TOPN然后RANKX获得所需内容。为此,请创建一个新表并输入此代码,以根据Id计数从“请求”表中获取前10个代码:

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

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

Rank = RANKX(TOP10,TOP10[Count])

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

enter image description here

答案 1 :(得分:0)

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

result

答案 2 :(得分:0)

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

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