如何在DAX中按Source File计算对应最新Fiscal Week num的金额?
按Source File获取各公司最新财周金额的DAX修改方案
原代码的问题在于全局取最大财周,无法按每个公司(Source File)单独计算其最新财周的金额,以下是两种可行的修改方案:
方案一:保留Source File上下文计算最大财周
Current Week Amt = VAR CurrentFiscalWeek = CALCULATE( MAX('DF'[Fiscal Week num]), ALLEXCEPT('DF', 'DF'[Source File]) ) RETURN CALCULATE( [total Measure], 'DF'[Fiscal Week num] = CurrentFiscalWeek )
- 核心改动:用
ALLEXCEPT('DF', 'DF'[Source File])清除除Source File外的所有筛选上下文,让MAX计算仅针对当前行的Source File取其最大财周,而非全局最大值。 - 适用场景:当报表按Source File分组展示时,每个公司会自动匹配自身最新财周的金额。
方案二:分组计算后聚合
Current Week Amt = SUMX( SUMMARIZE( 'DF', 'DF'[Source File], "@MaxWeek", MAX('DF'[Fiscal Week num]) ), CALCULATE( [total Measure], 'DF'[Fiscal Week num] = [@MaxWeek] ) )
- 逻辑说明:先通过
SUMMARIZE按Source File分组,计算每个组的最大财周;再用SUMX遍历每个分组,计算对应最大财周的[total Measure]并聚合结果。 - 适用场景:需要更灵活的分组逻辑,或存在多维度交叉展示时。
注意事项
确保[total Measure]是正确的聚合度量(如SUM/COUNT等),避免因筛选上下文冲突导致结果异常。
内容的提问来源于stack exchange,提问作者symkly
相关产品推荐
相关产品推荐

