按总和排列类别(Power BI)

3

我需要为我的仪表板排列产品。每天我们都会存储产品的销售情况。结果,我们得到了这个数据集示例:

+-----------+------------+-------+
| 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:巧克力
  • 5:咖啡
  • 9:茶

改进

我想将之前的结果转换为:

  • 1:巧克力
  • 2:咖啡
  • 3:茶

你能帮我改进我的排名系统并获得一个漂亮的1、2、3而不是这个丑陋和不实用的1、5、9吗?

如果您不知道答案,请通过点赞此问题来提供帮助 ♥

1个回答

2

幸运的是,这很容易解决。

如果您查看RANKX函数的文档,您会注意到一个可选的ties参数,您可以将其设置为SkipDense。默认值是Skip,但您需要Dense。请尝试以下操作:

rank =
RANKX(
    ALL(Table1);
    Table1[sum];
    ;;
    "Dense"
)

这些额外的;分隔符是因为我们没有指定可选的valueorder参数。


谢谢!我的一个朋友给我发了这个解决方案:CALCULATE(DISTINCTCOUNT(Table1[ sum ]);FILTER(Table1;Table1[ sum ]>= EARLIER(Table1[ sum ]))),但是你的更好。 - Ceci Semble Absurde.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接