如何根据选定时间段内的最新日期仅显示每个 ID 一次?

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

我面临 PBI 挑战。用户希望查看动态日期图表中的每个 ID,但要查看基于日期过滤器的最新日期。

例如,我的表格有列:

身份证 日期/时间
003 2024年3月15日14:00
003 2024年3月15日15:00
003 2024年3月19日15:00
009 2024年3月15日15:00
009 2024年3月18日15:00

我有一个日期图表,其中显示 ID 的唯一计数。 如果我的日期切片器(来自 dim_Calendar)在 1-03-2024 到 31-03-2024 之间选择,我只想看到 2 个 IDS - 2024 年 3 月 18 日的 ID 009 和 2024 年 3 月 19 日的 ID 003; 如果我的日期切片器是从 1-03-2024 到 18-03-2024 选择的,我只想看到 2 个 IDS - 2024 年 3 月 18 日的 ID 009 和 2024 年 3 月 15 日的 ID 003; 再次,如果我的日期切片器是从 1-03-2024 到 17-03-2024 选择的,我只想看到 2 个 IDS - 2024 年 3 月 15 日的 ID 009 和 2024 年 3 月 15 日的 ID 003; 因此,这样我只能在切片器选择中看到具有最新日期的日期;

我已经尝试了很多措施,但不知何故,它们仍然不起作用。

CALCULATE(
    COUNTROWS(
        FILTER(
            'MyTable',
            'MyTable'[Date/hour] = 
                CALCULATE(
                    MAX('MyTable'[Date/hour]),
                    ALLEXCEPT(
                        'MyTable' ,
                        'MyTable'[ID]
                    )
                )
        )
    )
)

enter image description here

更新: 我添加了一个新的排名列

身份证 日期/时间 排名
003 2024年3月15日14:00 3
003 2024年3月15日15:00 2
003 2024年3月19日15:00 1
009 2024年3月15日15:00 2
009 2024年3月18日15:00 1

因此,Rank 列中的最低值是每个 ID 的最新行。 我写下了这个措施:

1 test =  VAR _min_rank = 
>     CALCULATE(
>         MIN( 'MyTable'[Rank] ) ,
>         ALLSELECTED( d_Calendar[Date] )
>     ) VAR _table =
>     FILTER(
>         ADDCOLUMNS(
>             SUMMARIZE(
>                 'MyTable' , 
>                 'MyTable'[ID] ,
>                 'MyTable'[Rank]
>             ) ,
>             "#latest_date" ,
>             CALCULATE(
>                 MIN( 'MyTable'[Rank] ) ,
>                 ALLSELECTED( d_Calendar[Date] ) 
>             )
>         ) ,
>         'MyTable'[Rank] = [#latest_date]
>     ) VAR RESULT = 
>     COUNTROWS( _table ) 
> 
> RETURN RESULT

这几乎给了我预期的结果,但是当我只选择了 1 个 ID 时,每当我移动日期切片器时,它都会给我结果,但是当选择了多个 ID 时,它会采用最低排名,并且仅显示共享相同最低排名的 ID 。 :(

为什么

        CALCULATE(
            MIN( 'MyTable'[Rank] ) ,
            ALLSELECTED( d_Calendar[Date] ) 
        )
this part does not work as it is expected to work? :(
powerbi dax powerbi-desktop measure
1个回答
0
投票

我希望我正确理解了您的要求。这可以通过以下措施来实现。该措施的用例可能会有所不同。

Rank count =
VAR maxselectedval =
    MAX ( 'Table'[Date/hour] )
VAR minselectedval =
    MIN ( 'Table'[Date/hour] )
RETURN
    CALCULATE (
        DISTINCTCOUNT ( 'Table'[ID] ),
        'Table'[Date/hour] >= minselectedval
            && 'Table'[Date/hour] <= maxselectedval
    ) 

如果日期在下面之间,则会给出 2

enter image description here

如果日期在下面之间,它将给出 1 enter image description here

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