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

DAX实现带目标上限的累计求和(Running Total)求助

带目标上限的DAX累计求和解决方案

需求说明

需要实现带目标上限的累计求和逻辑:累计值未超过设定目标时正常累加,一旦超过目标则保持上一次的累计值,后续不再更新。示例中目标值为14,对应逻辑与Excel公式IF(D2+B3 >14,D2, D2+B3)一致。

解决方案DAX公式

RT(Target=14) = 
VAR TargetValue = 14 // 可替换为参数表字段实现动态调整
VAR CurrentRanking = MAX('Dataset'[Ranking])
VAR FilteredRows = 
    FILTER(
        ALLSELECTED('Dataset'),
        'Dataset'[Ranking] <= CurrentRanking
    )
VAR CumulativeWithCap = 
    SUMX(
        FilteredRows,
        VAR PriorRunningTotal = 
            CALCULATE(
                [RT(Target=14)],
                FILTER(FilteredRows, 'Dataset'[Ranking] < EARLIER('Dataset'[Ranking]))
            )
        RETURN
            IF(
                PriorRunningTotal >= TargetValue,
                0,
                MIN('Dataset'[Revenue], TargetValue - PriorRunningTotal)
            )
    )
RETURN
    CumulativeWithCap

公式逻辑解释

  1. 定义目标值:TargetValue变量设定累计上限,若需动态调整,可替换为SELECTEDVALUE('参数表'[目标值]),配合切片器实现实时修改目标。
  2. 确定累计范围:通过FilteredRows筛选出当前排名及之前的所有行,确保累计范围匹配上下文。
  3. 逐行计算贡献:
    • 用SUMX迭代每一行,递归计算当前行之前的累计值PriorRunningTotal。
    • 若之前的累计值已达到目标,当前行贡献0(不再累加);否则,贡献当前营收与剩余额度(目标值-之前累计值)的较小值,保证累计不超过上限。
  4. 返回最终结果:累加所有行的有效贡献,得到带上限的累计值。

验证结果

将公式应用到数据集后,结果与示例完全匹配:

YearRankingCompany nameRevenueRT(Target=14)
20221ABC1010
20222DEF910
20223GHI313
20234JKL114
20235MNO114

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 04:22:36