Power BI度量值开发求助:统计近7天Measure<-0.1的天数
问题分析
需要创建度量值New_measure,实现:
- 针对每个日期,统计**过去7天(含当日)**内
Measure值小于-0.1的记录数 - 适配现有切片器的筛选条件
原代码核心问题:
- 手动构建辅助表的方式易引发上下文冲突,计算逻辑不够稳定
- 未明确处理行上下文与筛选上下文的转换,导致结果不符合预期
修正后的DAX实现方案
以下两种方案均能满足需求,且完美适配切片器筛选:
方案一:时间智能函数+筛选上下文控制
New_measure = VAR CurrentDate = MAX('table'[Date]) -- 生成当前日期往前推7天的日期范围(包含当日) VAR DateRange = DATESINPERIOD('table'[Date], CurrentDate, -7, DAY) RETURN CALCULATE( -- 统计范围内符合条件的记录数 COUNTROWS(FILTER('table', [Measure] < -0.1)), -- 应用7天日期范围筛选 DateRange, -- 保留切片器全局筛选,同时移除当前行的日期限制 ALLSELECTED('table') )
方案二:简化版(适用于每日仅一条记录的场景)
New_measure = VAR CurrentDate = MAX('table'[Date]) RETURN CALCULATE( COUNTROWS('table'), [Measure] < -0.1, DATESINPERIOD('table'[Date], CurrentDate, -7, DAY), ALLSELECTED('table') )
代码说明
CurrentDate = MAX('table'[Date]):获取当前行上下文对应的日期DATESINPERIOD(...):自动生成连续7天的日期范围,无需手动计算日期差,兼容跨月/跨年场景CALCULATE(...):通过参数叠加实现筛选逻辑,ALLSELECTED('table')确保切片器筛选生效的同时,解除当前行日期对计算范围的限制COUNTROWS(FILTER(...)):精准统计范围内满足Measure < -0.1的记录数量
内容的提问来源于stack exchange,提问作者Mateus Mattos
相关产品推荐
相关产品推荐

