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

Power BI DAX无日期场景下按指定列计算累计总和求助

Power BI DAX 按指定列计算累计运行总和方案

核心逻辑

先排除目标数值列中的空值与数值为0的行,仅保留数值≥1的记录,再按该数值列的升序逻辑,计算0/1列的累计求和。

方案一:计算列(适合直接在表中生成累计值)

假设你的数据表为FactTable,0/1列名为FlagColumn,分组排序的数值列名为NumberColumn,创建计算列的DAX公式如下:

累计运行总和 = 
VAR 当前数值 = [NumberColumn]
RETURN
CALCULATE(
    SUM(FactTable[FlagColumn]),
    FILTER(
        ALL(FactTable),
        NOT(ISBLANK(FactTable[NumberColumn])) && 
        FactTable[NumberColumn] >= 1 && 
        FactTable[NumberColumn] <= 当前数值
    )
)

公式解释

  • VAR 当前数值 = [NumberColumn]:捕获当前行的数值列值,作为累计的上限
  • CALCULATE + SUM:计算符合筛选条件的FlagColumn总和
  • FILTER(ALL(FactTable), ...):遍历全表筛选有效行:
    • NOT(ISBLANK(FactTable[NumberColumn])):排除数值列为空的行
    • FactTable[NumberColumn] >= 1:仅保留数值≥1的记录
    • FactTable[NumberColumn] <= 当前数值:仅保留数值不超过当前行的记录,实现累计逻辑

方案二:度量值(适合可视化中动态计算)

如果需要在报表可视化组件中动态展示累计值,使用度量值更灵活:

累计运行总和_度量值 = 
VAR 选中数值 = MAX(FactTable[NumberColumn])
RETURN
CALCULATE(
    SUM(FactTable[FlagColumn]),
    FILTER(
        ALL(FactTable),
        NOT(ISBLANK(FactTable[NumberColumn])) && 
        FactTable[NumberColumn] >= 1 && 
        FactTable[NumberColumn] <= 选中数值
    )
)

特殊情况处理

如果NumberColumn存在重复数值,需要确保累计顺序稳定,可以结合表中的唯一主键(如ID列)调整筛选逻辑,示例:

累计运行总和_去重版 = 
VAR 当前数值 = [NumberColumn]
VAR 当前ID = [ID列]
RETURN
CALCULATE(
    SUM(FactTable[FlagColumn]),
    FILTER(
        ALL(FactTable),
        NOT(ISBLANK(FactTable[NumberColumn])) && 
        FactTable[NumberColumn] >= 1 && 
        (FactTable[NumberColumn] < 当前数值 || 
         (FactTable[NumberColumn] = 当前数值 && FactTable[ID列] <= 当前ID))
    )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:52:14