mondrian.olap
Class MondrianProperties

java.lang.Object
  extended by java.util.Dictionary<K,V>
      extended by java.util.Hashtable<Object,Object>
          extended by java.util.Properties
              extended by org.eigenbase.util.property.TriggerableProperties
                  extended by mondrian.olap.MondrianProperties
All Implemented Interfaces:
Serializable, Cloneable, Map<Object,Object>

public class MondrianProperties
extends TriggerableProperties

MondrianProperties contains the properties which determine the behavior of a mondrian instance.

There is a method for property valid in a mondrian.properties file. Although it is possible to retrieve properties using the inherited Properties.getProperty(String) method, we recommend that you use methods in this class.

Note to developers

If you add a property, you must:

Similarly if you update or delete a property.

Since:
22 December, 2002
Version:
$Id: //open/mondrian-release/3.2/src/main/mondrian/olap/MondrianProperties.java#3 $
Author:
jhyde
See Also:
Serialized Form

Nested Class Summary
(package private) static class MondrianProperties.FilePropertySource
          Implementation of MondrianProperties.PropertySource which reads from a File.
static interface MondrianProperties.PropertySource
          Represents a place that properties can be read from, and remembers the timestamp that we last read them.
static class MondrianProperties.SolveOrderModeEnum
          Strategies for applying solve order, exposed via the property SolveOrderMode.
(package private) static class MondrianProperties.UrlPropertySource
          Implementation of MondrianProperties.PropertySource which reads from a URL.
 
