具有相同维度的度量的 SSAS 计算成员
SSAS Calculated Member for measures that have the same Dimension
我正在尝试创建一个计算量度来减去不同组中的量度,但前提是它们具有相同的维度成员(无论可能是什么)。 (编辑 - 基本上在减法中排除 UnknownMember 号码)
我试过使用范围:
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 维度
1. 9 0 x
2. 0 2 x
3. 1 5 空
如果你汇总这些行,我想要答案 7 而不是 5
如果维度正在使用,则使用简单的 CASE WHEN 可行,否则它会再次盲目地减去所有内容
CASE
WHEN [Dimension1].[DimensionField1] IS [Dimension1].[DimensionField1].UnknownMember THEN 0
ELSE [Measures].[a] - [Measures].[b]
END
使用聚合在高级别工作,但是当我使用维度时,我没有得到每个成员的结果
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
中计算来解决这个问题
With Member [Measures].[CalcField] as [Measures].[a] - [Measures].[b]
Select [Measures].[CalcField]
on columns,
[Dimension1].[DimensionField1].MEMBERS
on rows
from [cube]
您是否尝试过对第二个代码段进行求和或聚合?
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]
);
我正在尝试创建一个计算量度来减去不同组中的量度,但前提是它们具有相同的维度成员(无论可能是什么)。 (编辑 - 基本上在减法中排除 UnknownMember 号码)
我试过使用范围:
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 维度
1. 9 0 x
2. 0 2 x
3. 1 5 空
如果你汇总这些行,我想要答案 7 而不是 5
如果维度正在使用,则使用简单的 CASE WHEN 可行,否则它会再次盲目地减去所有内容
CASE
WHEN [Dimension1].[DimensionField1] IS [Dimension1].[DimensionField1].UnknownMember THEN 0
ELSE [Measures].[a] - [Measures].[b]
END
使用聚合在高级别工作,但是当我使用维度时,我没有得到每个成员的结果
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
With Member [Measures].[CalcField] as [Measures].[a] - [Measures].[b]
Select [Measures].[CalcField]
on columns,
[Dimension1].[DimensionField1].MEMBERS
on rows
from [cube]
您是否尝试过对第二个代码段进行求和或聚合?
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]
);