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

如何在DAX计算列中按产品累加前序行数据?

在DAX计算列中实现按产品分组的累计销售额

要实现按产品分组、累加前序行销售额的计算列,核心是通过筛选上下文限定同一产品且排序在当前行之前的记录,再对销售额求和。需要注意:DAX表格本身是无序的,必须依赖一个排序字段(比如行号、交易日期等)来明确"前序行"的顺序,否则累计结果会不稳定。

DAX代码示例

假设你的表名为销售数据,且已添加用于排序的行号列(可通过Power Query添加索引列实现),计算列代码如下:

累计值 = 
VAR 当前产品 = '销售数据'[产品]
VAR 当前行号 = '销售数据'[行号]
RETURN
SUMX(
    FILTER(
        '销售数据',
        '销售数据'[产品] = 当前产品 && '销售数据'[行号] <= 当前行号
    ),
    '销售数据'[销售额]
)

代码说明

  • 当前产品:捕获当前行的产品标识,确保只累计同一产品的销售额
  • 当前行号:捕获当前行的排序标识,限定只累计行号小于等于当前行的记录
  • FILTER:筛选出符合产品匹配、行号在前的所有行
  • SUMX:对筛选后的行逐行求和,得到累计值

无排序字段的临时解决方案

如果暂时没有排序字段,可通过RANKX生成临时排序(但不推荐用于大数据表,性能较差):

累计值 = 
VAR 当前产品 = '销售数据'[产品]
VAR 当前行排名 = 
    RANKX(
        FILTER('销售数据', '销售数据'[产品] = 当前产品),
        '销售数据'[销售额],, ASC, DENSE
    )
RETURN
SUMX(
    FILTER(
        '销售数据',
        '销售数据'[产品] = 当前产品 && 
        RANKX(
            FILTER('销售数据', '销售数据'[产品] = 当前产品),
            '销售数据'[销售额],, ASC, DENSE
        ) <= 当前行排名
    ),
    '销售数据'[销售额]
)

注意:优先使用固定的排序字段(如行号、日期),RANKX方案仅适用于销售额无重复或允许相同销售额同排名的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:35:22