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

PowerBI中显示SKU时按产品组代码计算TTM销量的实现方法

按产品组级别计算TTM销量(适配SKU视图)

我在计算库存周转天数时,采用过去12个月(TTM)销量除以365得到日均销量。这个计算在产品组代码(PRODUCT GROUP CODE)层级展示时正常,能看到不含规格的产品组整体TTM情况,但将TTM销量字段加入SKU/物料代码(ITEM CODE)表后,系统会自动按单个SKU计算,无法呈现产品组级别的汇总视图。

需求是:即使在SKU或物料代码表中展示,TTM销量公式也始终在产品组代码级别执行,原公式如下:

TTM SOLD =
CALCULATE (
    'Sales Invoice Transactions'[Sales Invoice Quantity],
    DATESINPERIOD ( 'Date'[Date], LASTDATE ( 'Date'[Date] ), -12, MONTH )
)

我尝试过用REMOVEFILTERS或ALLEXCEPT调整,但结果始终是全公司的TTM总销量,错误公式示例:

TTM SOLD = 
CALCULATE (
    'Sales Invoice Transactions'[Sales Invoice Quantity], 
    DATESINPERIOD( 'Date'[Date], LASTDATE( 'Date'[Date]), -12, MONTH), 
    ALLEXCEPT(PRODUCTGROUPCODE)
)

场景示例

每个SKU归属对应产品组,按产品组计算近3个月平均销量时结果符合预期,但按SKU列表展示时,系统会按单个SKU计算平均值。我希望所有SKU行都显示对应产品组的整体平均值:

产品组SKU1月销量2月销量3月销量
CapsCap1211
CapsCap2545
CapsCap3654
ScrewsScrew1323
ScrewsScrew2232
BoxesBox1545

比如Caps组的3个月总销量为(2+5+6)+(1+4+5)+(1+5+4)=33,平均销量为33/3=11,我希望Cap1、Cap2、Cap3这三行的平均销量都显示11,而非各自单独计算的结果。


解决方案

问题出在ALLEXCEPT的参数使用错误:该函数需要传入表名,再指定要保留筛选的列,而非直接传入列名。以下是两种可行的DAX公式:

方法1:使用ALLEXCEPT保留产品组筛选

假设包含产品组和SKU的表名为Product,公式如下:

TTM SOLD = 
CALCULATE (
    'Sales Invoice Transactions'[Sales Invoice Quantity],
    DATESINPERIOD ( 'Date'[Date], LASTDATE ( 'Date'[Date] ), -12, MONTH ),
    ALLEXCEPT ( 'Product', 'Product'[PRODUCT GROUP CODE] )
)

该公式会移除Product表中除PRODUCT GROUP CODE之外的所有筛选,确保计算始终基于当前产品组的范围。

方法2:使用REMOVEFILTERS移除SKU筛选

直接移除SKU/物料代码的筛选,保留产品组的筛选条件:

TTM SOLD = 
CALCULATE (
    'Sales Invoice Transactions'[Sales Invoice Quantity],
    DATESINPERIOD ( 'Date'[Date], LASTDATE ( 'Date'[Date] ), -12, MONTH ),
    REMOVEFILTERS ( 'Product'[ITEM CODE] )
)

两种方法都能实现:在SKU视图中,每个SKU行显示的是其所属产品组的TTM总销量,而非单个SKU的销量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:46:24