Calculating Aggregate Storage Databases
Aggregate storage database values are calculated through the outline structure and MDX formulas. When a data load is complete, all the information needed to calculate an aggregate storage database is available. When a retrieval request is made, Essbase Server calculates the needed values by consolidating the values loaded for level 0 members and calculating formulas. Values calculated for retrievals are not stored.
To improve retrieval performance, Essbase can aggregate values and store them ahead of time. However, aggregating and storing all values can be a lengthy process that requires disk space for storage. Essbase provides an intelligent aggregation process that balances time and storage resources.
To prepare an aggregate storage database for retrieval, you create the outline and load the level 0 values. Then you calculate the database by aggregating, and storing additional values, with the remaining values to be calculated when retrieved.
Note:
If a database needs calculation scripts to handle special calculations and data dependencies, consider altering the database design or making it a block storage database.
Outline Factors Affecting Data Values
The hierarchical structure of an aggregate storage outline determines how values are rolled up. Level 0 member values roll up to level 1 member values, level 1 member values roll up to level 2 member values, and so on.
Consolidation operators assigned to members of dynamic hierarchies define the operations used in the roll-up: add (+), subtract (-), multiply (*), divide (/), percent (%), no operation (~), and (^) never consolidate.
Note:
Members of stored hierarchies can have only the addition (+) or the no-consolidation (~) operator.
For more complex operations, you can provide MDX formulas on members of dynamic hierarchies. MDX formulas are written in the same format as MDX numeric value expressions.
Block Storage Calculation Features That Do Not Apply to Aggregate Storage Databases
The following characteristics of calculating block storage databases do not apply to aggregate storage databases:
-
Calculation script calculations
-
Dynamic Calc member storage property
-
Block storage formula syntax and predefined Essbase functions in formulas
-
Formulas on members of dimensions other than members of aggregate storage dynamic hierarchies
-
Preloaded values for member intersections above level 0
-
Two-pass calculations tags
-
Block storage performance features such as Intelligent Calculation
Calculation Order
Aggregate storage calculation order and block storage calculation order differ. For aggregate storage databases, Essbase calculates data in the following order:
-
Aggregates members of stored hierarchies and attribute dimensions. The order in which members and dimensions are aggregated is optimized internally and changes according to the nature of the database outline and the existing aggregations. Because the aggregation is additive, the order in which Essbase aggregates the dimensions and members does not affect the results.
Because the internal aggregation order for an aggregate storage database is not predictable, any inherent rounding errors are also not predictable. These rounding errors are expected behavior in computer calculation and are extremely small in relation to the data values concerned.
-
Calculates dynamic hierarchy dimension members and formulas. The order in which members and formulas are evaluated is defined by the solve order property, which you can set for each member or dimension. Calculation order may affect calculation results.
Solve Order Property
The concept of solve order applies to query execution. When a cell is evaluated in a multidimensional query, the order in which the calculations should be resolved may be ambiguous. To remove ambiguity, you can use the solve order property to specify the required calculation priority.
Note:
It is good practice to specify the solve order for each member by setting the solve order property. Members without formulas that do not have a specified solve order inherit the solve order of their dimension. Members with formulas that do not have a specified solve order have a solve order of zero.
To change the solve order, use the outline editor in the Essbase web interface, or use Smart View (see Changing the Solve Order of a Selected POV). To specify the solve order for a calculated member, you can use the solve_order parameter in the With section of an MDX query.
The value of the solve order property determines the priority with which Essbase calculates the formulas. The formulas on the members that have a specified solve order are calculated in order from the lowest solve order to the highest. You can specify a solve order between 0 and 127. The default is 0.
You can specify the solve order at the member level. Essbase uses the following information to define calculation precedence:
-
Member solve order
-
Dimension solve order (members without formulas for which you do not specify a member solve order inherit the solve order of their dimension. Members with formulas for which you do not specify a member solve order have a solve order of zero.)
If multiple members have the same solve order, the members are evaluated in the reverse order in which their dimensions occur in the database outline. The member that occurs later in the outline takes precedence.
The tie situation calculation order is different for calculated members defined in an MDX query for block storage databases.
Note:
When a member formula is dependant on the value of another member, the member with the formula must have a higher solve order than the member or members on which it depends. For example, in the ASOsamp.Sample database outline, Avg Units/Transaction depends on the value of Units and of Transactions. Avg Units/Transaction must have a higher solve order than Units and Transactions.
Example Using the Solve Order Property
The following example is based on the ASOsamp.Sample database. To remove ambiguity in query results, the example uses the solve order property to specify the required calculation priority.
The spreadsheet query shown below retrieves data for the number of units sold and the number of transactions for January of the current year and for January of the previous year. The Variance member shows the difference between the current year and the previous year. The Avg Units/Transaction member shows a ratio of the number of units sold per transaction.
Figure 36-4 Results from Spreadsheet Query of ASOsamp.Sample database Showing the Variance Between Two Ratios (C12)

