我正在尝试创建一个计算度量,它减去不同组中的度量,但前提是它们具有相同的维度成员。 (编辑 - 基本上排除减法中的UnknownMember数字)
我尝试过使用Scope:
CREATE MEMBER CURRENTCUBE.[Measures].[CalcField] as NULL;
SCOPE([Dimension1].[DimensionField1].MEMBERS);
[Measures].[CalcField] = [Measures].[a] - [Measures].[b];
END SCOPE;
我也试过使用元组但没有成功:
CREATE MEMBER CURRENTCUBE.[Measures].[CalcField]
AS ([Measures].[a] - [Measures].[b], [Dimension1].[DimensionField1]);
但我认为我缺少一些基本的东西
修改
col a b dimension
1. 9 0 x
2. 0 2 x
3. 1 5 null
如果你聚合这些行我想要答案7而不是5
使用简单的CASE WHEN如果使用的尺寸有效,但是否则会盲目地再次减去所有内容
CASE
WHEN [Dimension1].[DimensionField1] IS [Dimension1].[DimensionField1].UnknownMember THEN 0
ELSE [Measures].[a] - [Measures].[b]
END
使用Aggregate在高级别工作,但是当我使用Dimension时,我得不到每个成员的结果
Aggregate(
EXCEPT(
[Dimension1].[DimensionField1].Members, {[Dimension1].[DimensionField1].UnknownMember, [Dimension1].[DimensionField1].[All]}
),[Measures].[a])
-
Aggregate(
EXCEPT(
[Dimension1].[DimensionField1].Members, {[Dimension1].[DimensionField1].UnknownMember, [Dimension1].[DimensionField1].[All]}
),[Measures].[b])
解决方法解决方案
如果我不清楚我的问题,我很抱歉,但我最终通过将我需要的数据放在ETL阶段而不是在Cube中计算来解决这个问题
答案 0 :(得分:0)
With Member [Measures].[CalcField] as [Measures].[a] - [Measures].[b]
Select [Measures].[CalcField]
on columns,
[Dimension1].[DimensionField1].MEMBERS
on rows
from [cube]
答案 1 :(得分:0)
您是否尝试过汇总或汇总第二个代码段?
CREATE MEMBER CURRENTCUBE.[Measures].[CalcField]
AS
Sum(
[Measures].[a] - [Measures].[b],
[Dimension1].[DimensionField1]
);
CREATE MEMBER CURRENTCUBE.[Measures].[CalcField]
AS
Aggregate(
[Measures].[a] - [Measures].[b],
[Dimension1].[DimensionField1]
);