2011-05-30 28 views
1

我達到了一個問題,我的基本MDX知識的限制,如果任何人有一個想法,每一個幫助將受到歡迎MDX:AVG高級使用

形勢

這是我的層次d喜歡處理。在我的fact_table中,我有[Measures]。[Sales]度量。

[All Management].[TemplateMgt].[CityMgt].[DistricMgt].[StoreMgt] 

[All Management].[TMP-00.002].[London].[DistricMgt].[Shoe001] 
[All Management].[TMP-00.002].[London].[DistricMgt].[Hat001] 
[All Management].[TMP-00.002].[London].[DistricMgt].[Electronic001] 
[All Management].[TMP-00.002].[Paris].[DistricMgt].[Shoe001] 
[All Management].[TMP-00.002].[Paris].[DistricMgt].[Hat001] 
[All Management].[TMP-00.002].[Paris].[DistricMgt].[Electronic001] 
[All Management].[TMP-00.002].[Madrid].[DistricMgt].[Shoe001] 
[All Management].[TMP-00.002].[Madrid].[DistricMgt].[Hat001] 
[All Management].[TMP-00.002].[Madrid].[DistricMgt].[Electronic001] 

問題

對於給定的CityMgt,我想有三個值

[措施] [薑黃素]: StoreMgt銷售給定CityMgt的(所以對於馬德里,得到值[Shoe001],[Hat001],[Electronic001])

[Measures]。[Avg]: StoreMgt group b ŸStoreMgt具有相同TemplateMgt AVG

[措施] [最大]([倫敦] [Shoe001] + [巴黎] [Shoe001] + [馬德里] [Shoe001]。):最大的銷售值StroreMgt具有相同的TemplateMgt MAX([London]。[Shoe001],[Paris]。[Shoe001],[Madrid]。[Shoe001])

換句話說,我想要一個輸出具有這種結構

Shoe001 | Hat001  | Electronic001 
---------------------------------------------------- 
CUR|AVG|MAX | CUR|AVG|MAX | CUR|AVG|MAX 
---------------------------------------------------- 

我得到了什麼至今

WITH MEMBER [Measures].[Cur] AS (...) 
      MEMBER [Measures].[Avg] AS (...) 
      MEMBER [Measures].[Max] AS (...) 

SELECT {[Measures].[Cur], [Measures].[Avg], [Measures].[Max]} ON COLUMNS, 
{FILTER({DESCENDANTS([All Management].CurrentMember, [StoreMgt])}, [All Management].Parent.Parent = "Madrid" } ON ROWS 
from [MyCube] 

我的問題是,我不知道要放什麼東西在會員屬性現/平均/最大,所以我可以DATAS每StoreMgt(一種GROUPBY的)來處理

如果任何人都可以enligthenme,我會感激。

親切,

回答

0

爲了讓您可以定義新的層次的平均水平(屬性如果你在SSAS)。一個爲國家,另一個爲產品類型。一旦你得到他們的統計計算是一個與當前成員和[全部]玩的問題。

你可以去另一個版本 - > SUM(FILTER(.. members,condition),value)...這可能很慢,很慢。

通常,對於這種計算,您可以使用我們稱之爲統計或實用程序維度(see)。

0

我不能完全確定下面的查詢將工作,希望它所傳達的理念,

WITH MEMBER [All Management].[Sales_AVG] AS AVG({[All Management].Members},       
                 [Measures].currentMember) 
    MEMBER [All Management].[Sales_MAX] AS MAX({[All Management].Members},   
                 [Measure].currentMember) 
SELECT {[Measures].[Sales]} ON COLUMNS, 
     {[All Management].Members, [All Management].[Sales_AVG], 
     [All Management].[sales_Max]} ON ROWS FROM [MYCUBE] WHERE 
     {DESCENDANTS([All Management].CurrentMember, [StoreMgt])}