2014-04-04 55 views
1

我想在SSRS中顯示層次結構,其中包含具有空度量的成員。 在mdx查詢中的問題是,當我刪除NON EMPTY clouse時,由於時間,產品和層次結構維度之間的大型交叉連接,我得到'System.OutOfMemoryException'。任何想法如何發揮它?查詢是如下:如何顯示度量值爲空的層次結構成員(mdx)

SELECT 
NON EMPTY { (
[Measures].[SOME MEASURE] 
    )} ON COLUMNS, 
    NON EMPTY { (
[Organization Structure].[Description].[Description].Allmembers 
* [Organization Structure].[ID].[ID] 
* [Organization Structure].[ParentID].[ParentID] 
*[Products].[Name].[Name] 
*[Time].[Hierarchy].[MothsAndDays] 
)} 
DIMENSION 
PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME, PARENT_UNIQUE_NAME, 
LEVEL_NUMBER ON ROWS 
FROM [MyCube] 

回答

1

假設你有出現在Reporting Services服務器上的存儲問題,而不是Analysis Services服務器,您可以在ROWS選擇部分的一端在使用HAVING條款,而不是NON EMPTY開始它限制行:

SELECT 
NON EMPTY { (
[Measures].[SOME MEASURE] 
    )} ON COLUMNS, 

[Organization Structure].[Description].[Description].Allmembers 
* [Organization Structure].[ID].[ID] 
* [Organization Structure].[ParentID].[ParentID] 
*[Products].[Name].[Name] 
*[Time].[Hierarchy].[MothsAndDays] 

DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME, PARENT_UNIQUE_NAME, LEVEL_NUMBER 

HAVING <whatever the condition is to display a row> 

ON ROWS 
FROM [MyCube] 

當你沒有完全按照你想要確定你想要顯示的行的狀態,我離開了那如<whatever the condition is to display a row>以上。這樣做的方式是Analysis Services首先爲所有行層次結構的完整交叉產品構建結果集,然後評估條件以從中刪除行。

1

你可以使用非空(無間隙)函數,而不是在你確定擺脫空的層次?因此,例如:

SELECT 
//NON EMPTY 
{ (
[Measures].[SOME MEASURE] 
    )} ON COLUMNS, 
//NON EMPTY 
{ (
[Organization Structure].[Description].[Description].Allmembers 
* NONEMPTY([Organization Structure].[ID].[ID],[Measures].[SOME MEASURE]) 
* [Organization Structure].[ParentID].[ParentID] 
* NONEMPTY([Products].[Name].[Name],[Measures].[SOME MEASURE]) 
* [Time].[Hierarchy].[MothsAndDays] 
)} 
DIMENSION 
PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME, PARENT_UNIQUE_NAME, 
LEVEL_NUMBER ON ROWS 
FROM [MyCube] 
+0

不幸的是我收到'System.OutOfMemoryException'。我需要處理情況部門 - >爲空,其單位 - >有價值。發生這種情況時,該部門不會出現在raport。另一方面,如果我刪除NOT EMPTY clouse,查詢結果會爆炸。 – arth81

+1

@ arth81那麼,你必須決定是否要用null度量來顯示成員,並接受獲得數以百萬計的結果,或者如果你想要幾行,而不是那些度量爲null的成員。你不能兼得! – FrankPl

+0

一般來說,我需要一些帶空值的recodrds來在報告中顯示它。想象一下組織,其中部門在度量組中沒有值(空值),例如。 MArketing Dep。以及一個例如。銷售部現在,市場部的子部門有一些價值。所以我需要顯示:營銷部門的主管部門。 - > 300,銷售部門 - > 10000。但當然結構更大,我不需要例如。清潔隊伍報告。如果我刪除'not empty',則包含所有單元,但結果是:我不需要所有單元(例如Clean Team),查詢會爆炸並顯示異常。 – arth81