Field Summary
 StringProperty AggregateRules
          String property containing the name of the file which defines the rules for recognizing an aggregate table.
 StringProperty AggregateRuleTag
          String property that is the AggRule element's tag value.
 StringProperty AlertNativeEvaluationUnsupported
          Alerting action to take in case native evaluation of a function is enabled but not supported for that function's usage in a particular query.
 BooleanProperty CaseSensitive
          Boolean property that controls whether the MDX parser resolves uses case-sensitive matching when looking up identifiers.
 StringProperty CatalogURL
          Property that contains the URL of the catalog to be used by CmdRunner and XML/A Test.
 BooleanProperty ChooseAggregateByVolume
          Boolean property that controls whether aggregate tables are ordered by their volume or row count.
 BooleanProperty CompareSiblingsByOrderKey
          Boolean property that controls whether sibling members are compared according to order key value fetched from their ordinal expression.
 IntegerProperty CrossJoinOptimizerSize
          Property that defines when to apply the crossjoin optimization algorithm.
 StringProperty DataSourceResolverClass
          Property that defines the name of the plugin class that resolves data source names to DataSource objects.
 BooleanProperty DisableCaching
          Boolean property that controls whether a RolapStar's aggregate data cache is cleared after each query.
 BooleanProperty EnableCacheHitCounters
          Property that controls whether aggregation cache hit / miss counters will be enabled
 BooleanProperty EnableExpCache
          Boolean property that controls whether to use a cache for frequently evaluated expressions.
 BooleanProperty EnableGroupingSets
          Property that defines whether to generate SQL queries using the GROUPING SETS construct for rollup.
 BooleanProperty EnableNativeCrossJoin
          if enabled some NON EMPTY CrossJoin will be computed in SQL
 BooleanProperty EnableNativeFilter
          if enabled some Filter() will be computed in SQL
 BooleanProperty EnableNativeNonEmpty
          some NON EMPTY set operations like member.children, level.members and member descendants will be computed in SQL
 BooleanProperty EnableNativeTopCount
          if enabled some TopCount will be computed in SQL
 BooleanProperty EnableNonEmptyOnAllAxis
          Boolean property that controls whether each query axis implicit has the NON EMPTY option set.
 BooleanProperty EnableRolapCubeMemberCache
          Property that determines whether to cache RolapCubeMember objects, each of which associates a member of a shared hierarchy with a particular cube in which it is being used.
 BooleanProperty EnableTotalCount
          If enabled, first row in the result of an XML/A drill-through request will be filled with the total count of rows in underlying database.
 BooleanProperty EnableTriggers
          Boolean property that controls whether to notify the Mondrian system when a property value changes.
 BooleanProperty ExpandNonNative
          When looking for native evaluation of an expression, expand non native subexpressions into MemberLists.
 StringProperty ExpCompilerClass
          Property that defines the name of the class used to compile scalar expressions.
 StringProperty FoodmartJdbcURL
          Property containing the JDBC URL of the FoodMart database.
 BooleanProperty GenerateAggregateSql
          Boolean property that controls whether to print the SQL code generated for aggregate tables.
 BooleanProperty GenerateFormattedSql
          Boolean property that controls pretty-print mode.
 IntegerProperty HighCardChunkSize
          Property that establishes the amount of chunks for querying cells involving high-cardinality dimensions.
 BooleanProperty IgnoreInvalidMembers
          Property that defines whether non-existent member errors should be ignored during schema load.
 BooleanProperty IgnoreInvalidMembersDuringQuery
          Property that defines whether non-existent member errors should be ignored during query validation.
 BooleanProperty IgnoreMeasureForNonJoiningDimension
          Property that defines whether to ignore measure when non joining dimension is in the tuple during aggregation.
 IntegerProperty IterationLimit
          Property that defines the iteration limit when computing an aggregate; 0 indicates unlimited.
 IntegerProperty Iterations
          todo:
 StringProperty JdbcDrivers
          Property containing a list of JDBC drivers to load automatically.
 StringProperty JdbcFactoryClass
          Property that defines the JdbcSchema factory class which determines the list of tables and columns of a specific datasource.
 StringProperty LocalePropFile
          String property that holds the name of the class whose resource bundle is to be used to for this schema.
 IntegerProperty MaxConstraints
          Max number of constraints in a single `IN' SQL clause.
 IntegerProperty MaxEvalDepth
          Boolean property that defines the maximum number of passes allowable while evaluating an MDX expression.
 IntegerProperty MaxRows
          Property that defines limit on the number of rows returned by XML/A drill through request.
 BooleanProperty MemoryMonitor
          Property that defines whether the MemoryMonitor should be enabled.
 StringProperty MemoryMonitorClass
          Property that defines the name of the class used as a memory monitor.
 IntegerProperty MemoryMonitorThreshold
          Property that defines the default MemoryMonitor percentage threshold.
 IntegerProperty NativizeMaxResults
           
 IntegerProperty NativizeMinThreshold
           
 BooleanProperty NeedDimensionPrefix
          Property determines if elements of dimension (levels, hierarchies, members) need to be prefixed with dimension name in MDX query.
 BooleanProperty NullDenominatorProducesNull
          Property that defines the behavior of division if the denominator evaluates to zero.
 StringProperty NullMemberRepresentation
          Property that determines how a null member value is represented in the result output.
 BooleanProperty OptimizePredicates
          Boolean property that determines whether Mondrian optimizes predicates.
 StringProperty PropertyValueMapFactoryClass
          Property that defines the name of the factory class used to create maps of member properties to their respective values.
 StringProperty QueryFileDirectory
          Property defining where the test XML files are.
 StringProperty QueryFilePattern
          Property that defines a pattern for which test XML files to run.
 IntegerProperty QueryLimit
          Maximum number of simultaneous queries the system will allow.
 IntegerProperty QueryTimeout
          Property that defines the timeout value (in seconds) for queries; 0, the default, indicates no timeout.
 BooleanProperty ReadAggregates
          Boolean property that determines whether Mondrian should read aggregate tables.
 IntegerProperty ResultLimit
          Integer property that, if set to a value greater than zero, limits the maximum size of a result set.
 StringProperty SolveOrderMode
          Property that controls the behavior of solve order of calculated members and sets.
 IntegerProperty SparseSegmentCountThreshold
          Property that, with SparseSegmentDensityThreshold, determines whether to choose a sparse or dense representation when storing collections of cell values in memory.
 DoubleProperty SparseSegmentDensityThreshold
          Property that, with SparseSegmentCountThreshold, determines whether to choose a sparse or dense representation when storing collections of cell values in memory.
 StringProperty SqlMemberSourceValuePoolFactoryClass
          Property that defines the name of the class used in SqlMemberSource to pool common values.
 BooleanProperty SsasCompatibleNaming
          Property that defines whether to enable new naming behavior.
 StringProperty TestClass
          String property that determines which test class to run.
 StringProperty TestConnectString
          Property containing the connect string which regresssion tests should use to connect to the database.
 IntegerProperty TestExpDependencies
          Integer property that controls whether to test operators' dependencies, and how much time to spend doing it.
 StringProperty TestHighCardinalityDimensionList
          Property containing a list of dimensions in the Sales cube that should be treated as high-cardinality dimensions by the testing infrastructure.
 StringProperty TestJdbcPassword
          Property containing the JDBC password of a test database.
 StringProperty TestJdbcURL
          Property containing the JDBC URL of a test database.
 StringProperty TestJdbcUser
          Property containing the JDBC user of a test database.
 StringProperty TestName
          String property that determines which tests are run.
 IntegerProperty TestSeed
          Seed for random number generator used by some of the tests.
 IntegerProperty TimeLimit
          Property that returns the time limit for the test run in seconds.
 BooleanProperty UseAggregates
          Boolean property that controls whether Mondrian uses aggregate tables.
 IntegerProperty VUsers
          todo:
 BooleanProperty Warmup
          Property that indicates whether this is a "warmup test".
 StringProperty WarnIfNoPatternForDialect
          Property that controls if warning messages should be printed if a sql comparison tests do not contain expected sqls for the specified dialect.
 
Fields inherited from class org.eigenbase.util.property.TriggerableProperties
properties, triggers
 
Fields inherited from class java.util.Properties
defaults
 
Constructor Summary
MondrianProperties()
           
 
Method Summary
static MondrianProperties instance()
          Returns the singleton.
 void populate()
          Loads this property set from: the file "$PWD/mondrian.properties" (if it exists); the "mondrian.properties" in the CLASSPATH; and from the system properties.
 boolean triggersAreEnabled()
           
 
Methods inherited from class org.eigenbase.util.property.TriggerableProperties
getProperties, getPropertyDefinition, getPropertyList, register, setProperty
 
Methods inherited from class java.util.Properties
getProperty, getProperty, list, list, load, loadFromXML, propertyNames, save, store, storeToXML, storeToXML
 
Methods inherited from class java.util.Hashtable
clear, clone, contains, containsKey, containsValue, elements, entrySet, equals, get, hashCode, isEmpty, keys, keySet, put, putAll, rehash, remove, size, toString, values
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

QueryLimit

public final transient IntegerProperty QueryLimit
Maximum number of simultaneous queries the system will allow.

Oracle fails if you try to run more than the 'processes' parameter in init.ora, typically 150. The throughput of Oracle and other databases will probably reduce long before you get to their limit.


JdbcDrivers

public final transient StringProperty JdbcDrivers
Property containing a list of JDBC drivers to load automatically. Must be a comma-separated list of class names, and the classes must be on the class path.


ResultLimit

public final transient IntegerProperty ResultLimit
Integer property that, if set to a value greater than zero, limits the maximum size of a result set.


HighCardChunkSize

public final transient IntegerProperty HighCardChunkSize
Property that establishes the amount of chunks for querying cells involving high-cardinality dimensions. Should prime with mondrian.result.limit.


TestName

public final transient StringProperty TestName
String property that determines which tests are run.

This is a regular expression as defined by Pattern. If this property is specified, only tests whose names match the pattern in its entirety will be run.

See Also:
TestClass

TestClass

public final transient StringProperty TestClass
String property that determines which test class to run.

This is the name of the class which either implements junit.framework.Test or has a method public [static] junit.framework.Test suite().

Example:

mondrian.test.Class=mondrian.test.FoodMartTestCase

See Also:
TestName

TestConnectString

public final transient StringProperty TestConnectString
Property containing the connect string which regresssion tests should use to connect to the database. Format is specified in Util.parseConnectString(String).


TestHighCardinalityDimensionList

public final transient StringProperty TestHighCardinalityDimensionList
Property containing a list of dimensions in the Sales cube that should be treated as high-cardinality dimensions by the testing infrastructure. This allows us to run the full suite of tests with high-cardinality functionality enabled.


FoodmartJdbcURL

public final transient StringProperty FoodmartJdbcURL
Property containing the JDBC URL of the FoodMart database. The default value is to connect to an ODBC data source called "MondrianFoodMart".


TestJdbcURL

public final transient StringProperty TestJdbcURL
Property containing the JDBC URL of a test database. It does not default.


TestJdbcUser

public final transient StringProperty TestJdbcUser
Property containing the JDBC user of a test database. The default value is null, to cope with DBMSs that don't need this.


TestJdbcPassword

public final transient StringProperty TestJdbcPassword
Property containing the JDBC password of a test database. The default value is null, to cope with DBMSs that don't need this.


SparseSegmentCountThreshold

public final transient IntegerProperty SparseSegmentCountThreshold
Property that, with SparseSegmentDensityThreshold, determines whether to choose a sparse or dense representation when storing collections of cell values in memory.

When storing collections of cell values, Mondrian has to choose between a sparse and a dense representation, based upon the possible and actual number of values. The density is actual / possible.

We use a sparse representation if (possible - countThreshold) * densityThreshold > actual

For example, at the default values (countThreshold = 1000, SparseSegmentDensityThreshold = 0.5), we use a dense representation for

Any fewer actual values, or any more possible values, and Mondrian will use a sparse representation.


SparseSegmentDensityThreshold

public final transient DoubleProperty SparseSegmentDensityThreshold
Property that, with SparseSegmentCountThreshold, determines whether to choose a sparse or dense representation when storing collections of cell values in memory.


QueryFilePattern

public final transient StringProperty QueryFilePattern
Property that defines a pattern for which test XML files to run. Pattern has to match a file name of the form: querywhatever.xml in the directory.

Example:

mondrian.test.QueryFilePattern=queryTest_fec[A-Za-z0-9_]*.xml


QueryFileDirectory

public final transient StringProperty QueryFileDirectory
Property defining where the test XML files are.


Iterations

public final transient IntegerProperty Iterations
todo:


VUsers

public final transient IntegerProperty VUsers
todo:


TimeLimit

public final transient IntegerProperty TimeLimit
Property that returns the time limit for the test run in seconds. If the test is running after that time, it is terminated.


Warmup

public final transient BooleanProperty Warmup
Property that indicates whether this is a "warmup test".


CatalogURL

public final transient StringProperty CatalogURL
Property that contains the URL of the catalog to be used by CmdRunner and XML/A Test.


EnableCacheHitCounters

public final transient BooleanProperty EnableCacheHitCounters
Property that controls whether aggregation cache hit / miss counters will be enabled


WarnIfNoPatternForDialect

public final transient StringProperty WarnIfNoPatternForDialect
Property that controls if warning messages should be printed if a sql comparison tests do not contain expected sqls for the specified dialect. The tests are skipped if no expected sqls are found for the current dialect.

Possible values are the following: "NONE": no warning (default) "ANY": any dialect "ACCESS" "DERBY" "LUCIDDB" "MYSQL" ...and any Dialect enum in SqlPattern.Dialect

Specific tests can overwrite the default setting. The priority is:


UseAggregates

public final transient BooleanProperty UseAggregates
Boolean property that controls whether Mondrian uses aggregate tables.

If true, then Mondrian uses aggregate tables. This property is queried prior to each aggregate query so that changing the value of this property dynamically (not just at startup) is meaningful.

Aggregates can be read from the database using the ReadAggregates property but will not be used unless this property is set to true.


ReadAggregates

public final transient BooleanProperty ReadAggregates
Boolean property that determines whether Mondrian should read aggregate tables.

If set to true, then Mondrian scans the database for aggregate tables. Unless mondrian.rolap.aggregates.Use is set to true, the aggregates found will not be used.


ChooseAggregateByVolume

public final transient BooleanProperty ChooseAggregateByVolume
Boolean property that controls whether aggregate tables are ordered by their volume or row count.

If true, Mondrian uses the aggregate table with the smallest volume (number of rows multiplied by number of columns); if false, Mondrian uses the aggregate table with the fewest rows.


AggregateRules

public final transient StringProperty AggregateRules
String property containing the name of the file which defines the rules for recognizing an aggregate table. Can be either a resource in the Mondrian jar or a URL.

The default value is "/DefaultRules.xml", which is in the mondrian.rolap.aggmatcher package in Mondrian.jar.

Normally, this property is not set by a user.


AggregateRuleTag

public final transient StringProperty AggregateRuleTag
String property that is the AggRule element's tag value.

Normally, this property is not set by a user.


GenerateAggregateSql

public final transient BooleanProperty GenerateAggregateSql
Boolean property that controls whether to print the SQL code generated for aggregate tables.

If set, then as each aggregate request is processed, both the lost and collapsed dimension create and insert sql code is printed. This is for use in the CmdRunner allowing one to create aggregate table generation sql.


DisableCaching

public final transient BooleanProperty DisableCaching
Boolean property that controls whether a RolapStar's aggregate data cache is cleared after each query. If true, no RolapStar will cache aggregate data from one query to the next (the cache is cleared after each query).


EnableTriggers

public final transient BooleanProperty EnableTriggers
Boolean property that controls whether to notify the Mondrian system when a property value changes.

This allows objects dependent on Mondrian properties to react (that is, reload), when a given property changes via, say, MondrianProperties.instance().populate(null) or MondrianProperties.instance().QueryLimit.set(50).


GenerateFormattedSql

public final transient BooleanProperty GenerateFormattedSql
Boolean property that controls pretty-print mode. If set to true, the all SqlQuery SQL strings will be generated in pretty-print mode, formatted for ease of reading.


EnableNonEmptyOnAllAxis

public final transient BooleanProperty EnableNonEmptyOnAllAxis
Boolean property that controls whether each query axis implicit has the NON EMPTY option set. The default is false.


ExpandNonNative

public final transient BooleanProperty ExpandNonNative
When looking for native evaluation of an expression, expand non native subexpressions into MemberLists.


CompareSiblingsByOrderKey

public final transient BooleanProperty CompareSiblingsByOrderKey
Boolean property that controls whether sibling members are compared according to order key value fetched from their ordinal expression. The default is false (only database ORDER BY is used).


EnableExpCache

public final transient BooleanProperty EnableExpCache
Boolean property that controls whether to use a cache for frequently evaluated expressions. With the cache disabled, an expression like Rank([Product].CurrentMember, Order([Product].MEMBERS, [Measures].[Unit Sales])) would perform many redundant sorts. The default is true.


TestExpDependencies

public final transient IntegerProperty TestExpDependencies
Integer property that controls whether to test operators' dependencies, and how much time to spend doing it.

If this property is positive, Mondrian's test framework allocates an expression evaluator which evaluates each expression several times, and makes sure that the results of the expression are independent of dimensions which the expression claims to be independent of.

The default is 0.


TestSeed

public final transient IntegerProperty TestSeed
Seed for random number generator used by some of the tests.

Any value besides 0 or -1 gives deterministic behavior. The default value is 1234: most users should use this. Setting the seed to a different value can increase coverage, and therefore may uncover new bugs.

If you set the value to 0, the system will generate its own pseudo-random seed.

If you set the value to -1, Mondrian uses the next seed from an internal random-number generator. This is a little more deterministic than setting the value to 0.


LocalePropFile

public final transient StringProperty LocalePropFile
String property that holds the name of the class whose resource bundle is to be used to for this schema. For example, if the class is com.acme.MyResource, mondrian will look for a resource bundle called com/acme/MyResource_<i>locale</i>.properties on the class path. (This property has a confusing name because in a previous release it actually held a file name.)

Used for the LocalizingDynamicSchemaProcessor; see Internationalization for more details.

Default value is null.


EnableNativeCrossJoin

public final transient BooleanProperty EnableNativeCrossJoin
if enabled some NON EMPTY CrossJoin will be computed in SQL


EnableNativeTopCount

public final transient BooleanProperty EnableNativeTopCount
if enabled some TopCount will be computed in SQL


EnableNativeFilter

public final transient BooleanProperty EnableNativeFilter
if enabled some Filter() will be computed in SQL


EnableNativeNonEmpty

public final transient BooleanProperty EnableNativeNonEmpty
some NON EMPTY set operations like member.children, level.members and member descendants will be computed in SQL


AlertNativeEvaluationUnsupported

public final transient StringProperty AlertNativeEvaluationUnsupported
Alerting action to take in case native evaluation of a function is enabled but not supported for that function's usage in a particular query. (No alert is ever raised in cases where native evaluation would definitely have been wasted effort.) Recognized actions:


EnableTotalCount

public final transient BooleanProperty EnableTotalCount
If enabled, first row in the result of an XML/A drill-through request will be filled with the total count of rows in underlying database.


CaseSensitive

public final transient BooleanProperty CaseSensitive
Boolean property that controls whether the MDX parser resolves uses case-sensitive matching when looking up identifiers. The default is false.


MaxRows

public final transient IntegerProperty MaxRows
Property that defines limit on the number of rows returned by XML/A drill through request.


MaxConstraints

public final transient IntegerProperty MaxConstraints
Max number of constraints in a single `IN' SQL clause.

