2014-06-13 40 views
0

有沒有方法根據選擇的尺寸創建動態計算成員ON ROWS? 我有以下2維[Dim1]。[Dim1]和[Dim2]。[Dim2]的例子,用度量[Measures]。[Measure]和計算的成員[Measures]。[CalculatedMeasure]:根據所選尺寸創建動態計算的成員ON ROWS

WITH MEMBER [Measures].[CalculatedMeasure] AS 
IIF([Dim1].[Dim1]**.....IS SELECTED ON ROWS.........**, 
[Measures].[Measure] 
/
([Measures].[Measure], [Dim1].[Dim1].CurrentMember.Parent), 

[Measures].[Measure] 
/
    ([Measures].[Measure], [Dim2].[Dim2].CurrentMember.Parent)) 

    SELECT {[Measures].[Measure],[Measures].[CalculatedMeasure]} ON COLUMNS , 
    {[Dim2].[Dim2].Members)} ON ROWS 
    FROM [DataBase] 

我要的是,當我選擇[DIM2] [DIM2] ON行,則計算成員應該是

[Measures].[Measure] 
/
([Measures].[Measure], [Dim2].[Dim2].CurrentMember.Parent) 

ELSE

[Measures].[Measure] 
/
([Measures].[Measure], [Dim1].[Dim1].CurrentMember.Parent) 

感謝

結果
+0

任何想法,任何人嗎? – bluesony

回答

0

在Analysis Services,您[Dim1].[Dim1]**.....IS SELECTED ON ROWS.........**可以被編碼爲

Axis(1).Item(0).Item(0).Hierarchy IS [Dim1].[Dim1] 

,如果你可以假設只有一個行上層次。

這裏,Axis(1)返回設置的行軸。我不確定Pentaho/Mondrian是否支持此功能。然後,第一個Item(0)選擇該集合的第一個元組,第二個返回該元組的第一個元素。最後,Hierarchy函數返回成員的層次結構。

將其擴展到行包含了三個層次的查詢,你會寫

Axis(1).Item(0).Item(0).Hierarchy IS [Dim1].[Dim1] OR 
Axis(1).Item(0).Item(1).Hierarchy IS [Dim1].[Dim1] OR 
Axis(1).Item(0).Item(2).Hierarchy IS [Dim1].[Dim1] 
+0

感謝您的回答,但似乎蒙德里安沒有 實現了Axis(n)函數。我得到的錯誤:MondrianException:Mondrian錯誤:在行,列,令牌'軸'的語法錯誤。有沒有解決方法? – bluesony

+0

@bluesony我不知道任何解決方法。 – FrankPl