计算成员的总和错误

Posted

技术标签:

【中文标题】计算成员的总和错误【英文标题】:Total Sum of Calculated member is wrong 【发布时间】:2021-09-13 08:01:53 【问题描述】:

我有桌子:

Artikal(英文项目) Grupa(英组) Potrosnja(英语消费)

Potrosnja 是我的 Measure 表,Artikal 是 Dimension。 Grupa 还包含组之间的父子关系。目前,还只是一个层次。在我创建的 Artikal 维度内

层次结构:Grupa.ParentId、Grupa.GrupaId、Artikal.Id。层次结构的名称是 PGA。

这在 Power BI 中表现良好。我还创建了一些计算成员:Cijena LY 和 Vrijednost LY。

我需要创建一个计算成员并且公式是

(Cijena - Cijena LY)* 科利奇纳

首先,我尝试像计算成员一样创建,但我发现我的总数也在像公式总数的公式一样创建。我希望我对这个成员的总数是计算成员列的总和

我尝试使用 SCOPE 执行此操作,但没有得到正确的结果。这是我的脚本:

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

SCOPE([Measures].[Suma razlike],[Artikal].[PGA].members);
This =sum(
    Descendants([Artikal].[PGA].CurrentMember,,LEAVES),
    (([Measures].[Cijena]-[Measures].[Cijena LY])*[Measures].[Kolicina]));
END SCOPE;

谁能告诉我我做错了什么?我在 Microsoft 的分析服务中创建了它。

【问题讨论】:

【参考方案1】:

Alexei Stoyanovsky 在不同的博客上提供了解决方案:

问题是创建了隐藏的子选择。我需要创建一组动态的 Artikal。这是解决方案:

CREATE DYNAMIC SET CURRENTCUBE.[MyTestSet] AS  [Artikal].[Id].[Id].members;    
SCOPE([Measures].[Suma razlike], [Artikal].[Id].members);    --Includes All + 
other members
This = case when [Artikal].[Id].currentmember.level.ordinal>0 then
([Measures].[Cijena]-[Measures].[Cijena LY])*[Measures].[Kolicina]
else
sum(existing [MyTestSet], ([Measures].[Cijena]-[Measures].[Cijena LY])* 
[Measures].[Kolicina]) --All member is not included
end;

FORMAT_STRING([Measures].[Vrijednost - CPI])='Percent'; 
FORMAT_STRING([Measures].[Postotak razlike])='Percent'; 
FORMAT_STRING([Measures].[Razlika artikal - CPI])='Percent'; 
END SCOPE;

【讨论】:

以上是关于计算成员的总和错误的主要内容,如果未能解决你的问题,请参考以下文章

链接列表中的运行时错误:“ListNode”类型的空指针内的成员访问

如何快速访问作为数组成员的结构成员

如何访问 std::vector 类型的成员

为啥在 VC++ 调试器上计算表达式时会出现“成员函数不存在”错误?

核心数据实体中所有对象的属性总和

函数定义错误,类没有成员