如何使用DAX基于时间线切片器筛选符合日期范围的数据行
Power BI:用时间线切片器筛选与选中日期范围重叠的活动行
解决方案步骤
你已经创建了获取选中日期范围边界的度量值,接下来只需添加一个判断重叠的度量值,再通过视觉级筛选实现需求:
创建日期重叠判断度量值
编写DAX代码判断当前活动的时间范围是否与切片器选中的日期范围存在重叠,重叠的核心逻辑是:活动的开始日期 ≤ 选中的最大日期,且活动的结束日期 ≥ 选中的最小日期。IsDateOverlap = VAR SelectedMin = [SelectedMinDate] VAR SelectedMax = [SelectedMaxDate] VAR CurrentActivityStart = MAX('Test1'[StartDate]) VAR CurrentActivityEnd = MAX('Test1'[EndDate]) RETURN IF( CurrentActivityStart <= SelectedMax && CurrentActivityEnd >= SelectedMin, 1, 0 )代码说明:
- 用
MAX()获取当前行的活动起止日期(表格行上下文里每行的日期唯一,MAX()等价于直接取当前值) - 满足重叠条件返回1,否则返回0
- 用
应用视觉级筛选
- 选中需要筛选的表格视觉对象
- 在右侧「筛选」面板中,找到刚创建的
IsDateOverlap度量值 - 设置筛选条件为「等于1」,点击应用
验证示例规则
- 选中2024年2月:选中范围是
2024-02-01至2024-02-29,仅Id1的活动(2024-01-01至2024-04-30)满足重叠条件,显示该行 - 选中2024年7月:选中范围是
2024-07-01至2024-07-31,仅Id3的活动(2024-05-01至2024-10-31)满足重叠条件,显示该行 - 选中2024年9月至2025年1月:选中范围是
2024-09-01至2025-01-31,Id4的活动(2024-11-01至2024-12-31)满足重叠条件;若需排除Id3,可调整重叠逻辑为CurrentActivityStart >= SelectedMin && CurrentActivityEnd <= SelectedMax(即活动完全包含在选中范围内),可根据实际需求调整 - 选中2025年1月:选中范围是
2025-01-01至2025-01-31,所有活动的结束日期都早于2025-01-01,无满足条件的行,不显示任何内容
注意事项
- 确保Calendar表的
Date列是连续无缺失的日期序列,否则MIN('Calendar'[Date])和MAX('Calendar'[Date])无法正确获取选中范围的边界 - 时间线切片器必须绑定到Calendar表的
Date列,而非Test1表的起止日期列 - 若需多个视觉对象应用相同筛选,可将
IsDateOverlap度量值添加到页面级或报表级筛选中
内容的提问来源于stack exchange,提问作者Geezer
相关产品推荐
相关产品推荐

