我面临 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]
)
)
)
)
)
更新: 我添加了一个新的排名列
身份证 | 日期/时间 | 排名 |
---|---|---|
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? :(
我希望我正确理解了您的要求。这可以通过以下措施来实现。该措施的用例可能会有所不同。
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