2013-09-27 48 views
0

我下面的MDX查询一套计算措施,以两个指标的日期范围(月):如何重组MDX以群计算得到的措施,在新的行标签

WITH 
MEMBER [Measures].[Prior Visits Office New] as SUM({[Date Post Transaction].[Calendar Month Period].&[201211].Lag(12) : [Date Post Transaction].[Calendar Month Period].&[201306].Lag(12)},[Measures].[Visits Office New]),format_string = '#,##0' 
MEMBER [Measures].[Current Visits Office New] as SUM({[Date Post Transaction].[Calendar Month Period].&[201211] : [Date Post Transaction].[Calendar Month Period].&[201306]},[Measures].[Visits Office New]),format_string = '#,##0' 
MEMBER [Measures].[Diff Visits Office New] as ([Measures].[Current Visits Office New] - [Measures].[Prior Visits Office New]),format_string = '#,##0' 
MEMBER [Measures].[Percent Change Visits Office New] as ([Measures].[Diff Visits Office New]/[Measures].[Prior Visits Office New]),format_string = 'Percent' 
MEMBER [Measures].[Prior Visits Office Established] as SUM({[Date Post Transaction].[Calendar Month Period].&[201211].Lag(12) : [Date Post Transaction].[Calendar Month Period].&[201306].Lag(12)},[Measures].[Visits Office Established]),format_string = '#,##0' 
MEMBER [Measures].[Current Visits Office Established] as SUM({[Date Post Transaction].[Calendar Month Period].&[201211] : [Date Post Transaction].[Calendar Month Period].&[201306]},[Measures].[Visits Office Established]),format_string = '#,##0' 
MEMBER [Measures].[Diff Visits Office Established] as ([Measures].[Current Visits Office Established] - [Measures].[Prior Visits Office Established]),format_string = '#,##0' 
MEMBER [Measures].[Percent Change Visits Office Established] as ([Measures].[Diff Visits Office Established]/[Measures].[Prior Visits Office Established]),format_string = 'Percent' 
SELECT {[Measures].[Current Visits Office New],[Measures].[Prior Visits Office New],[Measures].[Diff Visits Office New],[Measures].[Percent Change Visits Office New],[Measures].[Current Visits Office Established],[Measures].[Prior Visits Office Established],[Measures].[Diff Visits Office Established],[Measures].[Percent Change Visits Office Established]} 
ON COLUMNS , NON EMPTY Hierarchize(AddCalculatedMembers({DrilldownLevel({[Date Post Transaction].[Calendar Month Period].Children})})) 
ON ROWS FROM (SELECT ({[Date Post Transaction].[Calendar Month Period].&[201301]}) 
ON COLUMNS FROM [cube]) 
WHERE ([Report Group].[Report Group1].&[Group]) 

的结果集看起来像这样:

+-----------------------------+-----------------------------+---------------------------+--------------------------+------------------------------------+-------------------------------------+-----------------------------------+---------------------------------+--------------------------------------------+ 
|        | Current Visits Office New | Prior Visits Office New | Diff Visits Office New | Percent Change Visits Office New | Current Visits Office Established | Prior Visits Office Established | Diff Visits Office Established | Percent Change Visits Office Established | 
+-----------------------------+-----------------------------+---------------------------+--------------------------+------------------------------------+-------------------------------------+-----------------------------------+---------------------------------+--------------------------------------------+ 
|   201301   |   4,793   |   4,307   |    486   |    11.28%    |     58,979    |    57,228    |    1,751    |     3.06%     | 
+-----------------------------+-----------------------------+---------------------------+--------------------------+------------------------------------+-------------------------------------+-----------------------------------+---------------------------------+--------------------------------------------+ 

我只是在那里[Date Post Transaction].[Calendar Month Period].&[201301],其中显示行201301,作为填料。它似乎没有返回没有行轴标签的结果集。

,我需要得到的结果设置到看起来像这样的格式:

+---------------------------------+----------------------+---------------------+-----------------------+----------------------+ 
|         |  Current  |  Prior  |   Diff   | Percent Change | 
+---------------------------------+----------------------+---------------------+-----------------------+----------------------+ 
| Visits Office New   |   4,793  |  4,307  |   486   |  11.28%  | 
+---------------------------------+----------------------+---------------------+-----------------------+----------------------+ 
| Visits Office Established |  58,979  |  57,228  |   1,751  |  3.06%   | 
+---------------------------------+----------------------+---------------------+-----------------------+----------------------+ 

甚至更​​好:

+---------------------------------+----------------------+---------------------+-----------------------+----------------------+ 
| Visits Office New   |   4,793  |  4,307  |   486   |  11.28%  | 
+---------------------------------+----------------------+---------------------+-----------------------+----------------------+ 
| Visits Office Established |  58,979  |  57,228  |   1,751  |  3.06%   | 
+---------------------------------+----------------------+---------------------+-----------------------+----------------------+ 

所以,我在想,致力于集团的一些逻辑计算如下的度量值:

