![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
This chapter describes how to debug data loads by finding the problem, fixing the problem, and loading the failed records. In addition, this chapter describes how to optimize data loads. This chapter contains the following sections:
If you try to load a data source into Hyperion Essbase OLAP Server, but it does not load correctly, check the following:
If the answer to those questions is yes, then there is probably something wrong. When you have trouble loading a data source, look at the error log file generated for that data load. It lists the errors that occurred when Hyperion Essbase tried to load the data source. The error log file is located on the client machine in \ESSBASE\CLIENT\DATALOAD.ERR
.
If there is no error log file, check the following:
If the error log file exists but is empty, Hyperion Essbase does not think that an error occurred during loading. Check the following:
When Hyperion Essbase cannot load a record, it writes the record to the error log file, DATALOAD.ERR,
on the client. There is a limit to the number of records that an error log can contain. The default limit is 1000 records, but you can set the limit to be lower than 1000 by setting DATAERRORLIMIT in the ESSBASE.CFG
file. See the online Technical Reference in the DOCS
directory for more information.
When Hyperion Essbase writes the maximum allowed number of records in the error log file, it does not log any other errors it encounters. The data load, however, continues. Any subsequent errors are lost.
If the data source loads correctly, but the data in the database is wrong, check the following:
#MI
or #MISSING
into a data field that has no value. Otherwise, the data source may not load correctly. To replace a blank field with #MI
or #MISSING
, see Replacing an Empty Field with Text.
Note: | You can check data by exporting it, running a report on it, or by using a spreadsheet. To do exports and reports, see Developing Report Scripts and Performing Interactive and Batch Operations Using ESSCMD. To use a spreadsheet, see the Hyperion Essbase Spreadsheet Add-in User's Guide for your particular spreadsheet. |
After you fix the problem with the database or the rules file, you can load just the records that failed by loading the error log. See Loading the Error Log File.
Try to access the server without using Hyperion Essbase to help identify if the problem is with Hyperion Essbase and not with your server or network. Check the following:
If Hyperion Essbase cannot open the data source to load, check the following:
.TXT
. All rules files must have a file extension of.RUL
.
If your Isolation Level transaction setting is Committed, you must re-start the data load from the beginning. If your Isolation Level is Uncommitted, you can load just the records that failed by loading the error log. Hyperion Essbase copies each unloaded record to the error log file during loading. Just reloading these records is much faster than loading each data source again, including loading those records that succeeded during the first load.
For more information on Isolation Level settings, see About Isolation Levels.
Make sure you fixed the problem that caused the errors. Then load the error log:
DATALOAD.ERR
file to DATALOAD.TXT
. Hyperion Essbase can only load text files that end in.TXT
on the server. If you are loading from the client, the file can have any name valid on the local operating system.
Note: |
If you are reloading the dimension build error file, it is called DIMBUILD.ERR .
|
DATALOAD.TXT
file using the same rules file you used for the original data sources. If you do not know how to load a data source, see Introducing Data Loading.
If the server crashes while you are loading data, Hyperion Essbase sends you a time-out error. If you are overwriting the values in the database with the data source, reload the data sources after the server is running again.
If the Isolation Level transaction setting is Committed, you must re-start the data load from the beginning. If the Isolation Level is Uncommitted, and you are adding to or subtracting from the existing values in the database when the server crashes, do the following:
For more information on Isolation Level settings, see About Isolation Levels.
If you cannot validate your rules file, check to make sure that it is set up correctly. Make sure that:
Some SQL data sources may have end of file markers made up of special characters that can cause a data load or dimension build to fail. To fix this problem, define a rejection criterion to reject that record.
Loading large data sources into an Hyperion Essbase database can take a great deal of time. However, you can speed up the data loading process. To speed up a data load, it is important to:
This section contains the following subsections:
When Hyperion Essbase loads a data source, it does the following:
See Basic Architectural Elements for information on sparse and dense data combinations.
If you arrange your data source so that records with the same sparse member combinations are consecutively grouped, the data loads more quickly. The order of your fields is irrelevant, so long as the data that is changing from record to record is in the same block as the previous record. Continue this until there is no more data for the block and then change one of the sparse dimensions to access a different block, and so on. Thus, your data source should group all records by block.
The file in Figure 24-1, for illustration purposes, displays its fields such that you can easily see the sparse, non-attribute dimensions on the left and dense dimensions on the right, based on the structure of the Sample Basic database.
Note: | Because you do not load data into attribute dimensions, even though they are set as sparse, they are not relevant to this discussion. |
Sparse, non-attribute dimensions:
Figure 24-1: Sample Basic Database Showing Sparse and Dense Dimensions
Scenario Product Market Measures Year Actual Cola Ohio Sales Jan 25
Sort the records in the data source so that records with like values in the sparse dimensions are together. Then specify all the combinations of members in the dense dimensions, before specifying a different member in a sparse dimension. Figure 24-2, for example, sorts the records to put like records together. The values for the Measures dense dimension change first. Hyperion Essbase accesses one block.
Jan Actual Cola Ohio Sales 25 Actual Cola Ohio Margin 18 Actual Cola Ohio COGS 20 Actual Cola Ohio Profit 5
Figure 24-3, on the other hand, does not sort its records and changes its sparse dimensions before the dense ones. It loads more slowly than Figure 24-2, because Hyperion Essbase accesses four different blocks instead of one.
Jan Actual Cola Ohio Sales 100 Budget "Root Beer" Florida Sales 96 Actual "Root Beer" Ohio Sales 145 Budget Cola Florida Sales 85
If you are using a data source that loads more than one cell per record, use the same idea as Figure 24-2, but arrange the data so that the expanded dimension in the record is a dense dimension.
For more information on creating rules files, see Introduction to Rules Files. For more information on dense and sparse dimensions, see Basic Architectural Elements
Why Does This Speed up the Data Load?
Positioning your data based on sparse member combinations in the data source speeds up the data load because of how Hyperion Essbase stores sparse and dense dimensions. All data is stored in blocks. A block contains cells for all possible dense dimension intersections. Hyperion Essbase creates a block offset that points to the intersections in the block where the data is stored. The intersection of the sparse dimensions forms an index entry that points to the block where the data is stored.
So, when you put the sparse member combinations together, Hyperion Essbase uses the index to find the block where the data is stored and loads that block into its cache. Hyperion Essbase then uses the block offset to determine which parts of the block to change and writes to that block multiple times. Because the correct block is in the cache, you do not have to open it each time you write to parts of the block. This reduces the number of physical disk I/O's required, which speeds up your data load.
After you arrange your data source so that the sparse data combinations are together, rearrange it so that sparse dimensions are in the same order as the outline.
Why Does This Speed up the Data Load?
Positioning fields in the data source to match sparse dimensions in the outline speeds up the data load because of the way Hyperion Essbase accesses data using the index. Hyperion Essbase uses the index cache size to determine how much of the index can be paged into memory. Hyperion Essbase pages portions of the index in and out of memory as requested by the data load or other operations. If the data in your data source lists records in the same order as the outline, then less paging of the index occurs, thus reducing the I/O's required.
Note: | If the index cache size is large enough to hold the index in memory, then this method does not speed data loading. |
For more information about setting the index cache size, see Using Hyperion Essbase Application Manager for Database Settings. For more information about choosing the size of the index cache, see Estimating Disk and Memory Requirements for a Database.
If you load the data source from the server instead of the client, the data loads more quickly. To load a data source from the server, move the data source to the server and then start the load.
Why Does This Speed up the Data Load?
Using the server speeds up the data load because the data does not have to be transported over the network from the client to the server.
Make your data source as small as possible.
If you are using free-form data, set up ranges in the data source. Ranges reduce the number of fields Hyperion Essbase must read before loading data values. Figure 24-4 shows a file that does not use ranges and Figure 24-5 shows the same file optimized to use ranges. Figure 24-4 contains 32 fields that Hyperion Essbase must read in order to load the data values properly.
Figure 24-4: Data Source Without Ranges
Jan "New York" Cola 4 Jan "New York" "Diet Cola" 3 Jan Ohio Cola 8 Jan Ohio "Diet Cola" 7 Feb "New York" Cola 6 Feb "New York" "Diet Cola" 8 Feb Ohio Cola 7 Feb Ohio "Diet Cola" 9
Figure 24-5 contains only 22 fields that Hyperion Essbase must read in order to load the data values properly. In ranges, the last range cycles the fastest. In Figure 24-5, for example, the first range encountered is Jan and Feb (from the Year dimension), the second range is New York and Ohio (from the Market dimension), and the third range is Cola and Diet Cola (from the Product dimension). The last range encountered, in this case, is Cola and Diet Cola. So Hyperion Essbase assigns the first value, 4, to Jan, New York, Cola. Hyperion Essbase assigns the second value, 3, to Jan, New York, Diet Cola. The third value, 8, is assigned to Jan, Ohio, Cola. Hyperion Essbase continues in this order until the file is loaded.
Figure 24-5: Data Source with Ranges
Jan "New York" Cola 4 "Diet Cola" 3 Ohio Cola 8 "Diet Cola" 7 Feb "New York" Cola 6 "Diet Cola" 8 Ohio Cola 7 "Diet Cola" 9
Why Does This Speed up the Data Load?
The less there is to read in a data source, the less time it takes Hyperion Essbase to read it. Therefore, as long as a data source is complete, the smaller it is, the faster Hyperion Essbase can read and load it.
Make the fields in the data source as small as possible by:
#MI
instead of #MISSING
.
Why Does This Speed up the Data Load?
The less there is to read in a data source, the less time it takes Hyperion Essbase to read it. Therefore, as long as a data source is complete, the smaller it is, the faster Hyperion Essbase can read and load it.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Copyright © 1991-2000 Hyperion Solutions Corporation. All rights reserved.