Top-down data sources are organized left to right from the highest level to the lowest level. Each record begins with the most general information and progresses to the most specific information. The name of the new member is at the end of the record. When using a top-down data source, use the generation references build method. In the rules file, specify the generation number and the field type of each field of the data source.
Essbase numbers members within a dimension according to the hierarchical position of the member within the dimension. The numbers are called generation references. A dimension is always generation 1. All members at the same branch in a dimension are called a generation. Generations are numbered top-down according to their position relative to the dimension; that is, relative to dimension 1.
For example, as illustrated in Figure 66, Generations, the Product dimension is generation 1. Product has a 100 member, which is generation 2. 100 has members, such as 100-10, which are generation 3. To use the generation references build method, specify the generation reference number in the rules file.
The top half of Figure 67, Rules File for Generation Build shows a top-down data source (GENREF.TXT). The data source is used to build the Product dimension. The bottom half shows the rules file for the data source (GENREF.RUL). The rules file specifies the generation number for each field in the data source. See Setting Field Type Information.
Figure 68, Generation References shows the tree that Essbase builds from the GENREF.TXT data source and GENREF.RUL rules file:
When you use the generation references build method, you can choose to process null values. Null processing specifies what actions Essbase takes when it encounters empty fields, also known 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 as in the following ways:
Missing field: If the null occurs where Essbase expects a GENERATION field, Essbase promotes the next GENERATION field to replace the missing field.
In the following example, there is no field in the GEN3,Products column:
GEN2,Products GEN3,Products GEN4,Products 100 100-10a
When Essbase reads the record, it promotes the GEN4 field (100-10a) to GEN3, as if the data source looked like the following example:
GEN2,Products GEN3,Products GEN4,Products 100 100-10a
Missing field before secondary field: If a null occurs directly before a secondary field, Essbase ignores the secondary field. (Secondary field types are alias, property, formula, duplicate generation, duplicate generation alias, currency name, currency category, attribute parent, UDA, and name of an attribute dimension.)
In the following example, there is no field in the GEN2, Products or the ALIAS2,Products column:
GEN2,Products ALIAS2,Products GEN3,Products GEN4,Products Cola 100-10 100-10a
When Essbase reads the record, it ignores the ALIAS2 field and promotes the GEN3 field (100-10) to GEN2 and the GEN4 field (100-10a) to GEN3, as if the data source looked like the following example:
GEN2,Products ALIAS2,Products GEN3,Products GEN4,Products 100-10 Cola 100-10a
Missing secondary field: If the 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 ALIAS2, Products column:
GEN2,Products ALIAS2,Products GEN3,Products GEN4,Products 100 100-10 100-10a
When Essbase reads the record, it ignores the ALIAS2 field and loads the other fields.