Monday, May 23, 2011

Filter dimension member using MDX VBA function

If you are passing month time member in your MDX to slice cube and need to get quarter number for some calculation, you can try something like this. Assume a case where you are showing monthly measure value on the report but the quarterly target. In this case you will need to derive quarter number from month parameter passed in the MDX and define a calculated member for target.

Find MDX example below  –

WITH 
MEMBER
[INVESTMENT PRODUCT].[PRODUCT NAME].SYKESPRODUCT
AS
Aggregate
(
{
Filter
(
NonEmpty
(
[INVESTMENT PRODUCT].[PRODUCT NAME].[PRODUCT NAME].
MEMBERS
,[Measures].[ONCE DONE SURVEYS]
)
,
VBA!Left
(
VBA!Ltrim([INVESTMENT PRODUCT].[PRODUCT NAME].CurrentMember.Name)
,5
)
= "SYKES"
)
}
)
MEMBER [INVESTMENT PRODUCT].[PRODUCT NAME].OTHERPRODUCT
AS
Aggregate
(
Filter
(
NonEmpty
(
[INVESTMENT PRODUCT].[PRODUCT NAME].[PRODUCT NAME].MEMBERS,
,[Measures].[ONCE DONE SURVEYS]
)
,
VBA!Left
(
VBA!Ltrim([INVESTMENT PRODUCT].[PRODUCT NAME].CurrentMember.Name)
,5
)
<> "SYKES"
)
)
SELECT
{[Measures].[ONCE DONE SURVEYS]}
ON COLUMNS
,{
{
[INVESTMENT PRODUCT].[PRODUCT NAME].SYKESPRODUCT
,[INVESTMENT PRODUCT].[PRODUCT NAME].OTHERPRODUCT
}
*
[TIME].[YQMD].[Month].&[2010-11-01T00:00:00]
}
ON ROWS
FROM
[YOUR CUBE];

No comments:

Post a Comment