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

DAX/PowerBI带筛选求和问题:按月统计符合条件的金额

按月统计符合条件的金额总和:解决方案与代码修正

嘿,我来帮你搞定这个按月统计金额的问题!先理清楚核心需求,再分析现有代码的问题,最后给你调整后的可行方案~

你的核心需求明确

需要按月计算满足以下两个条件的所有ID的金额总和:

  • 结束日期(End Date)< 协议日期(Agreement Date)
  • 结束日期(End Date)早于当前展示的统计月份(比如统计2019年3月数据时,只计入End Date在2019年3月之前的记录)

现有DAX代码的问题分析

你当前的代码:

Result = CALCULATE ( SUM ( 'Report Diario'[Amount] ); USERELATIONSHIP ( Calendario[Date]; 'Report Diario'[End Date] ); FILTER ( 'Report Diario'; 'Report Diario'[End Date] < 'Report Diario'[Agreement date] ) )

有两个关键问题导致结果不符合预期:

  1. 缺少"End Date < 统计月份"的筛选逻辑:代码只关联了End Date到日历表,但没有明确限制End Date必须早于当前统计的月份,会导致同月份的End Date被错误计入。
  2. FILTER的上下文冲突:直接在CALCULATE里用FILTER做全表筛选,会和USERELATIONSHIP激活的日期关系上下文冲突,导致筛选逻辑没有正确作用到每个月份维度上。

修正后的DAX代码

下面是调整后的代码,我会逐部分解释设计思路:

Monthly Total = 
VAR CurrentMonthEnd = EOMONTH(SELECTEDVALUE(Calendario[Date]), 0)
RETURN
CALCULATE(
    SUM('Report Diario'[Amount]),
    -- 临时激活日历表与End Date的关系,让统计按End Date的月份分组
    USERELATIONSHIP(Calendario[Date], 'Report Diario'[End Date]),
    -- 第一个核心条件:End Date 必须小于 Agreement Date
    'Report Diario'[End Date] < 'Report Diario'[Agreement Date],
    -- 第二个核心条件:End Date 必须早于当前统计月份
    'Report Diario'[End Date] <= CurrentMonthEnd,
    MONTH('Report Diario'[End Date]) < MONTH(CurrentMonthEnd)
        || YEAR('Report Diario'[End Date]) < YEAR(CurrentMonthEnd),
    -- 可选:过滤Agreement Date为空的记录,避免空值导致的逻辑错误
    NOT(ISBLANK('Report Diario'[Agreement Date]))
)

代码细节解释

  1. CurrentMonthEnd变量:获取当前筛选月份的最后一天,作为统计的时间边界,确保能准确判断End Date是否在当前月份之前。
  2. USERELATIONSHIP:激活日历表与End Date的非激活关系(建议默认将End Date的关系设为非激活,避免和其他日期字段冲突),让DAX能按End Date的月份进行分组计算。
  3. 双条件筛选:
    • 直接用列筛选替代FILTER,更高效且上下文更清晰,确保End Date < Agreement Date的条件正确应用。
    • 通过日期+年月的双重判断,严格保证End Date早于当前统计的月份,避免同月份的End Date被错误统计。
  4. 空值处理:最后一行的可选条件,用来过滤Agreement Date为空的记录,避免空值导致的逻辑判断错误。

额外注意事项

  • 确保你的Calendario日历表是完整的(包含所有需要统计的日期),并且和Report Diario的End Date、Agreement Date都建立了关系(其中End Date的关系设置为非激活状态)。
  • 如果报表是通过月份切片器展示,SELECTEDVALUE(Calendario[Date])会自动获取当前选中的月份,无需额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:17:03