You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DAX中如何让MyMeasure获取SUMMARIZECOLUMNS筛选后DimDate的最小日期?

解决DAX中获取筛选后全局最小日期的问题

这个问题我之前也碰到过,核心是要搞清楚行上下文和筛选上下文对度量值计算的影响,咱们一步步来解决。

错误原因分析

你之前用的公式:

MyMeasure:=CALCULATE( MIN( DimDate[Actual_Date] ), ALL( DimDate[Actual_Date] ) )

之所以返回每行对应的日期,是因为ALL(DimDate[Actual_Date])只清除了Actual_Date列的筛选,但SUMMARIZECOLUMNS生成的行上下文(当前行的Year和Month_Of_Year)会自动转成筛选上下文传给CALCULATE,所以MIN还是只计算当前年份+月份范围内的最小日期,不是整个2016年的全局最小值。

正确的DAX写法

有两种简洁的方式能实现你的需求:

方式1:精准移除行上下文的Year/Month筛选

直接清除行上下文带来的Year和Month_Of_Year筛选,同时保留外部的2016年全局筛选:

MyMeasure := CALCULATE( MIN(DimDate[Actual_Date]), ALL(DimDate[Year], DimDate[Month_Of_Year]) )

把这个度量值代入你的SUMMARIZECOLUMNS,完整表达式如下:

EVALUATE
SUMMARIZECOLUMNS(
    'DimDate'[Year],
    'DimDate'[Month_Of_Year],
    FILTER('DimDate', 'DimDate'[Year] = 2016 ),
    "MyMeasure", CALCULATE( MIN(DimDate[Actual_Date]), ALL(DimDate[Year], DimDate[Month_Of_Year]) )
)

方式2:用ALLSELECTED保留外部筛选

ALLSELECTED会自动保留外部应用的筛选(也就是你加的2016年筛选),同时清除行上下文的所有筛选,写法更简洁:

MyMeasure := CALCULATE( MIN(DimDate[Actual_Date]), ALLSELECTED(DimDate) )

代入后的完整表达式:

EVALUATE
SUMMARIZECOLUMNS(
    'DimDate'[Year],
    'DimDate'[Month_Of_Year],
    FILTER('DimDate', 'DimDate'[Year] = 2016 ),
    "MyMeasure", CALCULATE( MIN(DimDate[Actual_Date]), ALLSELECTED(DimDate) )
)

效果验证

这两种写法都会让MyMeasure在每一行中返回2016年的最小日期(1-Jan-2016),完全不受当前行的年份和月份限制。


内容的提问来源于stack exchange,提问作者TDP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:50:17