📄 configuration.html
字号:
<code> <a href="api/mondrian/olap/MondrianProperties.html#NullOrZeroDenominatorProducesNull">mondrian.olap.NullOrZeroDenominatorProducesNull</a></code></td> <td>boolean</td> <td>false</td> <td> 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 properties controls whether the result should be NULL when denominator is NULL or zero. </td> </tr> <tr> <td> <code> <a href="api/mondrian/olap/MondrianProperties.html#NeedDimensionPrefix">mondrian.olap.elements.NeedDimensionPrefix</a></code> </td> <td>boolean</td> <td>false</td> <td> <p>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. <blockquote> <p> <ul> <li><code>select {[M]} on 0 from sales</code></li> <li><code>select {[USA]} on 0 from sales</code></li> <li><code>select {[USA].[CA].[Santa Monica]} on 0 from sales</code></li> </ul> </blockquote> <p> When the property is set to true, any query where elements are prefixed with dimension name as below will work <blockquote> <p> <ul> <li><code>select {[Gender].[F]} on 0 from sales</code></li> <li><code>select {[Customers].[Santa Monica]} on 0 from sales</code></li> </ul> </blockquote> <p> Please note that this property does not govern the behaviour where in <blockquote> <p> <li><code>[Gender].[M]</code></li> </blockquote> <p> is resolved into a fully qualified <blockquote> <p> <li><code>[Gender].[All Gender].[M]</code></li> </blockquote> <p>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 behaviour 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 </td> </tr> <tr> <td> <code> <a href="api/mondrian/olap/MondrianProperties.html#IgnoreMeasureForNonJoiningDimension">mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension</a></code></td> <td>boolean</td> <td>false</td> <td> 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 <code><a href="schema.html#Virtual_cubes">CubeUsage</a></code> for this measure has <code><a href="schema.html#Virtual_cubes">IgnoreUnrelatedDimensions</a></code> attribute set to false <p>For example, Gender doesn't join with [Warehouse Sales] measure. <p>With <code>mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=true</code> <p>Warehouse Sales gets eliminated and is ignored in the aggregate value <blockquote><code>SUM({Product.members * Gender.members})</code></blockquote> <blockquote><code>[Store Sales] + [Warehouse Sales] = 7,913,333.82</code></blockquote> <p>With <code>mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=false</code> <p>Warehouse Sales is part of the aggregate value. <blockquote><code>SUM({Product.members * Gender.members})</code></blockquote> <blockquote><code>[Store Sales] + [Warehouse Sales] = 9,290,730.03</code></blockquote> <p>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. </td> </tr> <tr> <td> <code> <a href="api/mondrian/olap/MondrianProperties.html#SolveOrderMode">mondrian.rolap.SolveOrderMode</a></code></td> <td>string</td> <td>absolute</td> <td> <p>Controls solve_order evaluation behavior.</p> <p>Valid values are: <ul> <li><b>absolute</b> - The SOLVE_ORDER value is absolute regardless of where it is defined; e.g. a query defined calculated member with a SOLVE_ORDER of 1 always takes precedence over a cube defined value of 2.</li> <li><b>scoped</b> - Cube calculated members are resolved before any session scope calculated members, and session scope members are resolved before any query defined calculation. The SOLVE_ORDER value only applies within the scope in which it was defined.</li> </ul></p> <p>The default behavior (scoped) is compatible with Microsoft SQL Server Analysis Services 2005 and later. Use {@code absolute} to be compatible with Analysis Services 2000 and Mondrian 3.0 and earlier.</p> </td> </tr> <tr> <td colspan="4"> <b><br> Testing</b> </td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#TestName"> mondrian.test.Name</a></code></td> <td>string</td> <td>null</td> <td>Property which determines which tests are run. This is a <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html"> Java regular expression</a>. If this property is specified, only tests whose names match the pattern in its entirety will be run.</td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#TestClass"> mondrian.test.Class</a></code></td> <td>string</td> <td>-</td> <td>Property which determines which test class to run. This is the name of the class which either implements interface <code> <a href="http://junit.sourceforge.net/javadoc/junit/framework/Test.html"> junit.framework.Test</a></code> or has a method <code>public static junit.framework.Test suite()</code>.</td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#TestConnectString"> mondrian.test.connectString</a></code></td> <td>string</td> <td>-</td> <td>Property containing the connect string which regresssion tests should use to connect to the database.<p>See the <a href="#Connect_strings"> connect string specification</a> for more details.</td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#QueryFilePattern"> mondrian.test.QueryFilePattern</a></code></td> <td>string</td> <td>-</td> <td>(not documented)</td> </tr> <tr> <td><code> <a href="api/mondrian/olap/MondrianProperties.html#QueryFileDirectory"> mondrian.test.QueryFileDirectory</a></code></td> <td>string</td> <td>-</td> <td>(not documented)</td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#Iterations"> mondrian.test.Iterations</a></code></td> <td>int</td> <td>1</td> <td>(not documented)</td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#VUsers"> mondrian.test.VUsers</a></code></td> <td>int</td> <td>1</td> <td>(not documented)</td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#TimeLimit"> mondrian.test.TimeLimit</a></code></td> <td>int</td> <td>0</td> <td>The time limit for the test run in seconds. If the test is running after that time, it is terminated.</td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#Warmup"> mondrian.test.Warmup</a></code></td> <td>boolean</td> <td>false</td> <td>Whether this is a "warmup test".</td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#CatalogURL"> mondrian.catalogURL</a></code></td> <td>string</td> <td>-</td> <td>The URL of the catalog to be used by <a href="api/mondrian/tui/CmdRunner.html">CmdRunner</a> and XML/A Test.</td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#TestExpDependencies"> mondrian.test.ExpDependencies</a></code></td> <td>int</td> <td>0</td> <td>Whether to test operators' dependencies, and how much time to spend doing it.<br> <br> 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.</td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#TestSeed"> mondrian.test.random.seed</a></code></td> <td>int</td> <td>1234</td> <td>Seed for random number generator used by some of the tests.<p>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.</p> <p>If you set the value to 0, the system will generate its own pseudo-random seed.</p> <p>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.</p> </td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#TestJdbcURL"> mondrian.test.jdbcURL</a></code></td> <td>string</td> <td>-</td> <td>Property containing the JDBC URL of a test database. There is no default value.</td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#TestJdbcUser"> mondrian.test.jdbcUser</a></code></td> <td>string</td> <td>-</td> <td>Property containing the JDBC user of a test database. The default value is null, to cope with DBMSs that don't need this.</td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#TestJdbcPassword"> mondrian.test.jdbcPassword</a></code></td> <td>string</td> <td>-</td> <td>Property containing the JDBC password of a test database. The default value is null, to cope with DBMSs that don't need this.</td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#TestWarnIfNoPatternForDialect"> mondrian.test.WarnIfNoPatternForDialect</a></code></td> <td>string</td> <td>NONE</td> <td> Property which 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. <p>Possible values are the following: <ul> <li>"NONE": no warning (default) </li> <li>"ANY": any dialect</li> <li>"ACCESS"</li> <li>"DERBY"</li> <li>"LUCIDDB"</li> <li>"MYSQL"</li> <li>... and any Dialect enum in SqlPattern.Dialect</li> </ul> <p>Specific tests can overwrite the default setting. The priority between test setting and property file setting is:</p> <blockquote> Settings besides "NONE" in mondrian.properties file < Any setting in the test < "ANY" </blockquote> </td> </tr> <tr> <td colspan="4"> <b><br> Aggregate tables</b> </td> </tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#UseAggregates"> mondrian.rolap.aggregates.Use</a></code></td> <td>boolean</td> <td>false</td> <td>Whether to use aggregate tables.<p>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.</p> <p>Aggregates can be read from the database using the <code>mondrian.rolap. aggregates.Read</code> property but will not be used unless this property is set to true.</p></td> </tr><tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#OptimizePredicates"> mondrian.rolap.aggregates.optimizePredicates</a></code></td> <td>boolean</td> <td>true</td> <td>Determines whether Mondrian optimizes predicates or not <p>If set to true, Mondrian intelligently optimizes certain predicates.</p> <p>If set to false, then predicates are optimized only when all the members of a dimension are included.</p> <p>Example:</p> <p>For the in MDX query which selects all but one member of 1997 quarter:</p> <p> <code>select {[Time].[1997].[Q1],[Time].[1997].[Q2],[Time].[1997].[Q3]} on 0 from sales</code> predicate optimization would result in sql that retrives all 4 quarters, instead of just 3. The fourth quarter is cached along with others for future use:</p> <p><code>...where`time_by_day`.`the_year` = 1997 group by `time_by_day`.`the_year`, `time_by_day`.`quarter`...</code></p> <p>(note the <code>where in</code> clause involving quarters is missing)</p> <p>when predicate optimization is disabled, Mondrian would retrive no more data than specified by the query, In the above case it would retrive only data for first 3 quarters:</p> <p><code>...`time_by_day`.`the_year` = 1997 and `time_by_day`.`quarter` in ('Q1', 'Q2', 'Q3') group by `time_by_day`.`the_year`, `time_by_day`.`quarter`...</code></p> </td></tr> <tr> <td><code><a href="api/mondrian/olap/MondrianProperties.html#ReadAggregates"> mondrian.rolap.aggregates.Read</a></code></td> <td>boolean</td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -