所以我在 Power BI 中有一个表格,其中包含快照日期、公司名称和评级。我想对每个特定月份的评级进行排名(没有月份有重复的公司)。
举个简单的例子,如下表:
快照日期 | 公司名称 | 评分 |
---|---|---|
31/03/2021 | A | 1 |
31/03/2021 | B | 8 |
31/03/2021 | C | 6 |
31/03/2021 | D | 5 |
30/04/2021 | A | 4 |
30/04/2021 | B | 7 |
30/04/2021 | C | 9 |
30/04/2021 | D | 3 |
我想结束:
快照日期 | 公司名称 | 评分 | 排名 |
---|---|---|---|
31/03/2021 | A | 1 | 1 |
31/03/2021 | B | 8 | 4 |
31/03/2021 | C | 6 | 3 |
31/03/2021 | D | 5 | 2 |
30/04/2021 | A | 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)
但在这里我收到一个错误,指出 Early 函数中的参数类型不正确,我指的是不存在的较早行上下文。
我也试过:
Rank = Rankx(allexcept(table,
table[Snapshot_date].[month], table[Snapshot_date].[year]
),
Calculate(Sum(table[Rating])),,1)
然而,这只是对整个表格而不是每个月进行排名。
在只有两个月的上表的简单示例中,有效的是:
Rank = Rankx(filter(
all(table),
table[Snapshot_date].[month] = 1
&& table[Snapshot_date].[year] = 2021)
),
Calculate(Sum(table[Rating])),,1)
如果月份和年份是两个日期之一,这对两个月份都有效。但是,如果我使用的月份和年份不是两个日期之一,则排名都变为 1。
此外,我希望它可以在具有多个日期的大表上工作,并希望它是动态的。任何帮助将不胜感激!
答案 0 :(得分:0)
您需要从计算中删除过滤器上下文(行过滤器)。 ALLEXCEPT 真的很有用,把你的小组放在这里。
使用此措施:
Rank =
RANKX(
ALLEXCEPT( Sheet1,Sheet1[Snapshot_date] ),
CALCULATE(SUM(Sheet1[Rating]))
)