Reputation: 303
I want to count the number of
distinct (dimension) USER GUID on a
particular (dimension) Month
where (measure) M1 > 0 and (measure) M2 > 0
My query:
WITH
MEMBER [Measures].[M1 Count] AS
Count
(
NonEmpty
(
NonEmpty
(
[AAUser].[USER GUID].[USER GUID].MEMBERS
,[Measures].[M1]
)
*
{[Measures].[M1]}
)
)
MEMBER [Measures].[T2 Count] AS
Count
(
NonEmpty
(
NonEmpty
(
[AAUser].[USER GUID].[USER GUID].MEMBERS
,[Measures].[T2]
)
,{[Measures].[T2]}
)
)
SELECT
{
[Measures].[M1 Count]
,[Measures].[T2 Count]
} ON COLUMNS
,[AATime].[Month].[Month].ALLMEMBERS ON ROWS
FROM [MyCube]
WHERE
{
StrToMember("[AATime].&[2013-11-01T00:00:00]")
:
StrToMember("[AATime].&[2014-10-31T00:00:00]")
};
The result I’m getting is:
It’s wrong because I’m selecting NONEMPTY
, which would return everything (even if the value is 0). Can anyone please modify my query and filter (where [Measures].[M1] > 0 and [Measures].[M2] > 0)
Upvotes: 0
Views: 3465
Reputation: 35605
(Not tested) Maybe you can use the function filter
:
WITH
MEMBER [Measures].[M1 Count] AS
Count
(
NonEmpty
(
NonEmpty
(
filter(
[AAUser].[USER GUID].[USER GUID].MEMBERS
, ([Measures].[M1] > 0 AND [Measures].[M2] > 0)
)
,[Measures].[M1]
)
*
{[Measures].[M1]}
)
)
MEMBER [Measures].[T2 Count] AS
Count
(
NonEmpty
(
NonEmpty
(
filter(
[AAUser].[USER GUID].[USER GUID].MEMBERS
, ([Measures].[M1] > 0 AND [Measures].[M2] > 0)
)
,[Measures].[T2]
)
,{[Measures].[T2]}
)
)
SELECT
{
[Measures].[M1 Count]
,[Measures].[T2 Count]
} ON COLUMNS
,[AATime].[Month].[Month].ALLMEMBERS ON ROWS
FROM [MyCube]
But maybe something along these lines will work better?
WITH
MEMBER [Measures].[M1 Count] AS
Sum
(
[AAUser].[USER GUID].[USER GUID]
,IIF
(
[Measures].[M1] > 0 AND [Measures].[M2] > 0
,1
,NULL
)
)
MEMBER [Measures].[T2 Count] AS
Sum
(
NonEmpty
(
[AAUser].[USER GUID].[USER GUID]
,[Measures].[T2]
)
,IIF
(
[Measures].[M1] > 0 AND [Measures].[M2] > 0
,1
,NULL
)
)
SELECT
{
[Measures].[M1 Count]
,[Measures].[T2 Count]
} ON COLUMNS
,[AATime].[Month].[Month].ALLMEMBERS ON ROWS
FROM [MyCube];
Upvotes: 3