2013-07-11 46 views
0

如果度量值不存在於該維度上,我想過濾維度,但我有一些包含一些原始數據的度量,即Infinity,1.#NN。 我使用NON EMPTY()但它沒有正確過濾數據,其篩選的維度,如果所有指標都爲空,但在我的情況下,它獲取「無限」的尺寸也:MDX查詢過濾度量值上的維度

MDX查詢:

SELECT 
{ 
[Measures].[1], 
[Measures].[2], 
[Measures].[3] 
} DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS 

, NON EMPTY Hierarchize (
{ 
    DrilldownLevel ({ [Roles].[Dimension].[All] }) 
} 
) DIMENSION PROPERTIES PARENT_UNIQUE_NAME 
, [Roles].[Roster Role].[Roster Role].[Roster Role - Enterprise] 
, [Roles].[Roster Role].[Roster Role].[Roster Role - Group] ON ROWS 
FROM [Cuve] 
WHERE ([Dates].[Calendar].[Calendar Year].&[2013], [Markets].[Market].&[1], [Areas]. [Area].&[8], [Roles].[Enterprise Role].&[2]) 

我可以而不是NONEMPTY(),因爲如果任何度量標準爲空,則刪除維度,而如果全部爲空,則要刪除。

我希望我可以過濾出維度,即如果度量值不是整數(例如,「Infinity」或其他數據)或通過NOT IN()類型的函數進行過濾。

謝謝

+0

相當於不在基本上是使用Except – mmarie

回答

2

首先,它聽起來像是你的措施計算中除以0。如果可以,我會重寫他們返回null分母爲0 這看起來是這樣的:

IIF([Measures].[denominator] = 0, Null, [Measures].[Numerator/[Measures].[Denominator]) 

然後你可以使用過濾器。我不太確定我是否足夠了解您的立方體的結構來編寫您的查詢,但請嘗試如下所示:

Select { 
[Measures].[1], 
[Measures].[2], 
[Measures].3]} on COLUMNS, 
{ Filter([Roles].[Dimension].[Dimension].members, CoalesceEmpty([Measures].[1],[Measures].[2],[Measures].[3], 0) <> 0) 
* ({[Roles].[Roster Role].[Roster Role].[Roster Role - Enterprise], [Roles].[Roster Role].[Roster Role].[Roster Role - Group]})} on ROWS 
FROM [Cuve] 
WHERE ([Dates].[Calendar].[Calendar Year].&[2013], [Markets].[Market].&[1], [Areas]. [Area].&[8], [Roles].[Enterprise Role].&[2])