2012-03-13 66 views
1

使用圖示的實體模型運行總計僅覆蓋細胞的範圍與數據

注意不是所有DimB成員顯示所以總爲DIMA比顯示DimB的總和,則忽略此):

查詢是否顯示在1 0(月收入),(迪馬,dimb)從立方體 enter image description here

我想在創建計算成員的一些援助,這將跨越「月」在這裏計算運行總和( n實時維度)。

前,我用這一個,但它是錯的這麼多層次:

[Measures].[Accumulated Revenue] = 
IIF(
     ([DimMonths].[Months].CurrentMember,[Measures].[Revenue]) = 0 
    AND ([DimMonths].[Months].CurrentMember.NextMember,[Measures].[Revenue]) = 0 
    , 
    IIF(
     AGGREGATE({ 
      [DimMonths].[Months].CurrentMember : 
      [DimMonths].[Months].Parent.LastChild 
     },[Measures].[Revenue]) = 0 
     , 
     NULL 
     , 
     Aggregate({ 
      [DimMonths].[Months].Parent.FirstChild : 
      [DimMonths].[Months].CurrentMember.PrevMember 
     } 
     ,[Measures].[Revenue]) 
     ) 
    , 
    Aggregate({ 
     [DimMonths].[Months].Parent.FirstChild : 
     [DimMonths].[Months].CurrentMember 
     } 
    ,[Measures].[Revenue]) 
) 

回答

2

聽起來像一個「作用域分配」的工作。基本上,使用範圍分配,您可以沿[Member_DimA_01]切片覆蓋您計算的度量的值,以便這些值代表運行總數而不是子總和。

Here's a good tutorial from Chris Webb on scoped assignments to help get you started...

編輯:這裏是爲運行總量計算模板...

WITH 
SET [Months] AS 
    { 
     [Date].[Calendar Month].&[2011 - Jan] 
     : 
     [Date].[Calendar Month].&[2011 - Dec] 
    } 
MEMBER [Measures].[Running Total] AS 
    SUM(
     { 
      [Date].[Calendar Hierarchy].[Calendar Month].&[2011 - Jan] 
      : 
      [Date].[Calendar Hierarchy].CurrentMember 
     } 
     ,[Measures].[Revenue] 
    ) 
SELECT 
    NON EMPTY{ 
     [Months] 
    } ON 0, 
    NON EMPTY{ 
     [DimA].[Member].Allmembers * 
     [DimB].[Member].Allmembers 
    } ON 1 
FROM 
    [<<cube name>>] 
WHERE 
    [Measures].[Revenue Running Total] 
+0

感謝這個環節,我會花一些時間來分析它。但是我認爲(並且可能是錯誤的) - 這裏的主要問題是讓ssas快速理解哪些單元應該被計算,哪些不應該。如果需要評估每個單元格,然後再確定它是否應該爲空,則性能會下降。我可能只需要接受當前的性能和空白單元格(它很快,但有空格,例如month02的dimb5爲空,因爲收入是空的(NON_EMPTY_BEHAVOIR)。 – cairnz 2012-03-19 13:01:41

+0

道歉,我沒有意識到網格中的單元格是也應該顯示運行總數,我猜想我已經抓住了標題中的「單元格範圍」短語,並且只注意到以小寫形式應用到小計的總運行總數。 – 2012-03-19 13:58:47