Filtering MDX Query based on date selected through calender control exposed by SSRS DateTime Filter/parameter.
- Selected date from calender control in SSRS cannot be directly applied on MDX Query for filtering the data. But, We can do this by using following technique.
- Add new filter to your RDL with name "Date" & datatype "DateTime".
- As, MDX need Member name for filtering data we will first write an Expression in SSRS to get Unique name of member.
- Date format Comming out of Filter: dd-mm-yyyy
- Targeted format: [Date].[Date].&[yyyymmdd] --{This may vary from cube to cube}
- SSRS Expression:
- =Format("[Date].[Date].&["
& DatePart("yyyy",Parameters!Date.Value)
& right("0" & DatePart("m",Parameters!Date.Value),2)
& right("0" & DatePart("d",Parameters!Date.Value),2)
& "]")
- Now, Add new dataset to your RDL with query below.
- WITH MEMBER [Measures].[WTDOrderCount]
AS
SUM
(
WTD([Date].[Calendar Weeks].currentmember)
,[Measures].[Order Count]
)
MEMBER [Measures].[TDOrderCount]
AS
SUM
(
YTD([Date].[Calendar Weeks].currentmember)
,[Measures].[Order Count]
)
MEMBER [Measures].[YTDOrderCount]
AS
SUM
(
YTD([Date].[Calendar Weeks].currentmember)
,[Measures].[Order Count]
)
SELECT
{[Measures].[WTDOrderCount],[Measures].[YTDOrderCount]} ON 0
,{
[Date].[Calendar Weeks].[Calendar Week].Members
} on 1
FROM
(
SELECT { STRTOMEMBER(@Date)} ON 0
FROM [Adventure Works]
)
- Go to parameters tab and manually add new parameter with Parameter Name as "Date" and below SSRS Expression for getting Member Unique Names as "Paramter Value".
- =Format("[Date].[Date].&["
& DatePart("yyyy",Parameters!Date.Value)
& right("0" & DatePart("m",Parameters!Date.Value),2)
& right("0" & DatePart("d",Parameters!Date.Value),2)
& "]")
- Now, you should be effectively able to filter you data based on selection made through calender control exposed by SSRS DateTime Filter/parameter.
No comments:
Post a Comment