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

在迭代函数中应用不同关系:限定ALL筛选范围的DAX需求

解决方案

要实现仅让ALL('Invoice Line')和ALL('Purchase Order')作用于[Finished demand per bag],而非整个计算表达式,核心是在迭代的行上下文内部,单独对该字段应用筛选覆盖,而非将ALL筛选作用于整个SUMX外层。

直接实现写法

无需拆分额外度量值,直接在SUMX的迭代逻辑中嵌套CALCULATE,仅对目标字段应用ALL筛选:

TEST CM Total Cost Sold Bags = 
SUMX(
    mainReseptitSQL,
    -- 仅对当前行的Finished demand per bag忽略Invoice Line和Purchase Order的筛选
    CALCULATE(
        mainReseptitSQL[Finished demand per bag],
        ALL('Invoice Line'),
        ALL('Purchase Order')
    )
    * ([CM Kg price after reduced]/[CM Yield])
    * [CM Sold No of Bags]
)

拆分度量值的正确写法

如果希望将目标字段的逻辑拆分为独立度量值,需注意保留行级上下文(而非直接做聚合):

  1. 先定义行级度量值,返回当前行的Finished demand per bag并应用ALL筛选:
CM Finished demand per bag (Row Level) = 
CALCULATE(
    SELECTEDVALUE(mainReseptitSQL[Finished demand per bag]),
    ALL('Invoice Line'),
    ALL('Purchase Order')
)
  1. 再在主度量值中调用该行级度量值:
TEST CM Total Cost Sold Bags = 
SUMX(
    mainReseptitSQL,
    [CM Finished demand per bag (Row Level)]
    * ([CM Kg price after reduced]/[CM Yield])
    * [CM Sold No of Bags]
)

原有尝试的问题说明

你之前拆分的CM Finished demand per bag是聚合后的全局总和(SUMX+ALL),在迭代中调用时会返回整个表的聚合结果,而非当前行对应的值加上ALL筛选,导致计算逻辑不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:07:19