In a bottom-up data source, each record defines a single member of a dimension. The definition begins with the most specific information about the member and provides progressively more general information. A typical record specifies the name of the new member, then the name of its parent, then its parent’s parent, and so forth.
Levels are defined from a bottom-up hierarchical structure. For example, in the outline in Figure 69, Generation and Level Numbers, the lowest-level members are at the bottoms of the branches of the Product dimension.
To build the outline in Figure 69, Generation and Level Numbers, you can use the following bottom-up data source:
100-10-12 100-10 100 100-20-12 100-20 100
In a level reference build, the lowest-level members are sequenced left to right. Level 0 members are in the first field, level 1 members are in the second field, and so on. This organization is the opposite of how data is presented for generation references (top-down).
In the following example, the rules file uses the level reference build method to add members to the Product dimension. The rules file specifies the level number and the field type for each field of the data source (see Setting Field Type Information). The first column of the data source contains new members (600-10-11, 600-20-10, and 600-20-18). The second column contains the parents of the new members (600-10 and 600-20), and the third column contains parents of the parents (600).
For example, to build the tree in Figure 71, Levels, use Figure 70, Rules File for Level Build to set up the data source (LEVEL.TXT) and the rules file (LEVEL.RUL).
When you use the level references build method, you can choose to process null values. Null processing specifies what actions Essbase takes when it encounters empty fields, also know as null fields, in the data source.
If null processing is not enabled, Essbase rejects all records with null values and writes an error to the error log.
If null processing is enabled, Essbase processes nulls in the following ways:
Missing field: If a null occurs where Essbase expects a LEVEL field, Essbase promotes the next LEVEL field to replace the missing field.
In the following example, there is no field in the LEVEL0, Products column:
LEVEL0,Products LEVEL1,Products LEVEL2,Products 100-10 100
When Essbase reads the record, it promotes the LEVEL1 field (100-10) to LEVEL0 and the LEVEL2 field (100) to LEVEL1, as if the data source looked like the following example:
LEVEL0,Products LEVEL1,Products LEVEL2,Products 100-10 100
Missing field before a secondary field: If a null occurs directly before a secondary field, Essbase ignores the secondary field. (Secondary field options are alias, property, formula, duplicate level, duplicate level alias, currency name, currency category, attribute parent, UDA, and a name of an attribute dimension.)
In the following example, there is no field in the LEVEL0, Products column:
LEVEL0,Products ALIAS0,Products LEVEL1,Products LEVEL2,Products Cola 100-10 100
When Essbase reads the record, it ignores the ALIAS0 field and promotes the LEVEL1 field (100-10) to LEVEL0 and the LEVEL2 field (100) to LEVEL1, as if the data source looked like the following example:
LEVEL0,Products ALIAS0,Products LEVEL1,Products LEVEL2,Products 100-10 Cola 100
Missing secondary field: If a null occurs where Essbase expects a secondary field, Essbase ignores the secondary null field and continues loading.
In the following example, there is no field in the ALIAS0, Products column:
LEVEL0,Products ALIAS0,Products LEVEL1,Products LEVEL2,Products 100-10a 100-10 100
When Essbase reads the record, it ignores the ALIAS0 field and loads the other fields.