WITH 
MEMBER [Measures].[Visits Office New] as (
    MEMBER [Measures].[Prior Visits Office New] as SUM({[Date Post Transaction].[Calendar Month Period].&[201211].Lag(12) : [Date Post Transaction].[Calendar Month Period].&[201306].Lag(12)},[Measures].[Visits Office New]),format_string = '#,##0' 
    MEMBER [Measures].[Current Visits Office New] as SUM({[Date Post Transaction].[Calendar Month Period].&[201211] : [Date Post Transaction].[Calendar Month Period].&[201306]},[Measures].[Visits Office New]),format_string = '#,##0' 
    MEMBER [Measures].[Diff Visits Office New] as ([Measures].[Current Visits Office New] - [Measures].[Prior Visits Office New]),format_string = '#,##0' 
    MEMBER [Measures].[Percent Change Visits Office New] as ([Measures].[Diff Visits Office New]/[Measures].[Prior Visits Office New]),format_string = 'Percent' 
) 
MEMBER [Measures].[Visits Office Established] as (
    MEMBER [Measures].[Prior Visits Office Established] as SUM({[Date Post Transaction].[Calendar Month Period].&[201211].Lag(12) : [Date Post Transaction].[Calendar Month Period].&[201306].Lag(12)},[Measures].[Visits Office Established]),format_string = '#,##0' 
    MEMBER [Measures].[Current Visits Office Established] as SUM({[Date Post Transaction].[Calendar Month Period].&[201211] : [Date Post Transaction].[Calendar Month Period].&[201306]},[Measures].[Visits Office Established]),format_string = '#,##0' 
    MEMBER [Measures].[Diff Visits Office Established] as ([Measures].[Current Visits Office Established] - [Measures].[Prior Visits Office Established]),format_string = '#,##0' 
    MEMBER [Measures].[Percent Change Visits Office Established] as ([Measures].[Diff Visits Office Established]/[Measures].[Prior Visits Office Established]),format_string = 'Percent' 
) 
SELECT {[Measures].[Current Visits Office New],[Measures].[Prior Visits Office New],[Measures].[Diff Visits Office New],[Measures].[Percent Change Visits Office New],[Measures].[Current Visits Office Established],[Measures].[Prior Visits Office Established],[Measures].[Diff Visits Office Established],[Measures].[Percent Change Visits Office Established]} 
ON COLUMNS , NON EMPTY Hierarchize(AddCalculatedMembers({DrilldownLevel({[Date Post Transaction].[Calendar Month Period].Children})})) 
ON ROWS FROM (SELECT ({[Date Post Transaction].[Calendar Month Period].&[201301]}) 
ON COLUMNS FROM [cube]) 
WHERE ([Report Group].[Report Group1].&[Group]) 

但这不起作用。思考?

+0

你不能嵌套'MEMBER'的定义。他们必须在“WITH”条款中一个接一个地出现。 – FrankPl

+0

我知道,只是提供了我想要实现的内容。在这种情况下,我会使用CREATE SET。但是这也行不通。任何答案? –

回答

0

使用目前为止在您的查询中没有使用的任何层次结构(我将在我的示例中使用[Dim1].[Util],因为我不知道您的多维数据集),您将在此创建成员 - 因为您可以在任何层次结构上创建计算成员,刚上Measures层次:

WITH member [Dim1].[Util].[Prior] as 
    SUM({[Date Post Transaction].[Calendar Month Period].&[201211].Lag(12) : [Date Post Transaction].[Calendar Month Period].&[201306].Lag(12)}, 
     [Measures].CurrentMember 
     ),format_string = '#,##0' 
    member [Dim1].[Util].[Current] as 
    SUM({[Date Post Transaction].[Calendar Month Period].&[201211] : [Date Post Transaction].[Calendar Month Period].&[201306]}, 
     [Measures].CurrentMember 
     ),format_string = '#,##0' 
    member [Dim1].[Util].[Diff] as 
    [Dim1].[Util].[Current] - member [Dim1].[Util].[Prior],format_string = '#,##0' 
    member [Dim1].[Util].[Percent Change] as 
    [Dim1].[Util].[Diff]/[Dim1].[Util].[Current],format_string = 'Percent' 
SELECT { 
     [Dim1].[Util].[Prior], 
     [Dim1].[Util].[Current], 
     [Dim1].[Util].[Diff], 
     [Dim1].[Util].[Percent Change] 
     } 
ON COLUMNS , 
     { 
     [Measures].[Visits Office New], 
     [Measures].[Visits Office Established] 
     } 
ON ROWS 
    FROM (SELECT ({[Date Post Transaction].[Calendar Month Period].&[201301]}) 
       ON COLUMNS 
      FROM [cube]) 
WHERE ([Report Group].[Report Group1].&[Group]) 

上有层次无具体要求的列,用不同的是它不应该以其他方式在查询中使用。某些多维数据集设计人员在每个多维数据集中明确创建一个甚至两个实用程序维度,其中只包含一个虚拟成员,以便能够轻松地编写像这样的查询。然后这些维度仅用于在其上创建计算成员。