如何在计算 mdx 中过滤求和函数集?

How to filter set on sum function in calculation mdx?

我想在ssas 中的olap cube 中进行计算。这将是 "avg sku by outlets".

有我的表情:

CREATE 
  MEMBER CURRENTCUBE.[Measures].[Avg Prod Art Id Distinct Count By OldcID] AS 
    Avg
    (
      Descendants
      (
        [dimOutlets].[OLDC ID].CurrentMember
       ,[dimOutlets].[OLDC ID].[OLDC ID]
      )
     ,[Measures].[Prod Art Id Distinct Count]
    );

它工作正常,但是当我试图向它添加一些逻辑时出现了问题。我想按状态或类型过滤一些文档。

这是我做的:

CREATE 
  MEMBER CURRENTCUBE.[Measures].[test Calculated Member] AS 
    Avg
    (
      NonEmpty
      (
        NonEmpty
        (
          {
            [dimInvoice].[Doc Type].&[0]
           ,[dimInvoice].[Doc Type].&[1]
           ,[dimInvoice].[Doc Type].&[2]
           ,[dimInvoice].[Doc Type].&[3]
           ,[dimInvoice].[Doc Type].&[7]
           ,[dimInvoice].[Doc Type].[All].UnknownMember
          }
         ,{
            [dimInvoice].[Status].&[1]
           ,[dimInvoice].[Status].&[2]
           ,[dimInvoice].[Status].&[3]
           ,[dimInvoice].[Status].&[4]
           ,[dimInvoice].[Status].[All].UnknownMember
          }
        )
       ,Descendants
        (
          [dimOutlets].[OLDC ID].CurrentMember
         ,[dimOutlets].[OLDC ID].[OLDC ID]
        )
      )
     ,[Measures].[Prod Art Id Distinct Count]
    ) ;

当我在 visual studio 中尝试在浏览器上测试时,它考虑了很长时间,但我没有收到回复。

有没有最好和最快的方法来做到这一点?

PS。对不起我的英语。

也许将集合移到命名集合中:

CREATE 
  SET CURRENTCUBE.[DocTypes] AS 
    NonEmpty
      (
        NonEmpty
        (
          {
            [dimInvoice].[Doc Type].&[0]
           ,[dimInvoice].[Doc Type].&[1]
           ,[dimInvoice].[Doc Type].&[2]
           ,[dimInvoice].[Doc Type].&[3]
           ,[dimInvoice].[Doc Type].&[7]
           ,[dimInvoice].[Doc Type].[All].UnknownMember
          }
         ,{
            [dimInvoice].[Status].&[1]
           ,[dimInvoice].[Status].&[2]
           ,[dimInvoice].[Status].&[3]
           ,[dimInvoice].[Status].&[4]
           ,[dimInvoice].[Status].[All].UnknownMember
          }
        )
       ,Descendants
        (
          [dimOutlets].[OLDC ID].CurrentMember
         ,[dimOutlets].[OLDC ID].[OLDC ID]
        )
      );


CREATE 
  MEMBER CURRENTCUBE.[Measures].[test Calculated Member] AS 
    Avg
    (
      [DocTypes]
     ,[Measures].[Prod Art Id Distinct Count]
    ) ;

这是可行的(感谢 whytheq),但速度很慢,现在我找到了更快地执行此操作的解决方案。想知道是否有可能对立方体进行测量?

   CREATE DYNAMIC SET CURRENTCUBE.[DocTypesSet]
     AS nonempty
            (
              {
                [dimInvoice].[Doc Type].&[0]
               ,[dimInvoice].[Doc Type].&[1]
               ,[dimInvoice].[Doc Type].&[2]
               ,[dimInvoice].[Doc Type].&[3]
               ,[dimInvoice].[Doc Type].&[7]
               ,[dimInvoice].[Doc Type].[All].UnknownMember
              }
             *{
                [dimInvoice].[Status].&[1]
               ,[dimInvoice].[Status].&[2]
               ,[dimInvoice].[Status].&[3]
               ,[dimInvoice].[Status].&[4]
               ,[dimInvoice].[Status].[All].UnknownMember
              }
             *Descendants
                (
                  [dimOutlets].[OLDC ID].CurrentMember
                 ,[dimOutlets].[OLDC ID].[OLDC ID]
                )
            ) 

  CREATE MEMBER CURRENTCUBE.[Measures].[test msr]
  AS Sum(DocTypesSet,[Measures].[Prod Art Id Distinct Count] )