2013-06-20 65 views
1

我有一個包含多層次管理器層次結構以及在時間維度上完成的工作單元的多維數據集。讓我們假設這是我的工作數據:在分離成員時彙總多層次層次結構中的值

http://i.stack.imgur.com/eNP4L.png

我想要做的通過MDX是專注於一個特定的水平,(1級,約翰·史密斯),並刪除個人(兩端用戶和管理人員)並正確彙總值。

http://i.stack.imgur.com/xW5CF.png

你可以從上面的圖片看,我們已經刪除麗莎賴斯和摩根·理查森的整個團隊。預期的結果將是兩列,全名和工作單位。

,我已經把到目前爲止看起來像這樣的查詢:

WITH SET [MyCustomSet] AS EXCEPT(
    DESCENDANTS([HR].[Mgr Hierarchy].&[JSMITH],, SELF_AND_AFTER), 
    {DESCENDANTS([HR].[Mgr Hierarchy].&[MRICHARDSON],,SELF_AND_AFTER), DESCENDANTS([HR].[Mgr Hierarchy].&[LRICE],,SELF_AND_AFTER)} 
) 
MEMBER [Measures].[MyMeasure] AS Aggregate([MyCustomSet], [Measures].[#Work Units]) 
SELECT { 
    [Measures].[MyMeasure] 
} ON COLUMNS, 
NON EMPTY { 
    [MyCustomSet] 
} ON ROWS 
FROM [MyCube] 

但這返回我需要的成員,但對於每一個成員的聚合值的列表是總的所有成員。當我刪除計算的度量並僅使用[Measures].[#Work Units]時,值表示未刪除成員的總彙總值,但成員不在列中。

此數據的最終歸屬將位於具有遞歸父關係的SSRS表設置中,以正確顯示層次結構。

任何人都可以伸出援助之手或指向正確的方向嗎?謝謝!

+0

結束了工作就自己出去 – bash721

回答

1

我想你想改變你的Aggregate()成爲每個成員下面的聚合,而不是整個[MyCustomSet]。喜歡的東西:

MEMBER [Measures].[MyMeasure] AS 
    Aggregate([HR].[Mgr Hierarchy].CurrentMember, [Measures].[#Work Units]) 

編輯:如果您正在尋找聚集在每個父母級別改變,也許你應該考慮使用子查詢。

SELECT 
    [Measures].[#Work Units] ON COLUMNS, 
    NON EMPTY [HR].[Mgr Hierarchy].Members ON ROWS 
FROM (
    SELECT EXCEPT(
     DESCENDANTS([HR].[Mgr Hierarchy].&[JSMITH],, SELF_AND_AFTER), 
     {DESCENDANTS([HR].[Mgr Hierarchy].&[MRICHARDSON],,SELF_AND_AFTER), DESCENDANTS([HR].[Mgr Hierarchy].&[LRICE],,SELF_AND_AFTER)} 
     ON COLUMNS 
    FROM [MyCube] 
) 
+0

更改此聚集的工作項目總數的一組仍然包括我要排除的成員。這就是爲什麼自定義設置必須包含在這個計算中。 – bash721

+0

啊,對不起,我誤解了你的問題。所以你想要一個自定義設置,並且你希望每個級別的總數與你保存或從自定義設置中刪除的成員保持一致?你有沒有試過一個子選擇? – findango

+0

啊,我完全忘記了子查詢(對MDX來說還是比較新的)。所以我修改了查詢並確認了子查詢返回了正確的成員,但是在整個查詢中,排除的成員仍然包含在內。有什麼想法嗎?謝謝你的幫助! – bash721

1

我會去sub-query;通過這種方式,您只能選擇想要保留的[HR]成員,並使用VISUAL(默認行爲)與非可視模式,您將獲得實際選定成員或所有成員的合計值尺寸:

WITH SET [MyCustomSet] AS EXCEPT(
    DESCENDANTS([HR].[Mgr Hierarchy].&[JSMITH],, SELF_AND_AFTER), 
    {DESCENDANTS([HR].[Mgr Hierarchy].&[MRICHARDSON],,SELF_AND_AFTER), DESCENDANTS([HR].[Mgr Hierarchy].&[LRICE],,SELF_AND_AFTER)} 
) 

SELECT 
    [Measures].[#Work Units] ON 0, NON EMPTY [MyCustomSet] ON 1 
FROM (select [MyCustomSet] on 0 from [MyCube]) 
+0

感謝您的建議,它看起來像一個子查詢可能是路徑(正如findango也建議),但除了語句似乎並沒有篩選出我需要排除的成員。另外,在嘗試查詢版本後,看起來不能使用子查詢中外部查詢中指定的集合。再次感謝您的輸入。 – bash721