This value may be variant among database prodcuts and their runtime settings. Oracle, for example, gives the error "ORA-01795: maximum number of expressions in a list is 1000".

Recommended values:


OptimizePredicates

public final transient BooleanProperty OptimizePredicates
Boolean property that determines whether Mondrian optimizes predicates.


MaxEvalDepth

public final transient IntegerProperty MaxEvalDepth
Boolean property that defines the maximum number of passes allowable while evaluating an MDX expression.

If evaluation exceeds this depth (for example, while evaluating a very complex calculated member), Mondrian will throw an error.


JdbcFactoryClass

public final transient StringProperty JdbcFactoryClass
Property that defines the JdbcSchema factory class which determines the list of tables and columns of a specific datasource.

See Also:
JdbcSchema

DataSourceResolverClass

public final transient StringProperty DataSourceResolverClass
Property that defines the name of the plugin class that resolves data source names to DataSource objects. The class must implement the DataSourceResolver interface. If not specified, the default implementation uses JNDI to perform resolution.


QueryTimeout

public final transient IntegerProperty QueryTimeout
Property that defines the timeout value (in seconds) for queries; 0, the default, indicates no timeout.


IgnoreInvalidMembers

public final transient BooleanProperty IgnoreInvalidMembers
Property that defines whether non-existent member errors should be ignored during schema load.


