I am new to MDX Query, and having read up on some articles it seems like the colon operator could be used to specify a range in an ordered set like that for a date/time dimension.
What I effectively need is to be able to do filtering on a time_dimension
- between two date/time (e.g. between 10:00 10Jun02 and 23:00 21Feb03)
- After one date/time (e.g. After 13:00 14Jun03)
- Before one date/time (e.g. Before 17May01)
I have tried something like the following to filter between two dates, which failed. The time related clauses have been unintended to make them stand out. All other non-time related clauses has been tested and are working as expected.
The error I get is Syntax error, expecting SELECT, near:
'01/01/1999'.....................
I know I could filter by something like
, but I would rather have an absolute date specified.
What I effectively need is to be able to do filtering on a time_dimension
- between two date/time (e.g. between 10:00 10Jun02 and 23:00 21Feb03)
- After one date/time (e.g. After 13:00 14Jun03)
- Before one date/time (e.g. Before 17May01)
I have tried something like the following to filter between two dates, which failed. The time related clauses have been unintended to make them stand out. All other non-time related clauses has been tested and are working as expected.
Code:
WITH
MEMBER [class_dimension].['Plant Super Class' OR 'People Super Class']
AS '([class_dimension].[Plant Super Class],
Measures.[Measurement]) + ([class_dimension].[People Super Class], Measures.[Measurement])'
MEMBER [org_dimension].[Org1 OR Org2]
AS '([org_dimension].[Org1], Measures.[Measurement]) + ([org_dimension].[Org2], Measures.[Measurement])'
/*****************************************************************
* The following date/time calculated member clause does not seem to be working *
*****************************************************************/
MEMBER [time_dimension].[Selected]
As 'Sum(FILTER([time_dimension].Members,
VBA!CDate([time_dimension].CurrentMember.Name) >=VBA!CDate('01/01/1999 10:00') AND
VBA!CDate([time_dimension].CurrentMember.Name) <=VBA!CDate('12/12/2002 22:00'))'
SELECT
{Measures.[Measurement]} on ROWS,
{[area_dimension].Members} ON COLUMNS
FROM
dataCube
WHERE
(
[class_dimension].['Plant Super Class' OR 'People Super Class'] ,[org_dimension].[Org1 OR Org2]
/****************************
* Date/time filtering is not working *
****************************/
[time_dimension].[Selected]
)
'01/01/1999'.....................
I know I could filter by something like
Code:
[time_dimension].[1999].[Q1].[1]:[time_dimension].[2002].[Q4].[3]