The following image shows the database outline for these members, and the formulas applied to the Variance and Avg Units/Transaction members.
Figure 36-5 ASOsamp.Sample Database Showing the Measures, Years, and Time Dimensions

When calculating the variance of the average units per transaction (cell C12 in the spreadsheet example), the result could be the variance between the two ratios, or the result could be the ratio of the two variances. The result depends on whether Essbase gives precedence to the formula on Variance or the formula on Avg Units/Transaction.
The value of the solve order property, which is attached to the members in the database outline, determines the priority with which Essbase evaluates the formulas. The higher the solve order setting, the later in the order the member is calculated. For example, a formula with a solve order of 1 is solved before a member with a solve order of 2.
In the example, if the Variance member has a lower solve order than the Avg Units/Transaction member, then the formula on the Variance member takes precedence and the result is the variance between two ratios. This is the case in the ASOsamp.Sample database, because the solve order of the Variance member is 10 and the solve order of the Avg Units/Transaction member is 20. The formula on Variance takes precedence, because the Variance member has the lower solve order. The result for cell C12 of the query in the spreadsheet example is the variance between the two ratios, as shown in the table below:
Table 36-3 Using the Solve Order Property to Specify the Variance Between Two Ratios
Member | Solve Order | Formula | Result of Intersection of Variance and Avg Units/Transaction (cell C12) |
---|---|---|---|
Variance |
10 |
Curr Year - Prev Year |
Current year average units/transaction - previous year average units/transaction 0.94894382 (cell C6) - 0.954252111 (cell C9) = -0.005308291 (cell C12) |
Avg Units/Transaction |
20 |
Units/Transactions |
Alternatively, if you change the ASOsamp.Sample database, and you give the Avg Units/Transaction member a lower solve order than the Variance member, then the formula on the Avg Units/Transaction member takes precedence, and the result is the ratio of two variances, as shown in the table and spreadsheet example below:
Table 36-4 Using the Solve Order Property to Specify the Ratio of Two Variances
Member | Solve Order | Formula | Result of Intersection of Variance and Avg Units/Transaction (cell C12) |
---|---|---|---|
Variance |
20 |
Curr Year - Prev Year |
Variance (current year to previous year) of units / variance of transactions 10585 (cell C10) / 11340 (cell C11) = 0.933421517 (cell C12) |
Avg Units/Transaction |
10 |
Units/Transactions |
Figure 36-6 Results from Spreadsheet Query of ASOsamp.Sample Database Showing the Ratio of Two Variances (C12)