IgnoreInvalidMembersDuringQuery

public final transient BooleanProperty IgnoreInvalidMembersDuringQuery
Property that defines whether non-existent member errors should be ignored during query validation.


NullMemberRepresentation

public final transient StringProperty NullMemberRepresentation
Property that determines how a null member value is represented in the result output.

AS 2000 shows this as empty value

AS 2005 shows this as "(null)" value


IterationLimit

public final transient IntegerProperty IterationLimit
Property that defines the iteration limit when computing an aggregate; 0 indicates unlimited.


MemoryMonitor

public final transient BooleanProperty MemoryMonitor
Property that defines whether the MemoryMonitor should be enabled. By default for Java5 and above it is not enabled.


MemoryMonitorThreshold

public final transient IntegerProperty MemoryMonitorThreshold
Property that defines the default MemoryMonitor percentage threshold.


MemoryMonitorClass

public final transient StringProperty MemoryMonitorClass
Property that defines the name of the class used as a memory monitor.

If the value is non-null, it is used by the MemoryMonitorFactory to create the implementation.


ExpCompilerClass

public final transient StringProperty ExpCompilerClass
Property that defines the name of the class used to compile scalar expressions.

If the value is non-null, it is used by the ExpCompiler.Factory to create the implementation.


PropertyValueMapFactoryClass

