Step 3: Edit the schema to allow comparison operators on numeric levels

Set the level type in the Mondrian schema to either Numeric or Integer to enable the comparison operators, as shown below:

<Dimension foreignKey="CUSTOMERNUMBER" name="Credit Limit"> <Hierarchy hasAll="true" primaryKey="CUSTOMERNUMBER"> <Table name="CUSTOMER_W_TER"> </Table> <Level name="Credit Limit" levelType="Regular" column="CREDITLIMIT" type="Numeric" uniqueMembers="true" hideMemberIf="Never"> <Annotations> <Annotation name="AnalyzerBusinessGroup">Customers</Annotation></Annotations> </Level> </Hierarchy> </Dimension>

Note: If the Level is both Numeric and Time (for example, type = Integer, levelType = TimeYears and Annotation name = AnalyzerDateFormat, then the level will maintain the existing behavior for the relative date operators and not the comparison operators.

MDX performance

The performance of these comparison operators is highly dependent on the following Mondrian property:

# Max number of constraints in a single 'IN' SQL clause.
mondrian.rolap.maxConstraints=1000

Under ideal conditions, the join between the numeric level and other report levels is done in the database so that only tuples with data are processed in Mondrian. This can only occur if, after applying the comparison operator, the number of members is less than the maxConstraints setting.

Last updated

Was this helpful?