具有多个成员属性的ssas计算成员

具有多个成员属性的ssas计算成员,ssas,mdx,member,calculation,Ssas,Mdx,Member,Calculation,我想知道有没有更好的方法来写这样一个经过计算的成员: ( [Measures].[Number of accounts] ,[Account Status].[Account Status].&[Anonymous] ,[Account Status].[Account Status].&[Closed] ,[Account Status].[Account Status].&[Closed due to Fraud] ,[Account Status].[A

我想知道有没有更好的方法来写这样一个经过计算的成员:

(
  [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>]
)
(
[措施][账户数量]
,[帐户状态][帐户状态]和[匿名]
,[账户状态].[账户状态]和[已关闭]
,[账户状态][账户状态],[因欺诈而关闭]
,[账户状态].[账户状态].&[待关闭]
,[帐户状态].[帐户状态].&[]
)

您的意思是创建计算度量还是计算维度成员

你能使用除或否定语法吗

差不多

(衡量账户数量,除{状态A,状态B}


或者将单词替换为减号。

您的意思是创建计算度量值还是计算维度成员

你能使用除或否定语法吗

差不多

(衡量账户数量,除{状态A,状态B}


或者将单词替换为减号。

这是一种
元组
——也是定位多维数据集一部分的一种非常有效的方法:

(
  [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>]
)
因此,这将回馈互联网销售,但仅限于2007年:

如果我像你所做的那样,在元组中添加一个成员,比如说年份层次结构中的另一个成员,那么它就会变得混乱,因为不确定我指的是多维数据集的哪一部分-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];
给出:

双击#Error这个词告诉我们异常情况:

这正是我们所期望的例外

解决此异常的一种方法是将同一层次结构中的成员预聚合为单个成员,以便处理器准确地知道要转到多维数据集空间的哪个部分:

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];
现在我们得到了我们想要的:

然后,我们可以使用这个初始聚合来做任何我们想做的事情—您提到排除某些成员—这是可能的:

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];

这是一个
元组
——也是定位多维数据集一部分的一种非常有效的方法:

(
  [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>]
)
因此,这将回馈互联网销售,但仅限于2007年:

如果我像你所做的那样,在元组中添加一个成员,比如说年份层次结构中的另一个成员,那么它就会变得混乱,因为不确定我指的是多维数据集的哪一部分-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];
给出:

双击#Error这个词告诉我们异常情况:

这正是我们所期望的例外

解决此异常的一种方法是将同一层次结构中的成员预聚合为单个成员,以便处理器准确地知道要转到多维数据集空间的哪个部分:

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];
现在我们得到了我们想要的:

然后,我们可以使用这个初始聚合来做任何我们想做的事情—您提到排除某些成员—这是可能的:

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];

这当然不能正常工作。我已将其改写为:([Measures].[Number of accounts],[Account Status].[Account Status].[Account Status].[Anonymous])+([Measures].[Number of accounts],[Account Status].[Account Status].[Closed]……等等。还有更好的方法吗?或者也许有一种方法可以写一个成员,显示除状态a和状态B之外的所有帐户?希望这不是一个愚蠢的问题,但我是mdx的新手:)这肯定不起作用。我已经重写为:([度量][帐户数量],[帐户状态]。[帐户状态]。[匿名])+([测量].[帐户数量],[帐户状态].[帐户状态].[关闭]…等等。还有更好的方法吗?或者也许有一种方法可以让会员显示除状态a和状态B之外的所有帐户?希望这不是一个愚蠢的问题,但我是mdx新手:)