public final transient StringProperty PropertyValueMapFactoryClass

Property that defines the name of the factory class used to create maps of member properties to their respective values.

If the value is non-null, it is used by the PropertyValueFactory to create the implementation. If unset, RolapMemberBase.DefaultPropertyValueMapFactory will be used.


SqlMemberSourceValuePoolFactoryClass

public final transient StringProperty SqlMemberSourceValuePoolFactoryClass

Property that defines the name of the class used in SqlMemberSource to pool common values.

If the value is non-null, it is used by the SqlMemberSource.ValueMapFactory to create the implementation. If it is not set, then SqlMemberSource.NullValuePoolFactory will be used, meaning common values will not be pooled.


CrossJoinOptimizerSize

public final transient IntegerProperty CrossJoinOptimizerSize
Property that defines when to apply the crossjoin optimization algorithm.

If a crossjoin input list's size is larger than this property's value and the axis has the "NON EMPTY" qualifier, then the crossjoin non-empty optimizer is applied. Setting this value to '0' means that for all crossjoin input lists in non-empty axes will have the optimizer applied. On the other hand, if the value is set larger than any possible list, say Integer.MAX_VALUE, then the optimizer will never be applied.


NullDenominatorProducesNull

public final transient BooleanProperty NullDenominatorProducesNull
Property that defines the behavior of division if the denominator evaluates to zero.

