DAX滚动总计问题:基于滑块最小日期返回正确累计值
问题分析与解决方案
问题核心在于原度量仅清除了DimDate[Date]列的筛选,但First of Month切片器的筛选仍然生效,导致滑块范围内的部分日期(如2024-03-01)因不符合First of Month的筛选条件被排除,最终累计结果仅包含4月的数据。以下是两种针对性调整方案:
方案1:完全忽略First of Month切片器,仅遵循日期滑块范围
该方案适用于希望滚动累计完全以日期滑块的选择为准,不受First of Month切片器影响的场景:
Amount Rolling = VAR MinSliderDate = MIN( ALLSELECTED( 'DimDate'[Date] ) ) VAR CurrentDate = MAX( 'DimDate'[Date] ) RETURN CALCULATE ( [Amount], ALL( 'DimDate' ), -- 清除DimDate表的所有筛选,包括First of Month的限制 DATESBETWEEN( 'DimDate'[Date], MinSliderDate, CurrentDate ) )
方案2:保留First of Month的显示控制,累计滑块范围内所有日期
该方案适用于希望通过First of Month切片器控制视觉对象显示的月份,但滚动累计仍包含滑块范围内所有日期的场景:
Amount Rolling = VAR SliderDateRange = CALCULATETABLE( VALUES( 'DimDate'[Date] ), ALL( 'DimDate'[First of Month] ) -- 忽略First of Month筛选,获取滑块选中的所有日期 ) VAR MinSliderDate = MINX( SliderDateRange, 'DimDate'[Date] ) VAR CurrentMaxDate = MAX( 'DimDate'[Date] ) RETURN CALCULATE ( [Amount], FILTER ( ALL( 'DimDate'[Date] ), 'DimDate'[Date] >= MinSliderDate && 'DimDate'[Date] <= CurrentMaxDate ), ALL( 'DimDate'[First of Month] ) -- 确保滑块范围内的所有日期都被纳入计算 )
效果说明
两种方案均能确保当日期滑块最小日期设为2024-03-01时,滚动累计返回30+40=70的预期结果,核心是清除了First of Month列对日期范围的限制,让滑块选中的所有日期都能参与累计计算。
内容的提问来源于stack exchange,提问作者whytheq
相关产品推荐
相关产品推荐