Aggregating an Aggregate Storage Database
Aggregate storage databases require no separate calculation step after data values are loaded into the level 0 cells of the outline. From any point in the database, users can retrieve and view values that are aggregated dynamically, for the current retrieval only. Aggregate storage databases are smaller than block storage databases, enabling quick retrieval of data values.
As databases grow, retrievals must process more data values to satisfy the calculation needs of the queries. For faster retrieval, Essbase enables you to precalculate data values and store those values in aggregations. If a database size nears one million aggregate cells, you should strongly consider performing an aggregation. Depending on database usage and the usage environment, you can achieve performance benefits by precalculating smaller databases as well. Use MaxL, or Jobs in the Essbase web interface, to calculate an aggregate storage database.
Understanding Aggregation-Related Terms
The following terms are integral to an explanation of aggregate storage database calculation.
Aggregate Cells
Cells for level 0 intersections across dimensions, without formulas, are called input cells. Data values can be loaded to them. Higher-level cells involving members of the accounts dimension or dynamic hierarchies are always calculated at retrieval. All other higher-level intersections across dimensions are aggregate cells. For example, for the outline in Sample Aggregate Storage Outline, Price Paid > Curr Year > 1st Half > Portable Audio > CO is an aggregate cell; Original Price > Curr Year > Jan > Camcorders > CO is another aggregate cell. Values for aggregate cells must be rolled up from lower-level values.
Aggregate cell values are calculated for each request, or they can be precalculated and stored on disk.
Aggregate Views
When Essbase defines which aggregate cells to precalculate and store, it works with aggregate views. An aggregate view is a collection of aggregate cells. The collection is based on the levels of the members within each dimension.
For example, consider one aggregate view for the outline. This aggregate view includes aggregate cells for the following dimension levels:
-
Measures dimension, level 0
-
Years dimension, level 0
-
Time dimension, level 1 of hierarchy 0
-
Product dimension, level 2 of hierarchy 0
-
Geography dimensions, level 0
The example aggregate view is shown as 0, 0, 1/0, 2/0, 0.
Each dimension is shown, left to right, in its sequence in the outline. If a dimension contains hierarchies, the notation specifies the member level within its hierarchy. Hierarchies within a dimension are numbered top-down, starting with hierarchy 0.
The 0, 0, 1/0, 2/0, 0 aggregate view contains aggregate cells that include the following member intersections:
Original Price, Curr Year, Qtr1, Personal Electronics, CO
Original Price, Curr Year, Qtr1, Personal Electronics, KS
Original Price, Curr Year, Qtr1, Home Entertainment, CO
Original Price, Curr Year, Qtr1, Home Entertainment, KS
Original Price, Curr Year, Qtr2, Personal Electronics, CO
Original Price, Curr Year, Qtr2, Personal Electronics, KS
Original Price, Curr Year, Qtr2, Home Entertainment, CO
Original Price, Curr Year, Qtr2, Home Entertainment, KS
Original Price, Curr Year, Qtr3, Personal Electronics, CO
Original Price, Curr Year, Qtr3, Personal Electronics, KS
Original Price, Curr Year, Qtr3, Home Entertainment, CO
Original Price, Curr Year, Qtr3, Home Entertainment, KS
Original Price, Curr Year, Qtr4, Personal Electronics, CO
Original Price, Curr Year, Qtr4, Personal Electronics, KS
Original Price, Curr Year, Qtr4, Home Entertainment, CO
Original Price, Curr Year, Qtr4, Home Entertainment, KS
Original Price, Prev Year, Qtr1, Personal Electronics, CO
Original Price, Prev Year, Qtr1, Personal Electronics, KS
Original Price, Prev Year, Qtr1, Home Entertainment, CO
Original Price, Prev Year, Qtr1, Home Entertainment, KS
and so on...
Aggregations
Aggregations are consolidations, based on outline hierarchy, of level 0 data values. An aggregation contains one or more aggregate views. Essbase provides an intelligent aggregation process that selects aggregate views to be rolled up, aggregates them, and then stores the values for the cells in the selected views. If an aggregation includes aggregate cells dependent on level 0 values that are changed through a data load, the higher-level values are automatically updated at the end of the data load process.
The term aggregation is used for the aggregation process and the set of values stored as a result of the process.
Aggregation Scripts
Each aggregation script is a file that defines a particular selection of aggregate views to be materialized. See Working with Aggregation Scripts.
Performing Database Aggregations
Use MaxL statements, or Jobs in the Essbase web interface, to perform an aggregation. The aggregation process has two phases:
-
Aggregate view selection.
-
Calculation and storage of values for the selected aggregate views. This phase is also called the materialization of the aggregation.
During the aggregate view selection phase, Essbase analyzes how calculating and storing various combinations of aggregate views might affect average query response time. As input to the analysis, you can define physical storage and performance requirements. You can also track data usage and provide the information to the analysis process. See Selecting Views Based on Usage.
Based on their usefulness and resource requirements, Essbase creates a list of aggregate views. Included with each view in the list is storage and performance information that applies when that aggregate view plus all other aggregate views listed above it are stored. You can choose to aggregate the listed views, select and aggregate a subset of the listed views, or rerun the selection process with different input criteria. You can also add to an aggregation the materialization of new views that are based on new selection criteria. See Fine-Tuning Aggregate View Selection.
Whether or not you materialize the selection, you can save the selection of aggregate views as an aggregation script. Aggregation scripts provide flexibility and can save time because they enable you to bypass the selection process if the same selection is needed again. See Working with Aggregation Scripts.
After the selection process is finished, the selected aggregate views are calculated when you materialize the selected aggregate views into an aggregation.
The following process is recommended for defining and materializing aggregations:
-
After the outline is created or changed, load data values.
-
Perform the default aggregation.
Optional: Specify a storage stopping point.
-
Materialize the suggested aggregate views and save the default selection in an aggregation script.
-
Run the types of queries for which the aggregation is designed.
-
If query time or aggregation time is too long, consider fine-tuning the aggregation.
-
(Optional) Save the aggregation selection as an aggregation script.
To perform a database aggregation selection or materialization, you can use the Essbase web interface or these MaxL statements:
You can also configure Essbase to generate aggregate views automatically when needed.
Fine-Tuning Aggregate View Selection
The default selection of aggregate views proposed by Essbase provides excellent performance. However, accepting all aggregate views in the selection list does not guarantee optimum performance. For the default selection, Essbase analyzes stored hierarchies and assumes an equal chance that any aggregate cell will be retrieved. Essbase cannot account for external factors such as the amount of available memory at the time of a query. Available memory can be affected by such factors as the cache memory definition at retrieval time, or the memory other concurrent processes require.
You may want to track which data is most queried and include the results and alternate views in the aggregate view selection process. See Selecting Views Based on Usage.
As you tune and test aggregations, consider the following points:
-
Improving retrieval performance can increase disk storage costs and the time it takes to materialize the aggregation.
-
Tracking queries may result in a set of proposed aggregate views that provide better performance for some queries than for others. Selecting proposed aggregate views can considerably improve performance time of some queries with others experiencing little improvement—but never worse—as long as query type and frequency are close to the type and frequency of queries performed during the tracking period.
-
Optimizing aggregations may require an iterative, fine-tuning process.
Essbase provides information to help you select and store the right balance of aggregate views for your database. Weigh this information against what you know about your database retrieval requirements and environment. Use the following information to help you select aggregate views for an aggregation:
-
The maximum storage requirement
You can specify a storage limit for selecting aggregate views in two ways:
-
When the aggregation selection is initiated, you specify a maximum storage stopping value. Aggregate views are selected until the specified storage limit is reached or there are no more views to select.
When using the execute aggregate process MaxL statement with the stopping when total_size exceeds grammar, you can specify the maximum disk space of the resulting data files, as a ratio of the current database size. For example, if the size of a database is 1 GB, specifying the total size as 1.2 means that the size of the resulting data cannot exceed 20% of 1 GB, for a total of 1.2 GB.
-
After each analysis of the database, Essbase displays information about the level 0 input cell view followed by a list of suggested aggregate views. Displayed by each aggregate view is a storage number that includes that aggregate view and all other aggregate views it depends on. You can consider this storage number as you select the aggregate views to be included in the aggregation.
-
-
The relative “Query Cost” performance improvement
The Query Cost number that is displayed by each aggregate view in the list projects an average retrieval time for retrieving values from the associated aggregate view. The default view selection estimates the cost as the average of all possible queries. When using query tracking, the estimated cost is the average for all tracked queries. The cost number for a specific aggregate view can be different in different selection lists; for example, aggregate view 0, 0, 1/0, 2/0, 0 can show a different query cost in the default selection list than it would show in a selection that includes tracked queries in the analysis.
To compute the percentage improvement, divide the query cost value for the aggregate view into the query cost value shown for storing only level 0 input cells.
-
Tracked usage
Before running an aggregate view selection, you can turn on query tracking to determine which data is retrieved most often. After some period of database activity, you can have Essbase include the usage statistics in the aggregation analysis process.
-
Aggregation time
The time it takes to perform an aggregation after the selection process completes increases for each aggregate view materialized. To determine actual aggregation time, you must perform the aggregation.
The following process is recommended for fine-tuning aggregations:
-
Perform the default aggregations described in Performing Database Aggregations.
-
Save the default selection in an aggregation script. See Working with Aggregation Scripts.
-
Turn on query tracking.
-
Have users perform their usual queries against the database or perform the batch query operations for which the aggregation is being designed. Queries from all query tools are tracked.
-
After sufficient time to capture data retrieval requirements, perform another aggregation including tracked data.
-
Analyze the proposed list of aggregate views to be stored, and select the aggregate views that you determine provide the best balance of system resources and retrieval performance.
-
Materialize the selected aggregate views and, if desired, save the selection in an aggregation script.
-
Working with aggregation scripts and various selection criteria, repeat the process until you think you have the optimum selection of aggregate views for your situation.
Note:
To optimize aggregations for different database retrieval situations, such as for generating reports or user queries, you may need to repeat the tuning process, creating an aggregation script for each situation.
Selecting Views Based on Usage
Essbase enables you to capture retrieval statistics against a database. You can then use these statistics to build aggregations tailored to retrieval patterns in your company. Also, Essbase includes alternate hierarchies in its analysis of the database when usage information is used in the aggregate view selection process.
Database usage for periodic reporting may be different than for ongoing user retrievals. To optimize different retrieval situations, consider tracking situational usage patterns and creating aggregation scripts for each situation.
Before you begin the aggregation selection process, ensure that query tracking is on and that it has been on long enough to capture representative usage. To enable it, use the MaxL statement alter database with the enable query_tracking grammar.
Query tracking holds query usage information in memory. Performing any of the following operations clears query usage information.
-
Loading or clearing data
-
Materializing or clearing an aggregation
-
Turning off query tracking
Query tracking remains on until you turn it off, stop the application, or change the outline.
Understanding User-Defined View Selection
By default, Essbase uses internal mechanisms to decide how to create aggregations. User-defined view selection provides a way for you to influence default view selection and view selection based on query data.
Administrators may apply view selection properties to stored hierarchies to restrict Essbase from choosing certain levels for aggregation.
Note:
Secondary hierarchies are either shared or attribute hierarchies.
Table 36-5 View Selection Properties
Property | Effect |
---|---|
Default |
On primary hierarchies, Essbase considers all levels. It does not aggregate on secondary hierarchies unless alternative roll-ups are enabled. |
Consider all levels |
Considers all levels of the hierarchy as potential candidates for aggregation. This is the default for primary hierarchies, but not for secondary hierarchies. |
Do not aggregate |
Does not aggregate along this hierarchy. All views selected by Essbase are at the input level. |
Consider bottom level only |
Applies only to secondary hierarchies. Essbase considers only the bottom level of this hierarchy for aggregation. |
Consider top level only |
Applies only to primary hierarchies. Considers only top level of this hierarchy for aggregation. |
Never aggregate to intermediate levels |
Applies to primary hierarchies. Selects top and bottom levels only. |
Note:
The bottom level of an attribute dimension consists of the zero-level attribute members. When a secondary hierarchy is formed using shared members, the bottom level comprises the immediate parents of the shared members.
Essbase considers only views that satisfy the selected view selection properties.
You should be familiar with the dominant query patterns of databases before changing default properties; preventing selection of certain views will make queries to those views slower while improving the speed of other queries. Similarly, enabling Consider All Levels on a secondary hierarchy may speed queries to that hierarchy while making other queries slower.
To define view selection properties, you can use these MaxL statements:
Working with Aggregation Scripts
About Aggregation Scripts
Each aggregation script represents a specific aggregate view selection against a database.
Aggregation scripts can save you time. For example, after loading new data values you need not perform another aggregate view selection. You can speed the aggregation process by using the selection stored in an aggregation script to materialize the aggregation.
Aggregation scripts also give you flexibility. You can use them to save aggregate view selections optimized for different retrieval situations; for example, you can use one script to optimize retrievals in month-end reporting and another for daily retrieval requirements.
Aggregation scripts for a database become invalid when the selection it contains is invalid for the database. Create aggregation scripts when you create aggregations. Do not manually modify aggregation script files, which may cause unpredictable results.
Creating Aggregation Scripts
Saved aggregation scripts enable you to split up the total aggregation process. You can materialize an aggregation at a different time than when the aggregate views for the aggregation are selected. The aggregation script contains information derived during the aggregate view selection phase.
To create an aggregation script, you can use these MaxL statements:
Aggregation scripts are stored in the database directory as text files with the .csc
extension and are valid as long as the dimension level structure in the outline has not changed.
To avoid the potential clutter of invalid aggregation script files, manually delete aggregation scripts when they are no longer useful.
Executing Aggregation Scripts
Executing an aggregation script materializes the aggregate views specified within it. Although you can create multiple aggregation scripts, only one aggregation can be materialized at a time.
To execute an aggregation script, you can use the execute aggregate build MaxL statement.
Clearing Aggregations
At times you might want to manually clear aggregations from the disk; for example, to make the disk space available for disk-intensive operations. Clearing aggregations clears all data, except level 0 values, from the database, releasing the disk area for other use. After aggregations are cleared, queries calculate retrieved values dynamically from level 0 values.
To clear aggregations, you can use the alter database MaxL statement.
Replacing Aggregations
You can replace an aggregation by clearing the existing aggregation and materializing a different selection of aggregate views. You can perform a new aggregate view selection and materialization process, or you can run an aggregation script. Consider replacing the aggregation in the following situations:
-
To fine-tune the selection of aggregate views to improve performance. See Fine-Tuning Aggregate View Selection.
-
To create aggregations optimized for different database retrieval situations, such as for generating reports or user queries.
-
To optimize an aggregation after significant growth in database size. Gradually, as the size of a database increases, an aggregation can become less efficient. Consider replacing an aggregation when performance degradation is noticeable or when the database size increases to about 150% of its original size.
-
To optimize aggregations for new or different operational environments, such as memory and disk resource availability changes.
You must replace an aggregation and associated aggregation scripts after the number of levels in a dimension has been changed or one or more dimensions have been added or removed from the outline.
Performing Time Balance and Flow Metrics Calculations in Aggregate Storage Accounts Dimensions
The topics in this section explain how to perform time balance and flow metrics calculations on aggregate storage databases.
Using Time Balance Tags in Aggregate Storage Accounts Dimensions
You can set Time Balance properties on aggregate storage Accounts dimensions to provide built-in calculations along the Time dimension. This saves time and performance overhead of using member formulas to achieve time-balance functionality.
The following time-balance properties are supported on stored or formula-bearing Accounts dimension members:
-
TB First, TB Last, TB Average
-
SKIP NONE, SKIP MISSING
Consider a stored measure such as Headcount in a human-resources application. Within a Year-Quarter-Months hierarchy, Headcount data is loaded at the month level.