If a division has a non-null numerator and a null denominator, it evaluates to "Infinity", which conforms to MSAS behavior. However, the old semantics of evaluating this to NULL (non MSAS-conforming), is useful in some applications. This property controls whether the result should be NULL if the denominator is Null.


EnableGroupingSets

public final transient BooleanProperty EnableGroupingSets
Property that defines whether to generate SQL queries using the GROUPING SETS construct for rollup. By default it is not enabled.

Ignored on databases which do not support the GROUPING SETS construct (see Dialect.supportsGroupingSets()).


IgnoreMeasureForNonJoiningDimension

public final transient BooleanProperty IgnoreMeasureForNonJoiningDimension
Property that defines whether to ignore measure when non joining dimension is in the tuple during aggregation.

If there are unrelated dimensions to a measure in context during aggregation, the measure is ignored in the evaluation context. This behaviour kicks in only if the cubeusage for this measure has IgnoreUnrelatedDimensions attribute set to false.

For example, Gender doesn't join with [Warehouse Sales] measure.

With mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=true Warehouse Sales gets eliminated and is ignored in the aggregate value.

[Store Sales] + [Warehouse Sales] SUM({Product.members * Gender.members}) 7,913,333.82

With mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=false Warehouse Sales with Gender All level member contributes to the aggregate value.

