Оператор IS
является вашим другом здесь: я не уверен, что оператор =
будет даже работать, а ....Properties ("Member_Value",TYPED) ="caps"
работает медленно.
Также я пытался использовать IIF
который в MDX
обычно быстрее, чем CASE
IIF(
( [Period].CURRENTMEMBER IS [Period].[Period].[Q1] )
OR ( [Period].CURRENTMEMBER IS [Period].[Period].[Q1] )
OR ( [Period].CURRENTMEMBER IS [Period].[Period].[Q1] )
OR ( [Period].CURRENTMEMBER IS [Period].[Period].[Q1] )
, DIVIDE(
[Finance Charge and NSF Revenue]
,( [CXO_Average Total A/R]+[Average Total A/R - Normalized Load] )*4
)
, IIF(
( [Period].CURRENTMEMBER IS [Period].[Period].[Total Year] )
, DIVIDE(
[Finance Charge and NSF Revenue]
,( [CXO_Average Total A/R]+[Average Total A/R - Normalized Load] )
)
, DIVIDE(
[Finance Charge and NSF Revenue]
,( [CXO_Average Total A/R]+[Average Total A/R - Normalized Load] )*12
)
)
Редактировать
В более сложных запросах использование IIF / IS будет быстрее - это эквивалентноСкрипт MoazRubs AdvWrks:
WITH
MEMBER measures.test as
IIF(
[Product].[Subcategory].currentmember IS [Product].[Subcategory].[Caps]
OR [Product].[Subcategory].currentmember IS [Product].[Subcategory].[Chains]
OR [Product].[Subcategory].currentmember IS [Product].[Subcategory].[Gloves]
, 1
, IIF(
[Product].[Subcategory].currentmember IS [Product].[Subcategory].[Fenders]
,5
,NULL
)
)
SELECT
{
[Measures].[Internet Sales Amount],
measures.test
} ON 0,
[Product].[Subcategory].[Subcategory] ON 1
FROM
[Adventure Works]