2011-07-27 83 views
1

我需要SUM多個查詢的結果。在SSAS中總結多個MDX查詢

,我有是每個查詢定義的成員(以計算日期範圍)

我需要能夠將這些部件在多個MDX結合/和挑戰查詢

WITH Member [M1] AS Sum(DateRange, Measure) 

SELECT [M1] 

FROM [Cube] 

WHERE {[x].&[y]} 



WITH Member [M1] AS Sum(Different DateRange, Measure) 

SELECT [M1] 

FROM [Cube] 

WHERE {[z].&[q]} 

每個查詢根據不同的標準選擇相同的成員。

我能想到這樣做的唯一途徑是工會,不是SUM([M1]),但不知道如何在MDX

可能

更新 - 在回答icCube的問題,這是爲什麼我需要每個查詢有一個單獨的WHERE子句:

我需要爲每個查詢單獨的WHERE節,因爲我需要聚合不同切片的結果。我的切片由n個維度定義。我基於用戶配置輸入動態地爲每個切片發出mdx查詢(並動態構建我的WHERE子句以按用戶首選項進行過濾)。用戶可以配置重疊切片(這些是我需要總結的)。那麼我需要將這些切片行數合併到一個報告中。我正在做的方式是將帶有MDX查詢的字符串傳遞給報告。但由於我不能想辦法將多個查詢集成到一個可執行字符串中,(我也不知道將會有多少個查詢),這種方法已不再可行(除非有某種方法來組合/總計它們)。

我能想到的實現這一點,現在唯一的辦法,就是用額外配料的步驟,將通過所有查詢迭代,對它們進行處理(使用Adomd.net)爲分期表,然後我可以聚集他們使用SQL sum(..)進行報告。這種方法的最大缺點是需要維護額外的系統,並且報告中的數據將會過時的可能性更大。

回答

3

不確定這是你看的樣子荷蘭國際集團

WITH Member [M1] AS Sum(Different DateRange, ([z].&[q],Measure)) + 
        Sum(DateRange, ([x].&[y],Measure)) 

SELECT [M1] 

FROM [Cube] 

WITH Member [M1] AS Sum(Different DateRange * {[z].&[q]}, Measure) + 
        Sum(DateRange * {[x].&[y]}, Measure) 

SELECT [M1] 

FROM [Cube] 

我不知道任何方式將在MDX 2所選擇的結果...

+0

謝謝,但我需要WHERE對於每個查詢 –

+0

確定部分有不同的 - 你能解釋一下爲什麼嗎? - 如果您找到解決方案,請告訴我們。 – ic3

+0

當然,我更新了我的問題,並解釋了我的當前最佳猜測以及如何解決它。希望它是有道理的.. –

0

我相信你需要Aggregate()不和。

0

您可以實現使用上這樣子多維數據集在MDX的UNION行爲:

Select 
{...} On Columns, 
{...} On Rows 
From (
    Select 
      { 
       {Dimension1.Level.Members * Dimension2.&[1] * Dimension3.&[2]}, 
       {Dimension1.&[X] * Dimension2.Members * Dimension3.&[5]} 
      } On Columns 
    From [Cube] 
    )