SSAS计算成员具有相同维度的度量

时间:2015-01-08 04:09:10

标签: ssas mdx cube

我正在尝试创建一个计算度量,它减去不同组中的度量,但前提是它们具有相同的维度成员。 (编辑 - 基本上排除减法中的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中计算来解决这个问题

2 个答案:

答案 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]
 );