Overview of Attribute Dimensions
To illustrate the purpose of attribute dimensions, consider the Sample Basic database, available in the gallery section of Essbase file catalog. In this database, Products have attributes that are characteristics of the products, such as a product's size and packaging.
Attribute members reside in attribute dimensions. When viewed in the outline viewer/editor of the Essbase web interface, an attribute dimension has the letter A next to its name in the outline.
The image below shows the Sample Basic outline featuring the Product dimension and three attribute dimensions: Caffeinated, Ounces, and Pkg Type. To the right of the Product dimension, the terms Caffeinated, Ounces, and Pkg Type show that these attribute dimensions are associated with the Product dimension.

Attributes are associated with sparse, non-attribute dimensions, called base dimensions. In the example above, the Product dimension is the base dimension for the attribute dimensions Caffeinated, Ounces, and Pkg Type. Market is the base dimension for the attribute dimensions Population and Intro Date.
Note:
Attribute dimensions and members are Dynamic Calc (with the exception of non-aggregating attributes), so Essbase calculates attribute information at retrieval time. Attribute data is not stored in the database.
Members of Attribute Dimensions
Members of an Essbase attribute dimension are potential attributes of the members of the associated base dimension. After you associate a base dimension with an attribute dimension, you associate members of the base dimension with members of the attribute dimension.
The Sample_Dynamic Basic cube has five standard dimensions (Year, Measures, Product, Market, and Scenario), and five attribute dimensions (Caffeinated, Ounces, Pkg Type, Population, and Intro Date).

The standard dimension Product is associated with four attribute dimensions: Caffeinated, Ounces, Pkg Type, and Intro Date). The standard dimension Market is associated with the attribute dimension Population.
The Market dimension member Connecticut is associated with the 6000000 member of the Population attribute dimension. That makes 6000000 an attribute of Connecticut.

The product member 100-10 has three attributes—it has caffeine, is sold in 12-ounce containers, and is sold in cans.

