基于日期和密钥的动态排名

问题描述 投票:0回答:1

这是我的示例输入数据表:

entry_id entry_date company_id objective_title objective_status key                   objective_rank
1        2024-03-01 company_1  objective_1     Completed        company_1_objective_1 1
2        2024-12-30 company_1  objective_1     In Progress      company_1_objective_1 2
3        2024-01-02 company_2  objective_2     Not Started      company_2_objective_2 1
4        2023-11-10 company_3  objective_3     Completed        company_3_objective_3 1

如您所见,我已经创建了一个计算列,用于使用以下 DAX 公式进行排名:

objective_rank = 
    RANKX(
        FILTER(
            table_1,
            table_1[key] = EARLIER(table_1[key])
        ),
        table_1[entry_date],
        ,
        DESC
    )

当我尝试查看所有日期的每个最新目标状态的关键计数时,这给了我正确的结果(排名 = 1):

objective_status count_key
Not Started      1
In Progress      0
Completed        2

现在我想要一个切片器,允许用户选择特定的日期范围(基于entry_date)。

因此,如果entry_date 是例如< 2023-12-31 then I'd like to see the following output:

objective_status count_key
Not Started      0
In Progress      1
Completed        1

因为虽然 Objective_1“进行中”,但它不是最新的整体,而是给定日期范围内的最新的。

如何实现?

我曾尝试在 Microsoft Fabric 社区上使用对类似问题的回复,但它们似乎对我的案例不起作用。

powerbi dax powerquery powerbi-desktop
1个回答
0
投票

我使用SelectedMaxDate根据切片器选择动态捕获最新的entry_date。 然后我创建了一个表变量LatestEntries来按键汇总table_1,查找最大entry_date并将其与日期选择范围内每个键的最新objective_status相对应。

LatestStatusCount = 
VAR SelectedMaxDate = MAX(table_1[entry_date]) 
VAR LatestEntries = 
    FILTER(
        ADDCOLUMNS(
            SUMMARIZE(table_1, table_1[key], "MaxDate", MAX(table_1[entry_date])),
            "LatestStatus", CALCULATE(MAX(table_1[objective_status]), FILTER(table_1, table_1[entry_date] = [MaxDate]))
        ),
        [MaxDate] <= SelectedMaxDate
    )
RETURN
    SUMX(
        LatestEntries,
        CALCULATE(
            COUNTROWS(table_1),
            FILTER(
                ALLSELECTED(table_1[objective_status]),
                table_1[key] = EARLIER(table_1[key]) && table_1[objective_status] = EARLIER([LatestStatus])
            )
        )
    )

© www.soinside.com 2019 - 2024. All rights reserved.