The desired yearly or quarterly Headcount value is not the sum of its months; rather, it should be the last recorded value within a time period.
Tagging Headcount as TB Last with SKIPMISSING means that, for Year 2005, its value is the last nonempty value of the headcount for its months. If Dec has a nonmissing Headcount value, then that value will be returned; otherwise, the Nov value will be checked and returned if nonmissing.
If a formula-bearing member has a time balance tag, the formula is executed only for level 0 Time members, and the Time dimension is aggregated according to the time balance tag.
The time balance tags provide a built-in calculation along the Time dimension. To perform other time-based calculations using formulas, such as period-to-date and rolling averages, you can create a dimension called TimeView and write all time-based formulas on that dimension. Doing so enables you to use Time Balance calculation functionality without losing the ability to perform other time-based calculations.
Using Flow Tags in Aggregate Storage Accounts Dimensions
A Flow tag can be assigned to Accounts dimension members bearing formulas.
The following example describes the problem to be solved with flow metrics. Assume you have Sales and Additions figures for all 12 months. You want to perform an aggregation to populate each month’s beginning inventory.
Table 36-6 Inventory Calculation
![]() |
Sales | Additions | Inventory |
---|---|---|---|
Jan | 5 | 1 | 50 |
Feb | 6 | 3 | 46 |
Mar | 4 | 2 | 43 |
Apr | 7 | 0 | 41 |
... | ... | ... | ... |
You would use an MDX formula on the Beginning Inventory member in order to calculate its value. Without flow metrics, to obtain each month’s beginning inventory, the calculator engine would have to reiterate the MDX formula exponentially.
Inventory = SUM(MemberRange(Jan:Time.CurrentMember), (Additions - Sales)) + Beg_Inventory
To optimize the illustrated example, assign the Inventory member the formula (Addition – Sales), and tag the member as Flow.
Restrictions on Alternate Hierarchies
If alternate hierarchies are used in the aggregate storage time dimension, the following restrictions apply when using Flow and TB tags on the Accounts dimension:
-
The shared level among alternate time hierarchies must be level 0.
-
The order of members at shared level among alternate time hierarchies must be the same in all alternate hierarchies.
-
The number of shares for a stored member must not exceed that of its previous sibling. Previous sibling means the prior stored member in the outline, found at the same generation.
For example, consider the following Year dimension. The alternate hierarchies are not valid, because the number of shares for April (3) is greater than the number of shares for March (1).
Aggregating Time-Balance Tagged Measures
The MDX Aggregate function can be used to aggregate measures tagged with time balance tags.
Effect of Attribute Calculations on Time Balance Measures in Aggregate Storage Databases
The following calculation logic applies if
-
The aggregate storage outline contains a time dimension or date-time dimension with one or more attribute or linked-attribute dimensions.
-
You perform queries on time balance tagged measures.
If the above cases are both true, MDX Aggregate() semantics are used to evaluate the cells.
For example, consider a scenario in which:
-
Year is a time-date dimension with a day level hierarchy.
-
Holiday is an attribute dimension on Year, with each date tagged with Holiday_TRUE or Holiday_FALSE.
-
Opening Inventory is tagged as TBFirst.
The value of (Year, Holiday_TRUE, [Opening Inventory]) is evaluated according to the following MDX logic:
Aggregate( {Set of dates that are holidays in Year}, [Opening Inventory])