每个月的 Rankx 函数 DAX Power BI

Rankx function for every month DAX Power BI

所以我在 Power BI 中有一个 table,其中包含快照日期、公司名称和评级。我想对每个特定月份的评级进行排名(没有月份有重复的公司)。

作为一个简单的例子,下面的table:

Snapshot_date 公司名称 评分
31/03/2021 一个 1
31/03/2021 B 8
31/03/2021 C 6
31/03/2021 D 5
30/04/2021 一个 4
30/04/2021 B 7
30/04/2021 C 9
30/04/2021 D 3

我想结束:

Snapshot_date 公司名称 评分 排名
31/03/2021 一个 1 1
31/03/2021 B 8 4
31/03/2021 C 6 3
31/03/2021 D 5 2
30/04/2021 一个 4 2
30/04/2021 B 7 3
30/04/2021 C 9 4
30/04/2021 D 3 1

看起来度量应该是这样的:

Rank = Rankx(filter(
                    all(table),
                    table[Snapshot_date].[month] = Earlier(table[Snapshot_date].month)
                    && table[Snapshot_date].[year] = Earlier(table[Snapshot_date].year)
                     ),
                     Calculate(Sum(table[Rating])),,1)

但是我在这里遇到一个错误,指出早期函数中的参数类型不正确,我指的是不存在的早期行上下文。

我也试过:

Rank = Rankx(allexcept(table,
                    table[Snapshot_date].[month], table[Snapshot_date].[year]
                     ),
                     Calculate(Sum(table[Rating])),,1)

然而,这只是对整个 table 而不是每个月的排名。

在上面 table 的简单示例中,只有两个月,有效的是:

Rank = Rankx(filter(
                    all(table),
                    table[Snapshot_date].[month] = 1
                    && table[Snapshot_date].[year] = 2021)
                     ),
                     Calculate(Sum(table[Rating])),,1)

如果月份和年份是两个日期之一,这对两个月份都有效。但是,如果我使用的月份和年份不是两个日期之一,则排名全部变为 1。

我还希望它能在具有许多日期的大型 table 上工作,并希望它是动态的。任何帮助将不胜感激!

您需要从计算(行过滤器)中删除过滤器上下文。 ALLEXCEPT 真的很有用,把你的群放在这里。

使用此措施:

Rank = 

RANKX( 
            ALLEXCEPT( Sheet1,Sheet1[Snapshot_date] ),
             CALCULATE(SUM(Sheet1[Rating]))
  )