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

SSAS多维数据集计算成员合计值错误,SCOPE语句执行结果不符合预期

问题原因

你的SCOPE脚本核心问题是缺少EXISTING关键字,导致Descendants函数返回的是Artikal维度PGA层级下当前成员的所有叶子节点,没有继承当前查询的其他筛选上下文(比如时间、区域等其他维度的筛选),会统计到超出当前上下文的无效数据,最终结果不符合预期。
另外你的SCOPE仅覆盖了使用PGA层级的查询场景,如果查询时用到Artikal维度的其他属性,该计算度量会返回初始的null值。

修正方案

你可以直接把逻辑写入计算成员,也可以调整SCOPE脚本适配所有场景,以下是两种可行写法:

写法1:直接定义计算成员(无需SCOPE,适配所有场景)

CREATE MEMBER CURRENTCUBE.[Measures].[Suma razlike] 
AS SUM(
    EXISTING Descendants([Artikal].[PGA].CurrentMember,,LEAVES),
    ([Measures].[Cijena] - [Measures].[Cijena LY]) * [Measures].[Kolicina]
),
VISIBLE = 1;

写法2:调整后的SCOPE写法

CREATE MEMBER CURRENTCUBE.[Measures].[Suma razlike] AS null,
VISIBLE = 1;  

-- 覆盖所有Artikal维度成员的场景,不限于PGA层级
SCOPE([Measures].[Suma razlike]);
This = SUM(
    EXISTING Descendants([Artikal].[PGA].CurrentMember,,LEAVES),
    ([Measures].[Cijena] - [Measures].[Cijena LY]) * [Measures].[Kolicina]
);
END SCOPE;

如果你的数据中存在Cijena、Cijena LY或Kolicina为null的情况,可以套一层CoalesceEmpty把null转成0,避免出现计算结果为null的问题:

SUM(
    EXISTING Descendants([Artikal].[PGA].CurrentMember,,LEAVES),
    (CoalesceEmpty([Measures].[Cijena],0) - CoalesceEmpty([Measures].[Cijena LY],0)) * CoalesceEmpty([Measures].[Kolicina],0)
)

内容的提问来源于stack exchange,提问作者Luka Otočan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:39:03