Power BI中如何按日期筛选器仅显示每个ID的最新日期记录?
Power BI动态日期筛选下的ID最新记录统计问题
需求描述
基于dim_Calendar的日期筛选器,在动态日期图表中,每个ID仅显示其筛选范围内的最新日期记录,并统计唯一ID的数量。
示例数据
| ID | Date/hour |
|---|---|
| 003 | 15-03-2024 14:00 |
| 003 | 15-03-2024 15:00 |
| 003 | 19-03-2024 15:00 |
| 009 | 15-03-2024 15:00 |
| 009 | 18-03-2024 15:00 |
预期效果
- 筛选范围
1-03-2024至31-03-2024:显示2个ID(003对应19-03、009对应18-03) - 筛选范围
1-03-2024至18-03-2024:显示2个ID(003对应15-03、009对应18-03) - 筛选范围
1-03-2024至17-03-2024:显示2个ID(均对应15-03)
尝试的解决方案及问题
第一次尝试的DAX度量值
CALCULATE( COUNTROWS( FILTER( 'MyTable', 'MyTable'[Date/hour] = CALCULATE( MAX('MyTable'[Date/hour]), ALLEXCEPT( 'MyTable' , 'MyTable'[ID] ) ) ) ) )
该度量值未达到预期效果。
第二次尝试:新增Rank列后编写度量值
先新增Rank列(值越小对应ID的最新记录),数据如下:
| ID | Date/hour | Rank |
|---|---|---|
| 003 | 15-03-2024 14:00 | 3 |
| 003 | 15-03-2024 15:00 | 2 |
| 003 | 19-03-2024 15:00 | 1 |
| 009 | 15-03-2024 15:00 | 2 |
| 009 | 18-03-2024 15:00 | 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
问题
单个ID时统计正常,但多ID场景下,仅统计拥有相同最低Rank的ID,无法得到预期的2个ID的结果。
疑惑点
以下DAX代码未按预期工作的原因是什么?
CALCULATE( MIN( 'MyTable'[Rank] ) , ALLSELECTED( d_Calendar[Date] ) )
内容的提问来源于stack exchange,提问作者Nika Kalichava
相关产品推荐
相关产品推荐