[Store Sales] + [Warehouse Sales] SUM({Product.members * Gender.members}) 9,290,730.03

On a report where Gender M, F and All members exist a user will see a large aggregated value compared to the aggregated value that can be arrived at by suming up values against Gender M and F. This can be confusing to the user. This feature can be used to eliminate such a situation.


NeedDimensionPrefix

public final transient BooleanProperty NeedDimensionPrefix
Property determines if elements of dimension (levels, hierarchies, members) need to be prefixed with dimension name in MDX query.

For example when the property is true, the following queries will error out. The same queries will work when this property is set to false.

select {[M]} on 0 from sales

select {[USA]} on 0 from sales

select {[USA].[CA].[Santa Monica]} on 0 from sales

When the property is set to true, any query where elements are prefixed with dimension name as below will work

select {[Gender].[F]} on 0 from sales

select {[Customers].[Santa Monica]} on 0 from sales

Please note that this property does not govern the behaviour where in

[Gender].[M]

is resolved into a fully qualified

[Gender].[M]

In a scenario where the schema is very large and dimensions have large number of members a MDX query that has a invalid member in it will cause mondrian to to go through all the dimensions, levels, hierarchies, members and properties trying to resolve the element name. This behavior consumes considerable time and resources on the server. Setting this property to true will make it fail fast in a scenario where it is desirable.


EnableRolapCubeMemberCache

public final transient BooleanProperty EnableRolapCubeMemberCache
Property that determines whether to cache RolapCubeMember objects, each of which associates a member of a shared hierarchy with a particular cube in which it is being used.

The default is true, that is, use a cache. If you wish to use the member cache control aspects of CacheControl, you must set this property to false.

RolapCubeMember has recently become more lightweight to construct, and we may obsolete this cache and this property.


SolveOrderMode

public final transient StringProperty SolveOrderMode
Property that controls the behavior of solve order of calculated members and sets.

Valid values are "absolute" and "scoped" (the default). See MondrianProperties.SolveOrderModeEnum for details.


NativizeMinThreshold

public final transient IntegerProperty NativizeMinThreshold

NativizeMaxResults

public final transient IntegerProperty NativizeMaxResults

SsasCompatibleNaming

public final transient BooleanProperty SsasCompatibleNaming
Property that defines whether to enable new naming behavior.

If true, hierarchies are named [Dimension].[Hierarchy]; if false, [Dimension.Hierarchy].

Constructor Detail

MondrianProperties

public MondrianProperties()
Method Detail

instance

public static MondrianProperties instance()
Returns the singleton.

Returns:
Singleton instance

triggersAreEnabled

public boolean triggersAreEnabled()
Overrides:
triggersAreEnabled in class TriggerableProperties

populate

public void populate()
Loads this property set from: the file "$PWD/mondrian.properties" (if it exists); the "mondrian.properties" in the CLASSPATH; and from the system properties.


Get Mondrian at SourceForge.net. Fast, secure and free Open Source software downloads