Restrictions for Base and Attribute Dimensions and Members
As you implement Essbase attributes in your database, observe rules regarding members of attribute dimensions, and members of their base dimensions.
You can tag only sparse dimensions as attribute dimensions.
Before you can save an outline to the server, each attribute dimension must be associated with a standard, sparse dimension as its base dimension.
Attribute dimensions must be the last dimensions in the outline.
Attribute dimensions have a type setting—text, numeric, Boolean, or date. Text is the default setting. Although assigned at the dimension level, the type applies only to the level 0 members of the dimension. See Attribute Types.
If you remove the attribute tag from a dimension, Essbase removes prefixes or suffixes from its member names. Prefixes and suffixes are not visible in the outline. See Set Prefix and Suffix Formats for Member Names of Attribute Dimensions.
A base dimension member can have many attributes, but only one attribute from each attribute dimension.
For example, product 100-10 can have size and packaging attributes, but only one size and only one type of packaging.
You cannot associate an attribute with an implied shared member, the child of which is tagged as shared.
You can use attribute values in calculations in the following comparisons:
-
> (greater than)
-
>= (greater than or equal to)
-
< (less than)
-
<= (less than or equal to)
-
== (equal to)
-
<> or != (not equal to)
-
IN
Restrictions for Attribute Dimension Association
When you associate an Essbase attribute dimension with a standard dimension, the standard dimension becomes the base dimension for the attribute dimension. The base dimension must be sparse, and while it can have multiple attribute associations, any given attribute dimension can only have one associated base dimension.
Observe these restrictions on attribute dimension associations:
-
An attribute dimension must be associated with a sparse standard dimension.
-
A standard dimension can be a base dimension for multiple attribute dimensions.
-
An attribute dimension can be associated with only one base dimension.
For example, assume there is a Size attribute dimension with members Small, Medium, and Large.
If you associate the Size attribute dimension with the Product dimension, you cannot also associate the Size attribute dimension with the Market dimension. Tracking size-related information for the Market dimension requires another attribute dimension with a different name.
Restrictions for Attribute Member Association
As you associate members of Essbase attribute dimensions with a members of base dimensions, observe rules about association levels. Also, you can't associate multiple attributes from the same dimension with a single base member.
Observe these restrictions on attribute member associations:
-
You cannot associate multiple members from the same attribute dimension with the same base dimension member. For example, the Bottle and Can package types cannot both be associated with the product 100-30.
-
You can associate members from different attribute dimensions with the same member of a base dimension. For example, a decaffeinated cola product (100-30) sold in 16-ounce bottles has three attributes: Caffeinated:False; Ounces:16; and Pkg Type:Bottle.
-
Essbase does not require that each member of a base dimension be associated with a member of an attribute dimension.
-
The level 0 members of attribute dimensions are the only members that you can associate with base dimension members.
For example, in the Population attribute dimension, you can associate only level 0 members such as 3000000, 6000000, and 9000000, with members of the Market dimension. You cannot associate a level 1 member such as Small.
The name of the level 0 member of an attribute dimension is the attribute value. The only members of attribute dimensions that have attribute values are level 0 members.
You can use the higher-level members of attribute dimensions to select and group data. For example, you can use Small, the level 1 member of the Population attribute dimension, to retrieve sales in both the 3000000 and 6000000 population categories.
-
All base dimension members associated with members of a particular attribute dimension must be at the same level. This is called the "association level." The first attribute association determines the association level.
-
You cannot associate an attribute with an implied shared member, the child of which is tagged as shared.
Attribute Types
Essbase attribute dimensions are of type text, numeric, Boolean, or date. The type you select enables appropriate functions for grouping, selecting, or calculating the data. Although assigned at the dimension level, the attribute type affects only level 0 members of the attribute dimension.
Text attribute type
The default attribute type is text. Text attributes enable basic attribute member selection and comparisons in calculations. Because the comparisons are textual, Essbase compares characters. For example, the package type Bottle is less than the package type Can, because B precedes C in the alphabet. In the Sample Basic database, Pkg Type is a text attribute dimension.
Numeric attribute type
The names of level 0 members of numeric attribute dimensions are numeric values. You can include the names (values) of numeric attribute dimension members in calculations. For example, you can use the number of ounces specified in the Ounces attribute to calculate profit per ounce for each product.
You can also associate numeric attributes with ranges of base dimension values; for example, to analyze product sales by market population groupings—states with 3,000,000 population or less in one group, states with a population between 3,000,001 and 6,000,000 in another group, and so on. See Set Up Member Names Representing Ranges of Values.
Essbase supports date attributes from January 1, 1970, through January 1, 2038.
Boolean attribute type
All Boolean attribute dimensions in a database contain only two members. The member names must match the settings for the database; for example, True and False. If multiple Boolean attribute dimensions exist, specify a prefix or suffix member name format to ensure unique member names; for example, Caffeinated_True and Caffeinated_False. See Set Boolean Attribute Member Names.
Date attribute type
You can use date attributes to specify the date format—month-day-year or day-month-year—and to sequence information accordingly. See Change the Member Names in Date Attribute Dimensions. You can use date attributes in calculations. For example, you can compare dates in a calculation that selects product sales from markets established since 10-12-1999.
Essbase supports date attributes from January 1, 1970, through January 1, 2038.
Comparison of Attribute and Standard Dimensions
Attribute dimensions and members are similar to standard dimensions and members. You can add aliases and comments, include hierarchies, and name generations / levels. Attribute dimensions must be sparse, Dynamic Calc, and positioned at the end of the outline, with no formulas or shared members.
The following table describes major differences between attribute and standard dimensions and their members.
Table 6-2 Differences Between Attribute and Standard Dimensions
Functionality | Attribute Dimensions | Standard Dimensions |
---|---|---|
Storage |
Sparse. An attribute dimension's base dimension also must be sparse |
Can be dense or sparse |
Storage property |
Can be Dynamic Calc only. Therefore, not stored in the database. The outline does not display this property. |
Can be Store Data, Dynamic Calc, Never Share, or Label Only |
Position in outline |
Must be the last dimensions in the outline |
Must be above all attribute dimensions in the outline |
Partitions |
Cannot be defined along attribute dimensions, but you can use attributes to define a partition on a base dimension |
Can be defined along standard dimensions |
Formulas (on members) |
Cannot be associated |
Can be associated |
Shared members |
Not allowed |
Allowed |
Two-pass calculation member property |
Not available |
Available |
Two-pass calculation with runtime formula |
If a member formula contains a runtime-dependent function associated with an attribute member name, and the member with the formula is tagged as two-pass, calculation skips the member and issues a warning message. Runtime-dependent functions include: @CURRMBR, @PARENT, @PARENTVAL, @SPARENTVAL, @MDPARENTVAL, @ANCEST, @ANCESTVAL, @SANCESTVAL, and @MDANCESTVAL. |
Calculation is performed on standard members with runtime formulas and tagged two-pass. |
Two-pass, multiple dimensions: Calculation order |
Order of calculation of members tagged two-pass depends on order in outline. The last dimension is calculated last. |
Calculation result is not dependent on outline order for members tagged two-pass in multiple dimensions. |
Two-pass calculation with no member formula |
Calculation skipped, warning message issued. Therefore, member intersection of two-pass tagged members and upper-level members may return different results from calculation on standard dimensions. |
Available |
Dense Dynamic Calc members in nonexisting stored blocks |
Calculations skip dense dimensions if they are on nonexisting stored blocks. For attributes to work on dense members, data blocks for the dense members must exist. When retrieving data on a dense member that has a Dynamic Calc formula and no attributes, Essbase dynamically creates the data block and returns a value. However, if the Dynamic Calc dense member has an attribute, doing a retrieve on the attribute member results in #MISSING, because Essbase skips the dynamic calculation on the dense member and, therefore, the data block is not created. To identify nonexisting stored blocks, export the database or run a query to find out whether the block has data. |
Available |
UDAs on members |
Not allowed |
Allowed |
Consolidations |
For all members, calculated through the Attribute Calculations dimension members: Sum, Count, Min, Max, and Avg. Consolidation operators in the outline are ignored during attribute calculations. |
Consolidation operation indicated by assigning the desired consolidation symbol to each member |
Member selection facilitated by Level 0 member typing |
Available types include text, numeric, Boolean, and date. |
All members treated as text |
Associations |
Must be associated with a base dimension |
N/A |
Spreadsheet drill-downs |
List the base dimension data associated with the selected attribute. For example, drilling down on the attribute Glass displays sales for each product packaged in glass, where Product is the base dimension for the Pkg Type attribute dimension. |
List lower or sibling levels of detail in the standard dimensions. For example, drilling down on Qtr1 displays a list of products and their sales for that quarter. |
Solve Order and Attributes
If hybrid mode is enabled for your Essbase cube, you can set the solve order for attribute dimensions and their base dimensions, eliminating the need to tag members as two-pass.
In hybrid mode, the default calculation order (also known as solve order) matches that of block storage databases, with some enhancements. If you wish to use a non-default solve order, you can set a custom solve order for dimensions and members.
For more information about hybrid mode, see Adopt Hybrid Mode for Fast Analytic Processing.
Two-Pass Calculations on Attribute Dimensions
Two pass calc is skipped for attribute calculations on Essbase members that lack a formula or have an unsupported formula.
The following example, based on the Product dimension in the Sample Basic database, illustrates how two-pass calculations work on attribute dimensions. Assume member "400-30" is tagged as two-pass.
If member "400-30" has the following member formula:
="400–10";
Essbase executes the formula when performing a retrieve on "400-30."
If "400-30" has the following member formula:
=@CURRMBR("Market");
Essbase skips the calculation because the formula includes the @CURRMBR runtime function, which is not allowed, and issues the following error message:
Two-pass calc skipped on member [400-30] in attribute calc
If "400-30" does not have a member formula, the same error message is generated because a member tagged as two-pass must have a formula.
Comparison of Attributes and UDAs
Attributes and UDAs enable analysis based on characteristics of the data. Attributes provide greater capability than UDAs. This topic describes the differences between attributes and UDAs in terms of Essbase data storage, retrieval, conversion, and calculation.
Data Storage
Attributes can be associated with sparse dimensions only, while UDAs can be used with dense and sparse dimensions.
Data Retrieval
Data Retrieval | Attributes | UDAs |
---|---|---|
You can group and retrieve consolidated totals by attribute or UDA value. For example, associate the value High Focus Item to various members of the Product dimension and use that term to retrieve totals and details for only those members. |
Supported Simple |
Supported More difficult to implement, requiring additional calculation scripts or commands |
You can categorize attributes in a hierarchy and retrieve consolidated totals by higher levels in the attribute hierarchy; for example, if each product has a size attribute such as 8, 12, 16, or 32, and the sizes are categorized as small, medium, and large. You can view the total sales of small products. |
Supported |
Supported More difficult to implement |
You can create crosstab views displaying aggregate totals of attributes associated with the same base dimension. |
Supported You can show a crosstab of all values of each attribute dimension. |
Not supported You can retrieve only totals based on specific UDA values. |
You can use Boolean operators AND, OR, and NOT with attribute and UDA values to refine a query. For example, you can select decaffeinated drinks from the 100 product group. |
Supported |
Supported |
Because attributes have a text, Boolean, date, or numeric type, you can use appropriate operators and functions to work with and display attribute data. For example, you can view sales totals of all products introduced after a specific date. |
Supported |
Not supported |
You can group numeric attributes into ranges of values and let the dimension building process automatically associate the base member with the appropriate range. For example, you can group sales in various regions based on ranges of their populations—less than 3 million, between 3 million and 6 million, and so on. |
Supported |
Not supported |
Through the Attribute Calculations dimension, you can view aggregations of attribute values as sums, counts, minimums, maximums, and averages. |
Supported |
Not supported |
You can use an attribute in a calculation that defines a member. For example, you can use the weight of a product in ounces to define the profit per ounce member of the Measures dimension. |
Supported |
Not supported |
You can retrieve specific base members using attribute-related information. |
Supported Powerful conditional and value-based selections |
Supported Limited to text string matches only |
Data Conversion
Based on the value of a UDA, you can change the sign of the data as it is loaded into the database. For example, you can reverse the sign of all members with the UDA Debit. Sign flipping is not supported for attributes.
Calculation Scripts
Calculation Scripts | Attributes | UDAs |
---|---|---|
You can perform calculations on a member if its attribute or UDA value matches a specific value. For example, you can increase the price by 10% of all products with the attribute or UDA of Bottle. |
Supported |
Supported |
You can perform calculations on base members whose attribute value satisfies conditions that you specify. For example, you can calculate the Profit per Ounce of each base member. |
Supported |
Not supported |