我有这种 MDX 语法,当使用多维属性进行切片时效率不高。我怎样才能提高性能?IIF 或 CASE 在这里最好选择什么?
WITH
MEMBER [Measures].[test] AS
IIF
(
IsLeaf([Date].[MonthQtrYr].CurrentMember) = True
,IIF
(
[Measures].[1 Headcount] > 0 AND [Measures].[1 Termcount] > 0
,
[Measures].[1 Termcount] / [Measures].[1 Headcount]
,null
)
,IIF
(
[Date].[MonthQtrYr].CurrentMember IS [Date].[MonthQtrYr].[All]
AND
[Date].[Month].CurrentMember IS [Date].[Month].[All]
AND
[Date].[Quarter].CurrentMember IS [Date].[Quarter].[All]
AND
[Date].[Week].CurrentMember IS [Date].[Week].[All]
AND
[Date].[WeekbyYr].CurrentMember IS [Date].[WeekbyYr].[All]
,IIF
(
[Measures].[1 Headcount] > 0 AND [Measures].[1 Termcount] > 0
,
[Measures].[1 Termcount]
/
IIF
(
[TRegrets].[Regrets].CurrentMember IS [TRegrets].[Regrets].&[With Regrets]
,(
[TRegrets].[Regrets].&[Not Applicable]
,[Measures].[1 Headcount]
)
,[Measures].[1 Headcount]
)
,null
)
,IIF
(
[Date].[MonthQtrYr].CurrentMember
IS
StrToMember
(
"[Date].[MonthQtrYr].[Year].&[" + Cstr([Measures].[MaxYear]) + "]"
)
OR
[Date].[Quarter].CurrentMember
IS
StrToMember
("[Date].[Quarter].&["
+
StrToMember
(
"[Date].[Quarter].&[Q" + Cstr([Measures].[PrevQtr]) + "]"
).NextMember.Member_Caption
+ "]"
)
,StrToMember("[Date].[Month].&[" + Cstr([Measures].[CurrMo]) + "]")
,[Date].[MonthQtrYr].CurrentMember.LastChild
)
)
)