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

Power Pivot使用DAX计算累计和时所有季节库存值相同问题

DAX销售季节维度累计库存计算数值重复问题修复

问题现象

  • 计算目标:针对SATISSEZON(销售季节)维度,计算库存字段DSSTOK的累计运行总和
  • 初始编写的DAX度量值如下,无法满足维度拆分计算需求:
CALCULATE([first value];FILTER(ALL('MerchDate');
'MerchDate'[Date]<=MAX(DATALAR[Date])))
  • 调整逻辑后所有季节维度对应的库存数值完全一致,调整后代码如下:
CALCULATE(SUM([DSSTOK])
;FILTER(ALL(MerchTarih);
    MerchTarih[HAREKETTARIHI]<=MAX(DATALAR[HAREKETTARIHI]))
    ;VALUES(UrunListesi[Pr_Detail])
    ;VALUES(Lokasyonlar[LOKASYONKODU])
    ;ALLSELECTED(SatisSezonu[SATISSEZONU]))

问题根因

  1. 代码中ALLSELECTED(SatisSezonu[SATISSEZONU])语句会清除当前单元格上下文对销售季节的筛选,导致每个季节单元格计算时都会拉取所有选中季节的全量库存数据,是所有季节数值完全一致的核心原因
  2. 日期筛选部分使用ALL(MerchTarih)会清除日期表上所有维度的原有筛选上下文,破坏了产品、位置、季节等维度和日期维度的联动关系
  3. 手动使用VALUES()限定维度筛选的写法鲁棒性差,可视化维度调整时容易出现上下文匹配异常

修复方案

使用以下DAX度量值替换原有代码即可(如果本地Power BI/SSAS环境使用分号作为参数分隔符,将代码中逗号替换为分号即可):

累计库存 = 
CALCULATE(
    SUM(DATALAR[DSSTOK]),
    FILTER(
        ALLSELECTED(MerchTarih[HAREKETTARIHI]),
        MerchTarih[HAREKETTARIHI] <= MAX(DATALAR[HAREKETTARIHI])
    ),
    ALLSELECTED(UrunListesi),
    ALLSELECTED(Lokasyonlar)
)

调整点说明

  • 将日期筛选的ALL(MerchTarih)替换为ALLSELECTED(MerchTarih[HAREKETTARIHI]),仅清除日期列本身的筛选,保留其他维度的筛选上下文,同时累计范围仅覆盖用户选中的日期区间,不会拉取全量历史数据
  • 删除错误的ALLSELECTED(SatisSezonu[SATISSEZONU])语句,保留销售季节维度的原生筛选上下文,每个季节单元格只会计算对应季节范围内的累计值
  • 移除手动硬编码的VALUES()维度限定,DAX会自动继承当前可视化行列的维度筛选上下文,度量值可适配不同维度组合的展示需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:45:36