2013-09-27 49 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]) 

上有層次無具體要求的列,用不同的是它不應該以其他方式在查詢中使用。某些多維數據集設計人員在每個多維數據集中明確創建一個甚至兩個實用程序維度,其中只包含一個虛擬成員,以便能夠輕鬆地編寫像這樣的查詢。然後這些維度僅用於在其上創建計算成員。