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

如何编写DAX度量值汇总主仓库与对应-SW子仓库的库存

DAX度量值实现主仓库与对应-SW子仓库库存求和

数据集

Warehouse  Stock
GH         6
NSWA       10
NSWA-SW    20
NSWA-01    5
QLDA       15
QLDA-SW    30
GSWG       40
WASA       10
WASA-SW    4
WASA-07    11

需求说明

需要编写DAX度量值,实现以下逻辑:

  • 对所有后缀为-SW的子仓库,以及它们对应的主仓库(比如NSWA对应NSWA-SW)的库存进行求和
  • 其余小型分支仓库(如NSWA-01、GH等)保留原库存值

解决方案DAX代码

SW Warehouse = 
VAR CurrentWarehouse = SELECTEDVALUE('Table'[Warehouse])
VAR IsSWWarehouse = RIGHT(CurrentWarehouse, 3) = "-SW"
VAR MainWarehouse = IF(IsSWWarehouse, LEFT(CurrentWarehouse, LEN(CurrentWarehouse)-3), CurrentWarehouse)
VAR HasSWChild = COUNTROWS(FILTER('Table', RIGHT([Warehouse], 3) = "-SW" && LEFT([Warehouse], LEN(MainWarehouse)) = MainWarehouse)) > 0
RETURN
IF(
    HasSWChild || IsSWWarehouse,
    CALCULATE(
        SUM('Table'[Stock]),
        FILTER(
            ALL('Table'),
            [Warehouse] = MainWarehouse || (RIGHT([Warehouse], 3) = "-SW" && LEFT([Warehouse], LEN(MainWarehouse)) = MainWarehouse)
        )
    ),
    SELECTEDVALUE('Table'[Stock])
)

代码逻辑解释

  1. CurrentWarehouse:获取当前上下文选中的仓库名称
  2. IsSWWarehouse:判断当前仓库是否是后缀为-SW的子仓库
  3. MainWarehouse:如果是SW子仓库,提取其对应的主仓库名称(去掉末尾-SW);否则直接用当前仓库名称
  4. HasSWChild:判断当前仓库是否存在对应的-SW子仓库
  5. 返回逻辑:
    • 如果当前仓库是SW子仓库,或者存在对应的SW子仓库,就计算该主仓库和其SW子仓库的库存总和
    • 否则返回当前仓库的原库存值

验证结果

按上述度量值计算后,各仓库的结果如下:

  • GH:6(无对应SW子仓库,保留原值)
  • NSWA:30(10+20)
  • NSWA-SW:30(10+20)
  • NSWA-01:5(小型分支,保留原值)
  • QLDA:45(15+30)
  • QLDA-SW:45(15+30)
  • GSWG:40(无对应SW子仓库,保留原值)
  • WASA:14(10+4)
  • WASA-SW:14(10+4)
  • WASA-07:11(小型分支,保留原值)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:40:00