每个月的 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]))
)
所以我在 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]))
)