创建一个新的计算 table 每年都有最高资助类别

create a new calculated table having top funded categories each year

A table 包含 3 列,即 Year、Category 和 Amount,其中 year 和 amount 是一个计算列。

Table 1:

+------+----------+--------+
| Year | Category | amount |  
+------+----------+--------+
| 2016 | A        |     50 |  
| 2017 | B        |     85 |  
| 2015 | A        |     90 |  
| 2017 | C        |    135 |  
| 2016 | C        |     55 |  
| 2015 | B        |    180 |  
| 2017 | A        |     30 |  
| 2016 | B        |     45 |  
| 2015 | C        |     60 |  
+------+----------+--------+

现在我需要使用 DAX 创建一个新的 table,其中前 2 行每年的金额最高,即如下给出的输出 table

+------+----------+--------+
| Year | Category | amount |
+------+----------+--------+
| 2015 | B        |    180 |
|      | A        |     90 |
| 2016 | c        |     55 |
|      | A        |     50 |
| 2017 | C        |    135 |
|      | B        |     85 |
+------+----------+--------+

我的 DAX:

New Table = CALCULATE(TOPN(3, 'Table 1', 'Table 1'[Amount],DESC),ALLEXCEPT('Table 1','Table 1'[Year]))

但我遇到了错误。那么有人可以建议我继续使用正确的 DAX 吗?

您可以使用以下 DAX 创建一个 Rank 列:

Rank = 
COUNTROWS(
    FILTER(
        'Table 1',
        'Table 1'[Year] = EARLIER('Table 1'[Year]) &&
        'Table 1'[Amount] > EARLIER('Table 1'[Amount])
    )
) + 1

然后你可以过滤 table 其中 Rank 小于或等于 2.