过去两天我一直在努力解决这个问题。我正在尝试使用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
我做错了什么?
答案 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行获得此结果:
答案 1 :(得分:0)
如果您不想要太多麻烦,可以使用内置Top N Filter。只需为Code
列设置前N个过滤器,按Count
的值显示前10个:
答案 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
)