[Mondrian] Native Dimension Filter

Rushan rushan.chen at gmail.com
Thu Apr 16 21:51:31 EDT 2009

We have come across many reports here at LucidEra where the customer 
always wants to exclude a few "exception" dimension values. The MDX 
either enumerates all the desired values, or use a NOT IN filter such as 
the one below:

  Filter([Product].[Product Family].Members,[Product].CurrentMember Not In {[Product].[All Products].[Drink]})

Currently, this filter is not translated to SQL when Mondrian loads the 
Product Family members. I did some experiment and found that if they 
were natively evaluated, and especially if the members excluded are from 
the lowest levels of a deep hierarchy, evaluating the filter natively 
can help quite a bit with the MDX query performance.

I did some prototyping and sketched out the design here:


Note that the only dimension filter considered at this point is In/Not 
In. There are other candidates such as Matches/Not Matches filter. I 
punted on this one because DBs have different levels of SQL regexp 
support. Some are buggy such as LucidDB.

Please take a look and let me know if you have any questions with the 
overall idea. Also, if you have use cases of other dimension filters 
that fit in the constraints listed in the wiki, it will be good to see 
if they could be made native by using a similar approach.


More information about the Mondrian mailing list