我需要为仪表板对产品进行排名。每天,我们都存储产品的销售。结果,我们得到了这个数据集示例:
+-----------+------------+-------+
| product | date | sales |
+-----------+------------+-------+
| coffee | 11/03/2019 | 15 |
| coffee | 12/03/2019 | 10 |
| coffee | 13/03/2019 | 28 |
| coffee | 14/03/2019 | 1 |
| tea | 11/03/2019 | 5 |
| tea | 12/03/2019 | 2 |
| tea | 13/03/2019 | 6 |
| tea | 14/03/2019 | 7 |
| Chocolate | 11/03/2019 | 30 |
| Chocolate | 11/03/2019 | 4 |
| Chocolate | 11/03/2019 | 15 |
| Chocolate | 11/03/2019 | 10 |
+-----------+------------+-------+
我实际上设法对我的产品进行排名,但没有达到我想要的方式。实际上,排名过程会增加行数。例如,巧克力排在第一位,但我们记录了4行,因此咖啡排在5位而不是2位。
+-----------+------------+-------+-----+------+
| product | date | sales | sum | rank |
+-----------+------------+-------+-----+------+
| coffee | 11/03/2019 | 15 | 54 | 5 |
| coffee | 12/03/2019 | 10 | 54 | 5 |
| coffee | 13/03/2019 | 28 | 54 | 5 |
| coffee | 14/03/2019 | 1 | 54 | 5 |
| tea | 11/03/2019 | 5 | 20 | 9 |
| tea | 12/03/2019 | 2 | 20 | 9 |
| tea | 13/03/2019 | 6 | 20 | 9 |
| tea | 14/03/2019 | 7 | 20 | 9 |
| Chocolate | 11/03/2019 | 30 | 59 | 1 |
| Chocolate | 11/03/2019 | 4 | 59 | 1 |
| Chocolate | 11/03/2019 | 15 | 59 | 1 |
| Chocolate | 11/03/2019 | 10 | 59 | 1 |
+-----------+------------+-------+-----+------+
sum
字段公式公式:
sum =
SUMX(
FILTER(
Table1;
Table1[product] = EARLIER(Table1[product])
);
Table1[sales]
)
rank
字段公式:
rank = RANKX(
ALL(Table1);
Table1[sum]
)
如您所见,我们获得以下排名:
我想将先前的结果转换为:
您能帮我改善我的排名系统,并获得一个奇妙的1、2、3而不是这个丑陋且不切实际的1、5、9吗?
如果您不知道答案,只需简单地回答问题♥
答案 0 :(得分:2)
幸运的是,这是一个简单的解决方法。
如果查看documentation for the RANKX
function,您会注意到一个可选的ties
参数,您可以将其设置为Skip
或Dense
。默认值为Skip
,但您需要Dense
。试试这个:
rank =
RANKX(
ALL(Table1);
Table1[sum];
;;
"Dense"
)
(由于我们没有指定可选的;
或value
参数,所以还有其他order
分隔符。)