DAX度量问题:财年同期对比度量返回零值排查
问题排查与解决方案
你的度量返回零值的核心原因是上下文筛选冲突:
在Equivalent Period 22/23的FILTER中,你限定了Der_Financial_Year = "2022/23",此时调用[YTD Period]时,这个度量会继承当前的筛选上下文——只能看到2022/23财年的数据,自然找不到2023/24的最大月份,MAX([FY_Month_No])返回空白,导致FY_Month_No <= 空白的条件永远不成立,最终求和结果为0。
修正方案
方案1:修复YTD Period度量,清除上下文筛选
修改YTD Period,添加ALL(Query[Der_Financial_Year])强制清除财年的外部筛选,确保无论当前上下文是什么,都能正确获取2023/24财年的最新月份:
YTD Period := CALCULATE(MAX([FY_Month_No]), ALL(Query[Der_Financial_Year]), Query[Der_Financial_Year] = "2023/24")
之后原有的Equivalent Period 22/23度量即可正常工作,或者你可以优化成更高效的写法(直接用CALCULATE的筛选参数替代FILTER):
Equivalent Period 22/23 := CALCULATE( SUM([NumberOfContacts]), Query[Der_Financial_Year] = "2022/23", Query[FY_Month_No] <= [YTD Period] )
方案2:整合逻辑到单个度量(推荐)
用变量存储2023/24的最新月份,减少度量依赖,逻辑更清晰:
Equivalent Period 22/23 := VAR CurrentYTDMonth = CALCULATE(MAX([FY_Month_No]), ALL(Query[Der_Financial_Year]), Query[Der_Financial_Year] = "2023/24") RETURN CALCULATE( SUM([NumberOfContacts]), Query[Der_Financial_Year] = "2022/23", Query[FY_Month_No] <= CurrentYTDMonth )
关键原理
ALL(Query[Der_Financial_Year])的作用是移除当前上下文对Der_Financial_Year列的所有筛选,让CALCULATE能访问到整个表中2023/24财年的数据,从而正确获取最大月份值。
内容的提问来源于stack exchange,提问作者Picalilli
相关产品推荐
相关产品推荐

