2014-03-07 95 views
0

我有一個MDX過濾器問題,我認爲我正確使用但是我仍然得到一些我不想要的行。 樣本查詢爲:在mdx查詢過濾器沒有正確應用

SELECT {[Measures].[AFR],[Measures].[IB],[Measures].[IC All]} ON COLUMNS, 
NON EMPTY (([dim_ProductModel].[Product Model].&[DSDB]) 
* FILTER( ([dim_Country].[Country Name].members -[dim_Name].[Country Key].[All]),[Dim_Date].[Date Full].&[2014-01-01]*[Measures].[IB] > 0 AND NOT ISEMPTY ([Dim_Date].[Date Full].&[2014-01-01]*[Measures].[IB])) 
* {[Dim_Date].[Date Full].&[2013-02-01]:[Dim_Date].[Date Full].&[2014-01-01]}) 
ON ROWS FROM [cub_dashboard_spares] 

現在我需要的是排除這些國家! (過濾器)在這種情況下的特定產品模型[DSDB],其中2014年1月(維度)測量IB> 0或不爲零。現在看起來它正確過濾了一些國家,但是我仍然得到了一些結果,其中IB在上個月爲0,或者IB在上個月(在我們的情況下,2014年1月爲(null))。

可以請任何人幫助我,哪裏可以解決問題?

非常感謝你

回答

0

這是我的問題..:不明白爲什麼與AFR 0的結果顯示:(

i don't get it..

+0

是否是[[Measures]。[IB]]是一個計算的度量?也許「非空行爲」設置是錯誤的?從2008年的Analysis Services版本開始,Microsoft建議如果沒有特殊原因使用它,請將其保留爲空。 – FrankPl

+0

嗯,但正如你所看到的,我的查詢中甚至沒有使用Measure.IB,但它可能是一個問題嗎? – Peter

+0

如果不直接或間接使用該度量(因爲它可能用於計算查詢中使用的另一個度量),我不認爲該設置會有任何影響包含在查詢中。 – FrankPl

1

我會添加國家的過濾條件,我。即使用

SELECT {[Measures].[AFR],[Measures].[IB],[Measures].[IC All]} 
     ON COLUMNS, 
     NON EMPTY 
     [dim_ProductModel].[Product Model].&[DSDB] 
     * FILTER(([dim_Country].[Country Name].members -[dim_Name].[Country Key].[All]), 
       ([dim_Country].[Country Name].CurrentMember, [Dim_Date].[Date Full].&[2014-01-01], [Measures].[IB]) > 0 
       AND NOT 
       ISEMPTY(([dim_Country].[Country Name].CurrentMember, [Dim_Date].[Date Full].&[2014-01-01], [Measures].[IB])) 
       ) 
     * {[Dim_Date].[Date Full].&[2013-02-01]:[Dim_Date].[Date Full].&[2014-01-01]} 
     ON ROWS 
    FROM [cub_dashboard_spares] 
+0

喜弗蘭克,不幸的是你提出的解決方案,我得到完全相同的結果與我的查詢。我真的不明白它,也許它可以幫助你,如果我告訴你,我通過MDX查詢獲得多餘的行是不可見的,如果我通過SSAS的瀏覽器瀏覽多維數據集在SSAS國家成員正確不可見 – Peter

+0

如果我刪除了Measure.AFR,那麼查詢運行正確。如果IB爲(null)或零,AFR始終爲零因爲它是來自IB和IC的計算量度(2個其他度量) - 對於某個特定國家/地區,度量IB是0並且度量IC和度量IB是(null)。如果我從查詢的SELECT部分​​刪除measure.AFR,那麼我正確地沒有得到任何行。似乎如果我涉及的AFR計算爲iif(IB> 0,IC/IB,0),則無論IB度量上的過濾器如何,它都被強制顯示所有行。 – Peter

+0

@Peter兩條評論:1)如果您檢查「0」,則不需要「NOT ISEMPTY」,請參閱http://sqlblog.com/blogs/mosha/archive/2005/06/30/how-to-check-如果-細胞是空的,在-mdx.aspx。 2)測量'AFR'爲'0'而不是'null'可以防止'NON EMPTY'壓制這些行。但是,這並不能解釋'Filter'的行爲。不過,我建議刪除'NON EMPTY'以及'AND NOT ISEMPTY(...)'來爲測試'Filter'的行爲提供一個簡單的例子。 – FrankPl