How to Rank in order without skipping in MDX query

118 Views Asked by At

I have a MDX query that Rank clients but in the WHERE Clause I added

With Member [Measures].[Rank2] As 
IIF([DimClient].[Client].CurrentMember.member_caption = [ClientBenchmark].[ClientGroup].currentMember.member_caption,0,
    Rank ([DimClient].[Client].CurrentMember,(Order ([DimClient].[Client].[Client],[Measures].[Vol], BDesc)))
    )

Select {​​[Measures].[Vol]
,[Measures].[Rank2]}​​ On Columns,
 {​​[DimClient].[Client].[Client]}​​ on Rows

From [cube] 
where [ClientBenchmark].[Client].&[ATTS];

When executed it returns

enter image description here

DimClient and ClientBenchmark dimensions are unrelated in the cube.

However, I want to achieve the screenshot below

enter image description here

Note the ranking didn't skip. I will appreciate your solution.

1

There are 1 best solutions below

0
On

Maybe try an additional FILTER inside the RANK?

With 
Member [Measures].[Rank2] As 
IIF(
  [DimClient].[Client].CurrentMember.member_caption 
     = [ClientBenchmark].[ClientGroup].currentMember.member_caption
  ,0
  ,Rank (
      [DimClient].[Client].CurrentMember,
      (
          Order (
             filter(
               EXISTING ([DimClient].[Client].[Client] ),
               [DimClient].[Client].CurrentMember.member_caption 
                    <> [ClientBenchmark].[ClientGroup].currentMember.member_caption
             ),
             [Measures].[Vol], 
             BDesc
           )
       )   
    )
)
Select 
{​​[Measures].[Vol]
,[Measures].[Rank2]}​​ On Columns,
 {​​[DimClient].[Client].[Client]}​​ on Rows

From [cube] 
where [ClientBenchmark].[Client].&[ATTS];