2017-08-17 97 views
0

我不知道是否有在写这样的计算成员没有更好的办法:SSAS计算成员与几个成员属性

(
    [Measures].[Number of accounts] 
,[Account Status].[Account Status].&[Anonymous] 
,[Account Status].[Account Status].&[Closed] 
,[Account Status].[Account Status].&[Closed due to Fraud] 
,[Account Status].[Account Status].&[To be closed] 
,[Account Status].[Account Status].&[<unknown>] 
) 
+0

这肯定无法正常工作。我已将其重写为:([度量]。[帐户数量],[帐户状态]。[帐户状态]。[匿名])+([度量]。[帐户数量],[帐户状态]。 [帐户状态]。[关闭] ......等等还有更好的方法吗? – KejP

+0

或者,也许有办法写一个会员,显示除状态A和状态B以外的所有帐户?希望这不是一个愚蠢的问题,但我是新的mdx :) – KejP

回答

2

这是一个tuple - 和定位立方体的一部分的非常有效的方式:

(
    [Measures].[Number of accounts] 
,[Account Status].[Account Status].&[Anonymous] 
,[Account Status].[Account Status].&[Closed] 
,[Account Status].[Account Status].&[Closed due to Fraud] 
,[Account Status].[Account Status].&[To be closed] 
,[Account Status].[Account Status].&[<unknown>] 
) 

...但它必须是多维数据集中的特定点 - 但你已经包括几个成员s来自相同的层次结构[Account Status].[Account Status]所以这不是您的多维数据集中的单个点,因此会出错。

这里是一个有效的元组的例子:

WITH 
    MEMBER [exampleTuple] AS 
    (
     [Measures].[Internet Sales Amount] 
    ,[Date].[Calendar Year].&[2007] 
    ) 
SELECT 
    [exampleTuple] ON 0 
,{ 
    [Product].[Category].[Bikes] 
    ,[Product].[Category].[Clothing] 
    } ON 1 
FROM [Adventure Works]; 

所以这还给网络销售,但只有2007年全年:

enter image description here

如果我做的你做了什么并添加说从年份层次结构中的另一个成员到元组,然后它会混淆,因为不确定我指的是哪一个立方体 - 2006或2007!

WITH 
    MEMBER [exampleTuple] AS 
    (
     [Measures].[Internet Sales Amount] 
    ,[Date].[Calendar Year].&[2007] 
    ,[Date].[Calendar Year].&[2006] 
    ) 
SELECT 
    [exampleTuple] ON 0 
,{ 
    [Product].[Category].[Bikes] 
    ,[Product].[Category].[Clothing] 
    } ON 1 
FROM [Adventure Works]; 

给出了:这个词

enter image description here

双击#错误告诉我们异常:

enter image description here

正是我们所期待的例外。

此异常周围的一种方法是预先聚合同一层级的成员作为单个部件使处理器知道立方体空间的到底是哪一部分去:

WITH 
    MEMBER [Date].[Calendar Year].[All].[2006+2007] AS 
    Aggregate({[Date].[Calendar Year].&[2007],[Date].[Calendar Year].&[2006]}) 
    MEMBER [exampleTuple] AS 
    (
     [Measures].[Internet Sales Amount] 
    ,[Date].[Calendar Year].[All].[2006+2007] 
    ) 
SELECT 
    [exampleTuple] ON 0 
,{ 
    [Product].[Category].[Bikes] 
    ,[Product].[Category].[Clothing] 
    } ON 1 
FROM [Adventure Works]; 

现在我们得到了什么我们希望:

enter image description here

我们可以使用这个初始聚集做任何我们想做的 - 你提不包括一些成员 - 这是可能的:

WITH 
    MEMBER [Date].[Calendar Year].[All].[2006+2007] AS 
    Aggregate 
    (
     Except 
     (
     [Date].[Calendar Year].[Calendar Year].MEMBERS 
     ,{ 
      [Date].[Calendar Year].&[2007] 
     ,[Date].[Calendar Year].&[2006] 
     } 
    ) 
    ) 
    MEMBER [exampleTuple] AS 
    (
     [Measures].[Internet Sales Amount] 
    ,[Date].[Calendar Year].[All].[2006+2007] 
    ) 
SELECT 
    [exampleTuple] ON 0 
,{ 
    [Product].[Category].[Bikes] 
    ,[Product].[Category].[Clothing] 
    } ON 1 
FROM [Adventure Works]; 
0

你的意思是创建一个计算度量或计算维度成员?

你能够使用EXCEPT或否定语法吗? 。

喜欢的东西

(账户Measures.Number,除了{状态A,状态B}

或替换的单词,除了用减号