Professional Documents
Culture Documents
1: Bootcamp
Volume II Student Guide
Authors
Lisa Alexander Jumal Qazi
Copyright 2008, Oracle. All rights reserved. Disclaimer This document contains proprietary information and is protected by copyright and other intellectual property laws. You may copy and print this document solely for your own use in an Oracle training course. The document may not be modified or altered in any way. Except where your use constitutes "fair use" under copyright law, you may not use, share, download, upload, copy, print, display, perform, reproduce, publish, license, post, transmit, or distribute this document in whole or in part without the express authorization of Oracle. The information contained in this document is subject to change without notice. If you find any problems in the document, please report them in writing to: Oracle University, 500 Oracle Parkway, Redwood Shores, California 94065 USA. This document is not warranted to be error-free. Restricted Rights Notice
Graphic Editors
Asha Thampy Satish Bettegowda
U.S. GOVERNMENT RIGHTS The U.S. Governments rights to use, modify, reproduce, release, perform, display, or disclose these training materials are restricted by the terms of the applicable Oracle license agreement and/or the applicable U.S. Government contract. Trademark Notice Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Editors
If this documentation is delivered to the United States Government or anyone using the documentation on behalf of the United States Government, the following notice is applicable:
Table of Contents
Preface
Course Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Course Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Course Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv Student Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv Activity Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Additional Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Future Courses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi
Table of Contents
Table of Contents
Dimension Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4 Creating Period-to-Date Totals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5 Creating Period-to-Date Calculated Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6 Implementing Dynamic Time Series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8 Dynamic Calc Members. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-11 Enhancing Accounts Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-13 Time Balance Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-14 Expense Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-16 Optimizing Data Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-18 Label Only Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-19 Implied Shares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-21
Table of Contents
Module 3: Reporting with Smart View Lesson 9: Getting Started with Smart View
Smart View Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-2 Smart View and Spreadsheet Add-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-3 Smart View Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-4 Smart View Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-5 Configuring Data Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-8 Configuring Provider Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-9 Connecting to Essbase Data Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-11 Creating Ad Hoc Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-13 Retrieving Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-15 Display of Multidimensional Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-17
vi
Table of Contents
Label Placement Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting the Point of View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selecting Dimension Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filtering Dimension Member Selections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Module 4: Creating Basic Calculations Lesson 11: Data Storage and Calculation
Calculation Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-2 Outline-Based Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-4 Script-Based Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-5 Calculation Script Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-8 Database Calculation Order. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-9 Data Block Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-11 Data Blocks and the Index System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-12 Data Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-14 Dense Dimensions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-16 Sparse Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-18 Database Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-20 Essbase 11.1.1: Bootcamp vii
Table of Contents
viii
Dimension Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-21 Block Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-22 Data Block Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-24 Data Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-25 DATACOPY Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-26 Sparse Dimension Consolidation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-27 Member Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-28 Database Calculation Process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-29 Input Data Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-30 Dense Dimension Calculation Process: Accounts . . . . . . . . . . . . . . . . . . . . . . . .11-31 Dense Dimension Calculation Process: Time . . . . . . . . . . . . . . . . . . . . . . . . . . .11-32 Sparse Dimension Calculation Process: Customer . . . . . . . . . . . . . . . . . . . . . . .11-33 Sparse Dimension Calculation Process: Product. . . . . . . . . . . . . . . . . . . . . . . . .11-35
Table of Contents
Boolean Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-9 Syntax Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13-11 Comparing FIX and IF Calculation Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-13 Number of Data Blocks Processed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-14 Number of Calculation Passes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-16
ix
Table of Contents
Table of Contents
Copying and Clearing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Copying Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clearing Data with CLEARDATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clearing Data with CLEARBLOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xi
Table of Contents
xii
M O D U L E
6
17
Appendices
Overview
Appendices include: Creating Advanced Calculations Creating Reports with Essbase Spreadsheet Add-in
This module contains appendices to provide information about additional features of Essbase not covered in this course.
A P P E N D I X
A
A
Objectives
Describe the script development process Implement methods for working with upper-level data loads Describe intelligent calculation behavior Allocate date with calculation scripts Describe and plan data normalization Normalize rates and drivers Copy and clear data
A-2
Module 6 Appendices Appendix A Creating Advanced Calculations Real-world data is often more difficult to audit than test data. As you develop scripts, you should focus on the technical accuracy of your calculation formulas and not attempt to tie results to prescribed control totals. It is typically easier to trace calculations and dependencies with contrived test data than with real-world data. The calculation script development process has two phases: 1. Prototype Phase: You develop scripts and test them for baseline accuracy. 2. Pilot Phase: You test scripts for performance and capture of exception conditions.
TIP
A-3
After you finish building your outline, you should separate the calculation script development process from the rules file development process to avoid cross-contamination of the data sets required for the processes.
CLEARBLOCK ALL;
2
Changed calculation script
A-4
Test cycle
Module 6 Appendices Appendix A Creating Advanced Calculations Implementing Test Cycles Every time you change your script and need to test calculation results, follow these steps: 1. Clear all data from the database. 2. Load calculation test data. 3. Execute your calculation script. 4. Audit your calculation results.
Results that are based on your input data and the subsequent calculation, not on other factors Fastest performance possible, given that results must be based on input data and subsequent calculation
A-5
If you follow this formalized test cycle every time you test a calculation script, you ensure the following outcomes:
Prototype Phase
Input sheet
Audit sheet
Prototype Phase
The prototype phase of calculation script development is for developing a basic script that correctly calculates dependencies and values for baseline calculations. You want the prototype phase to be as fast and efficient as possible, with low calculation test cycle times. To meet this objective, the following process for creating a prototype calculation script is recommended: 1. Create test input data. 2. Create audit spreadsheets. 3. Implement a draft and test cycle.
TIP
Be sure to check your block statistics before and after running your calculation.
A-6
Module 6 Appendices Appendix A Creating Advanced Calculations Creating Test Input Data To quickly check your results, you should create test data that is simple, easy to load, and easy to audit. It is not efficient to create prototype calculation scripts when using full or even partial sets of actual data, because the results require too much time to calculate and audit. To create a simple data set for prototyping: 1. In Excel, create a spreadsheet workbook, with one or more input worksheets, that represents a focused set of accounts to be tested against a representative crosssection of sparse dimension members.
TIP
In your input worksheets, use only members to which you load data. For example, if Qtr 1 is a calculated member, do not reference Qtr 1 in your input sheet. If your input levels vary, you can create multiple input spreadsheets in one workbook.
For easier auditing, use multiples of 100 or 1000 or similar simple numbers for which it is easy to trace a series of calculation dependencies.
Creating Audit Sheets When drafting and testing calculation scripts, you must be able to audit results easily. To accomplish this objective, set up clearly identified audit and comparison sheets, separate from input sheets, in your testing workbook. Audit sheets are designed to test whether specific calculations are working. Your audit sheets, when retrieved, must reflect member combinations that show both input data and calculation results. Do not try to audit too many types of calculations on one sheet; you can have several audit sheets, each of which tests a different calculation sequence, such as allocations versus back calculations. As a best practice, create three audit sections: Essbase calculation results: data you retrieve from Essbase
A-7
Module 6 Appendices Appendix A Creating Advanced Calculations Expected calculation results: static data copied from a data source or calculated using Excel formulas (To protect Excel formulas during retrieval, enable formula preservation options. To protect numeric data during retrieval, place an equals sign (=) before the number. Addition of the equals sign converts the number to an Excel formula.) Comparison of Essbase calculation results and expected calculation results: Excel formulas calculating the difference between Essbase results and static data (This section enables you to see quickly and easily where Essbase results vary from expected results.)
Implementing Draft and Test Cycles After setting up input and audit worksheets, you draft and test your prototype script by using a cyclical test procedure. Rather than writing and testing a calculation script in its entirety, test small sections at a time: Write one line of script and then complete the calculation testing cycle; then write another line and test again. In this way, you can identify problematic or incorrect script lines as you write them. The following tips can help speed the calculation test cycle: To clear your database, create a separate calculation script with only the command CLEARBLOCK ALL. This way, you can complete the entire calculation test cycle from Excel, using the capabilities of Smart View Spreadsheet Add-in, rather than switching back to Administration Services Console.
NOTE
Do not use this method with larger data sets, as performance is better when data is cleared using Administration Services Console.
Use Smart View to submit data from your input sheets, or use Spreadsheet Add-in to lock and send the data. Before you execute your prototype calculation script, retrieve from the sheets that audit the results of your Essbase calculation. With this retrieval, you verify the input data that you loaded. After calculation, use the Undo feature in Smart View or the Flashback feature in Spreadsheet Add-in to revert to the input data in your spreadsheet.
A-8
You can implement these three sections on one audit worksheet or create an audit worksheet for each section.
Pilot Phase
Pilot Phase
When you develop a prototype script, you confirm that calculations and dependencies work correctly on test data. During the pilot phase of testing, you test the prototype script against real-world data and make necessary changes. You typically make two types of adjustments to the prototype script during pilot testing: Performance optimization Exception trapping Performance Optimization During prototype testing, the database is typically too small for you to accurately assess performance impacts. During the pilot phase, you refine your prototype script to address performance issues.
A-9
Module 6 Appendices Appendix A Creating Advanced Calculations The following tips can help you optimize the performance of your calculation scripts: Minimize the number of calculation passes in your script. Two calculation passes on a given set of data blocks require twice as much time as one pass, so use the pilot phase to ensure that all calculations that can be grouped are performed in a single pass. For each calculation pass, minimize the number of blocks that Essbase calculates. If Essbase does not need to calculate every existing data block, use FIX statements to focus calculation on the necessary blocks.
Revise dynamic calculation (versus batch calculation) approaches to reflect your final calculation requirements. Determine whether your calculation returns correct results with intelligent calculation turned on, thus minimizing the number of data blocks required for calculation. The full ramifications of intelligent calculation are discussed later in this appendix. Exception Trapping The prototype calculation script typically addresses known mainstream or baseline calculation requirements. Testing your prototype against real data can result in errors that represent exceptions to the baseline and that require further refinement of the script. The following are examples of exception trapping: Adjusting allocation formulas because actual data is input at levels other than the levels that were assumed during the prototype phase Adding conditional logic to address the handling of zero values in calculations Adding DATACOPY commands to create data blocks necessary for calculation Pilot Phase Testing Testing in the pilot phase follows the calculation, testing-cycle steps of the prototype phase but uses real data instead of test data. Using real data modifies the calculation, test-cycle methodology, as it was described for the prototype phase. Unlike test data, real data tends to reside in exterior data sources that are typically loaded with rules files. Also, the volume of real data tends to be significantly higher than the volume of test data, a difference that increases calculation times.
A-10
Revise sparse and dense storage settings to reflect your final calculation requirements.
Module 6 Appendices Appendix A Creating Advanced Calculations Additionally, because one of the primary objectives of this phase is to improve calculation performance, you need to mimic your production environment as much as possible and follow the sequence of production operations that you ordinarily follow. For example, upload data from the G/L, make outline modifications, and then run your calculation. Although Excel should still be used in this phase to audit calculation results, you can automate the rest of your calculation test cycle by using a MaxL script. The following example clears the database, loads data files, and then runs a calculation script. The entire process is spooled to a log file, which shows database statistics before and after calculation. */ */ */ */ */
/* ****************************************/ /* CREATE PROCESS LOG AND LOGIN TO SERVER */ /* ****************************************/ spool on to 'c:\temp\output.txt'; login $1 $2 on 'localhost'; /* ***********************************************************/ /* Activate and then clear data from Bigcorp Sales database */ /* ***********************************************************/ alter system load application 'Bigcorp'; alter application 'Bigcorp' load database 'Sales'; alter database 'Bigcorp'.'Sales' reset; /* ***************************************/ /* Load data files */ /* ***************************************/ import database 'Bigcorp'.'Sales' data from server text data_file 'Actual' using server rules_file 'Loadcorp' on error write to 'c:\temp\acterr.txt'; import database 'Bigcorp'.'Sales' data
A-11
/****************************************************************/ /* This MaxL script clears and then loads data to the /* Bigcorp Sales database for testing calculation scripts. /* Variables: /* $1 = user name /* $2 = password /****************************************************************/
Module 6 Appendices Appendix A Creating Advanced Calculations from server text data_file 'Forecast' using server rules_file 'Loadcorp' on error write to 'c:\temp\forerr.txt'; /**********************************************/ /* Get pre-calculation database statistics*/ /**********************************************/ query database 'Bigcorp'.'Sales' get dbstats data_block; /*****************************/ /* Run calculation scripts*/ /*****************************/ execute calculation 'Bigcorp'.'Sales'.'CalcAll'; /***********************************************/ /* Get post-calculation database statistics*/ /***********************************************/ query database 'Bigcorp'.'Sales' get dbstats data_block; /* ********************************/ /* Close out process log and exit */ /* ********************************/ spool off; exit;
A-12
A-13
A-14
A-15
Module 6 Appendices Appendix A Creating Advanced Calculations Controlling Aggregate Missing Values Behavior There are two ways to control aggregate missing values behavior: Default database setting: New databases by default do not aggregate missing values. You can change the default setting on the General tab of the Database Properties dialog box. Calculation script: You can use the command SET AGGMISSG ON|OFF to control the aggregation of missing values on a script-by-script basis. This command overrides the default database setting and is typically included in the housekeeping section of the script.
TIP
As a best practice, you should set aggregate missing values on as a database default and turn it off selectively in your calculation scripts.
Performance Implications When you aggregate missing values during hierarchy consolidations (SET AGGMISSG ON), calculation performance is significantly enhanced for the following reasons: Dense calculations within a data block: Cell aggregations that can be performed multiple ways are summed only once. In the following example, Essbase can achieve the same result in the intersection of Cost of Sales and Qtr 1 by using the account formula (Labor+Material+Overhead) or the time period formula (Jan+Feb+Mar). Rather than calculating "Cost of Sales"->"Qtr 1" during the Accounts dimension calculation and then again during the Year Tot dimension calculation, Essbase calculates the cell only once, using the consolidation path of the dimension that it calculates last.
Jan Labor Material Overhead Cost of Sales 100 50 75 225 Feb 100 50 75 225 Mar 100 50 75 225 Qtr 1 300 150 225 675
A-16
Module 6 Appendices Appendix A Creating Advanced Calculations Sparse calculations between data blocks: Blocks that can be aggregated multiple ways are calculated only once, using an algorithm that attempts to calculate using the fewest possible blocks. In the following example, data block 12 (the intersection of Thunderball and OEM) can be calculated as the sum of blocks 4+8 or the sum of blocks 9+10+11. Rather than using both formulas and thus calculating block 12 twice, Essbase uses only the 4+8 formula because it requires fewer blocks.
O-Dell Thunderball 270 A Thunderball 540 A Thunderball 1 5 9 O-HP 2 6 10 O-IBM 3 7 11 OEM 4 8 12
Although not aggregating missing values (SET AGGMISSG OFF) is required to protect upper-level data, not aggregating missing values during hierarchy consolidations can have a serious impact on calculation performance, especially in the following two situations: When you have a low ratio of calculated data blocks to input data blocks When you load many data values at parent levels on sparse dimensions; for example, in the Bigcorp Sales database, if you load many data values into Retail in a sparse Customer dimension In these situations, the performance overhead required for not aggregating missing values is between 10% and 30%. If calculation performance is critical, reconsider how you configure the database or how you load data, to avoid the need to protect upperlevel input data. Expected Versus Correct Considerations When you load data to upper levels in your hierarchy, additional issues of expected versus correct calculation behavior must be considered. These issues are difficult to understand without stepping through the calculations. The following example illustrates the problem.
A-17
Module 6 Appendices Appendix A Creating Advanced Calculations The Other CGS account data for Bigcorp Sales is collected in transactional systems without regard for customer or product. Thus, the data is available for input only at the level that represents the total for all products (Family Total) and all customers (Channel Total). The following input sheet loads Other CGS data to the "Current Year"->"Family Total"->"Channel Total" data block.
However, all other account drivers are input to level 0 blocks. The following input sheet loads other account data (units, list price, and so on) to the "Current Year"->"Lightbolt 365 A"->"O-IBM" and "Current Year"->"Thunderball 540 S"->"O-IBM" data blocks.
You calculate the following script, making sure to include instructions to protect the data loaded in the upper-level block. /* Housekeeping */ SET UPDATECALC OFF; SET AGGMISSG OFF; /* The Main Rollup */ CALC DIM (Accounts, "Year Tot", Customer, Product);
A-18
/* The Back Calculation */ ( "List Price" = "Gross Sales" / Units; "Discount %" = Discounts / "Gross Sales"; "Labor/Unit" = "Direct Labor" / Units; "Matl/Unit" = Material / Units; "Overhead Rate" = Overhead / "Direct Labor"; ) However, when you audit your results, you notice that, although totals for Net Sales, Cost of Sales and Other CGS are correct, totals for Gross Margin are not correct.
The incorrect totals for Gross Margin are due to calculation order: The Accounts dimension calculates first, creating Gross Margin totals in both level 0 bocks. When Customer and Product are calculated, Essbase aggregates the data that exists in the level 0 blocks. This aggregation creates incorrect totals for Gross Margin in the "Current Year"->"Family Total"->"Channel Total" block. The Other CGS data is protected during the aggregation by the SET AGGMISSG OFF command. To correct the incorrect totals, you must calculate Gross Margin in the "Current Year"->"Family Total"->"Channel Total" block in a separate, additional calculation pass, such as a back calculation, that takes place after the main rollup. This problem can occur frequently when you work with multi-level inputs. If you have a large number of multilevel inputs that force you to recalculate data at upper levels, consider a method other than protecting upper-level loads by not aggregating missing values for handling upperlevel input data.
A-19
A-20
Module 6 Appendices Appendix A Creating Advanced Calculations For example, instead of loading Other CGS data to the "Current Year"->"Family Total"->"Channel Total" block, as in the preceding example, you load to the "Current Year"->"No Product"->"No Customer" block, using the following input sheet.
You also load other input account data to specific customer and product blocks, as in the preceding example. The following input sheet loads to the "Current Year"->"Lightbolt 365 A"->"O-IBM" and "Current Year"->"Thunderball 540 S"->"O-IBM" data blocks.
You run the following calculation script. Because you no longer need to protect upperlevel input data, you turn the aggregate missing values setting on for better performance. /* Housekeeping */ SET UPDATECALC OFF; SET AGGMISSG ON; /* The Main Rollup */ CALC DIM (Accounts, "Year Tot", Customer, Product); /* The Back Calculation */
A-21
Module 6 Appendices Appendix A Creating Advanced Calculations ( "List Price" = "Gross Sales" / Units; "Discount %" = Discounts / "Gross Sales"; "Labor/Unit" = "Direct Labor" / Units; "Matl/Unit" = Material / Units; "Overhead Rate" = Overhead / "Direct Labor"; ) Your audit sheet shows the following correct results:
In this example, all data in the "Current Year"->"Family Total"->"Channel Total" data block is aggregated from the three dependent blocks, so no recalculation is required after consolidation.
A-22
Intelligent Calculation
Only marked data blocks are recalculated:
Intelligent Calculation
A primary goal in calculation script development is optimization (elimination of extra passes through the database index). To optimize calculation, you can use FIX and IF statements, to focus calculations, or you can use an option called intelligent calculation. When you perform a full database calculation, Essbase marks which blocks have been calculated. If you then load a subset of data, you can calculate only the changed data blocks and their ancestors. This selective calculation process is intelligent calculation. By default, intelligent calculation is turned on. You can change the default setting in the essbase.cfg file or on a script-by-script basis with the SET UPDATECALC OFF command. For information about the essbase.cfg file, see the online Technical Reference, Essbase.CFG Configuration Settings.
A-23
Module 6 Appendices Appendix A Creating Advanced Calculations Intelligent calculation is based on data-block marking. When intelligent calculation is active, during normal processes, within the index file, blocks are marked clean or dirty. Clean blocks: Blocks that do not require calculation Dirty blocks: Blocks that require calculation When intelligent calculation is active, during calculation, Essbase looks for only dirty data blocks.
NOTE
A-24
Intelligent calculation marks data blocks, not data cells, clean or dirty. For example, assume that, in a database that includes a dense time dimension, data is loaded once per month. When you load data to a month, intelligent calculation marks the affected blocks as dirty. Therefore, all time periods within the affected blocks are recalculated.
A-25
Module 6 Appendices Appendix A Creating Advanced Calculations Automatic Intelligent Calculation When you execute a calculation script with a CALC ALL statement or with a CALC DIM statement that includes all dimensions, the intelligent calculation process performs the following actions: All previously existing input data blocks are calculated and marked clean. All data blocks created by the consolidation process are calculated and marked clean. All previously existing dirty blocks are calculated and marked clean.
CALC ALL; CALC DIM (Accounts, "Year Tot", Scenario, Product, Customer); Even when intelligent calculation is enabled, for CALC DIM statements that do not include all dimensions, Essbase does not use an intelligent calculation process. Rather, Essbase calculates all relevant data blocks, regardless of clean or dirty status, and all data blocks retain their status, dirty or clean. The following script examples do not enable intelligent calculation: CALC DIM (Accounts, "Year Tot", Scenario, Product); CALC DIM (Accounts, "Year Tot"); AGG (Scenario, Product, Customer) Forced Intelligent Calculation SET CLEARUPDATESTATUS AFTER is a calculation command that engages intelligent calculation for any calculation script, regardless of construction. Typically, you use this command where you cannot meet the conditions for a CALC DIM on all dimensions. When you execute a calculation script that includes the SET CLEARUPDATESTATUS AFTER command, data blocks that are marked clean are not calculated, and data blocks that are marked dirty are calculated and marked clean.
A-26
Module 6 Appendices Appendix A Creating Advanced Calculations The following example demonstrates the use of the SET CLEARUPDATESTATUS AFTER command: SET CLEARUPDATESTATUS AFTER FIX (@IDESCENDANTS("Qtr 1")) CALC DIM (Accounts); ENDFIX Forced Block Marking Without Calculating SET CLEARUPDATESTATUS ONLY is a calculation script command that instructs Essbase to perform data-block marking but not to perform script calculations. Typically, you use this command immediately after a script segment in which intelligent calculation is disabled. The following example shows a two-part script: The first segment, in which intelligent calculation is disabled, calculates data blocks correctly but does not mark dirty blocks as clean. In the second segment, in which data-block marking is enabled, the SET CLEARUPDATESTATUS ONLY command instructs Essbase to mark as clean all blocks that were previously marked dirty. /* Turn off intelligent calculation */ SET UPDATECALC OFF; /* Back Calculation */ "Gross Margin %" = "Gross Margin" / "Net Sales"; "List Price" = "Gross Sales" / Units; /* Enable data block marking */ SET CLEARUPDATESTATUS ONLY; "Gross Margin %" = "Gross Margin" / "Net Sales"; "List Price" = "Gross Sales" / Units; SET CLEARUPDATESTATUS ONLY affects only the database index and does not require the referenced data blocks to be moved into memory. Under most circumstances, therefore, elements of a calculation script following SET CLEARUPDATESTATUS ONLY execute very quickly.
A-27
A-28
Module 6 Appendices Appendix A Creating Advanced Calculations Block Creation During Data Input Blocks created from a data input process are marked dirty as they are created. Blocks can be created during batch data load processes, by submitting data from Smart View for Office, by locking and sending data from Spreadsheet Add-in, or by using other direct input options. Data Modification Blocks that include modified data cells are marked dirty. For example, if, within a block, a line manager updates units, the block should be marked dirty because revenues, costs, and margin are now incorrect and need recalculating. Creation or Modification of Descendant Blocks Intelligent calculation is efficient because it calculates only affected blocks. The ancestors of a dirty block need to be calculated because they are dependent on values of the modified descendant. Therefore, all ancestors of input and modified blocks are marked dirty. Database Restructure Outline changes prompt Essbase to mark blocks dirty. Which blocks are marked dirty is determined by whether the outline changes involve dense or sparse dimensions: Moving, adding, or deleting members of dense dimensions causes all blocks to be marked dirty. Moving, adding, or deleting members of sparse dimensions causes only the affected blocks and their ancestors to be marked dirty.
A-29
Usage Considerations
Maintain clean and dirty status of blocks: False negatives affect calculation efficiency False positives affect data integrity
9
False positive
Usage Considerations
Occasionally, clean data blocks are marked dirty. In such cases, calculation efficiency suffers. A more serious problem, however, is a false positive condition, in which dirty blocks are marked clean. In the case of such false positives, data integrity can suffer. False Positives False positive conditions can arise in various ways: Calculating only a subset of a block. Essbase marks at the block level, not the cell level, so a calculation that is executed on a subset of cells can cause a false positive condition. Only a few cells are calculated, but the block is marked clean, although uncalculated cells remain.
A-30
Module 6 Appendices Appendix A Creating Advanced Calculations Calculating a back calculation after calculating all dimensions. A false positive can prevent the required second calculation pass, which corrects upper-level rates and percentages. The false positive condition occurs if the CALC DIM portion of a script engages intelligent calculation, which marks all blocks clean during the CALC DIM process. When Essbase processes the back calculation portion of the script, no data blocks are calculated because all blocks are marked clean. Using a FIX statement. Ancestors of a dirty block are not marked dirty until the descendant dirty block is calculated. A false positive can result if the descendant dirty block is calculated within a FIX statement that does not include the dirty ancestor block. After calculation, Essbase marks the descendant block clean, and the ancestor block remains marked clean, although it should be marked dirty. Following SET CLEARUPDATESTATUS ONLY with unrelated calculations. You should follow SET CLEARUPDATESTATUS ONLY with a repetition of the section of the script for which you want to force data-block marking. A false positive can occur if SET CLEARUPDATESTATUS ONLY touches blocks that are otherwise dirty and that are not correctly calculated. Usage Guidelines Intelligent calculation can provide significant performance benefits in certain situations but requires vigilant maintenance of the clean and dirty status of data blocks to avoid skipping the wrong blocks on calculation. Be very careful when using intelligent calculation, and be sure to review the detailed discussion of intelligent calculation in the Database Administrators Guide. The intelligent calculation function is most productively used in interactive or iterative situations in which small, incremental changes are made to a database and in which it is not necessary to recalculate the entire database. For example, you can use intelligent calculation in the following situations. During the month-end close periods, allocation rates and adjusting entries may be updated multiple times. You use intelligent calculation to view update results without recalculating the entire database. In budget or forecasting applications, typically, many users update units and drivers on a regular basis. In such applications, for users to analyze the impact of their updates, a short calculation time is imperative.
A-31
Allocating Data
Upper-level input allocation:
1
100%
2
3
15 %
45 %
40 %
15%
45%
40%
Allocating Data
As mentioned earlier in this appendix, a method of handling upper-level input data is to allocate or push down the data that you load to dependent level 0 data blocks, so you can consolidate normally. However, allocations are not restricted to distributing upperlevel input data. You can use the methods described here to distribute totals loaded to level 0 data blocks across other level 0 data blocks. When you allocate data, you typically include the following steps in your calculation process: 1. Load input data to upper-level data blocks or designated level 0 data blocks. 2. Allocate data to dependent level 0 data blocks, using various allocation methods.
A-32
Module 6 Appendices Appendix A Creating Advanced Calculations 3. Consolidate data using a CALC ALL or CALC DIM statement (For upper-level input data, the statement overwrites the original input).
TIP
If allocating a level 0 input, offset the original input amount by the sum of all allocated data, to avoid doubling the input data upon consolidation.
A-33
15%
45%
10%
30 %
/* Allocate IT Expense */ "IT Exp Finance" = "IT Exp" * "Corp HQ"->FinancePct; "IT Exp Sales" = "IT Exp" * "Corp HQ"->SalesPct; "IT Exp HR" = "IT Exp" * "Corp HQ"->HRPct; "IT Exp Mktg" = "IT Exp" * "Corp HQ"->MktgPct; /* Allocate Administrative Expense */ "Admin Exp Finance" = "Admin Exp" * "Corp HQ"->FinancePct; "Admin Exp Sales" = "Admin Exp" * "Corp HQ"->SalesPct; "Admin Exp HR" = "Admin Exp" * "Corp HQ"->HRPct; "Admin Exp Mktg" = "Admin Exp" * "Corp HQ"->MktgPct; Alternatively, you can define temporary variables in your calculation script to store percentages temporarily, as in the following example. /* Information Assumptions: 1) Expenses are loaded to generic expense accounts and then allocated to department-specific accounts based on fixed percentages. */ /* Housekeeping */ /* Define fixed allocation percentages for each department */ VAR FinanceAlloc = .15; VAR SalesAlloc = .45; VAR HRAlloc = .10; VAR MktgAlloc = .30; /* Allocate IT Expense */ "IT Exp Finance" = "IT Exp" * FinanceAlloc; "IT Exp Sales" = "IT Exp" * SalesAlloc; "IT Exp HR" = "IT Exp" * HRAlloc; "IT Exp Mktg" = "IT Exp" * MktgAlloc; /* Allocate Administrative Expense */ "Admin Exp Finance" = "Admin Exp" * FinanceAlloc; "Admin Exp Sales" = "Admin Exp" * SalesAlloc; "Admin Exp HR" = "Admin Exp" * HRAlloc; "Admin Exp Mktg" = "Admin Exp" * MktgAlloc;
A-35
Customer
O-Dell
O-Acer
"O-IBM"->Units / Customer->Units
"O-Dell"->Units / Customer->Units
"O-Acer"->Units / Customer->Units
A-36
Module 6 Appendices Appendix A Creating Advanced Calculations In Bigcorp Sales, Material Variances is loaded to the total for all products and all customers. To allocate this total to individual, product-customer data blocks based on a percentage of total units, use the following formula: Material Variances" = "Material Variances"->"Family Total"->"Channel Total" * ( Units / Units->"Family Total"->"Channel Total");
TIP
A-37
Depending on when you execute the allocation, you may have to calculate the total ratio base before calculating the allocation. For example, if your allocation is based on a percent of total headcount, you must calculate total headcount before you allocate.
Normalization
Allocate upper-level input to level 0 descendants. Allocate level 0 input to other level 0 blocks.
1
Normalization
In interactive applications, allocations are sometimes standalone processes. However, when allocations are incorporated into a database consolidation, they typically fall into the normalization section of the calculation script architecture. In relational databases, the process of normalization eliminates redundant data from tables to improve performance and data scalability. Because Essbase does not store data for block storage databases in tables, block storage normalization is a very different process.
A-38
Module 6 Appendices Appendix A Creating Advanced Calculations In block storage databases, normalization is required when you load data to data blocks other than the blocks that are the intended, final target for the data, as described in the following examples: You load total miscellaneous expenses to a block that represents the total of all customers and all products. Prior to consolidating the database, you allocate total miscellaneous expenses to each individual, product-customer block (level 0) based on the percentage of total units sold in each level 0 block. You load total IT expenses to a level 0 block for a corporate headquarters entity. Prior to consolidating the database, you allocate total IT expenses to each office location (level 0) based on the percentage of total headcount for each office. The common thread in the examples is that the calculations are required to happen prior to consolidation of the database. Normalization is a general umbrella for any data manipulation that needs to occur after data input and before main database consolidation.
A-39
Forecast data:
Input units and rates Derive dollars
A-40
Budget data:
Module 6 Appendices Appendix A Creating Advanced Calculations Inputs for forecast data are similar to inputs for budget data, but the level of detail is different, depending on what kind of forecasting you need. For example, in a sales forecasting application, forecast data can have very detailed customer information. Inputs for actual data are typically dollars and units, and rates are derived through calculation. In contrast to budget data, actual data often contains more revenue detail by customer and less overhead detail. Because of the type and level of inputs for each scenario, different scenarios often require different data load procedures and different calculation scripts.
A-41
A-42
Module 6 Appendices Appendix A Creating Advanced Calculations Determining What Dimensions Require Normalization Before building a normalization table, determine how many dimensions require normalization in each scenario. To accomplish this task, examine your input data. The following example represents budget input data for Bigcorp Sales.
In this example, a value of 73,000 is loaded to the intersection Budget->"Material Variances"->Jan->"Family Total"->"Channel Total". Examine the full cell address, one dimension at a time, to determine whether data must move along the dimension.
Member Name Budget Material Variances Jan Family Total Channel Total Movement Required? No. All 73,000 remains in the budget scenario. No. All 73,000 remains in the Material Variances account. No. All 73,000 remains in the Jan time period. Yes. A percentage of the 73,000 must be allocated to each product. Yes. A percentage of the 73,000 must be allocated to each customer.
Based on this analysis, Bigcorp Sales budget data requires normalization in two dimensions: Product and Customer. Creating Normalization Tables Normalization tables are simply documentation templates that you create in a spreadsheet program. They are not connected to an Essbase database, so they do not require Spreadsheet Add-in.
A-43
Module 6 Appendices Appendix A Creating Advanced Calculations A normalization table lists all input accounts in the row axis. For each dimension that you normalize, include the following four columns:
Column Name Data Type Input Level Push to Level Methodology Description How data for the current account is created (direct input, formula calculation, consolidation, and so on) Generation or level at which data is loaded (for the dimension being normalized) Generation or level to which input data must be moved (for the dimension being normalized) How to move data in the dimension being normalized (Common methods include copying data and allocating data.)
Completing Normalization Tables After you create the template, enter the relevant information in the table, documenting as much as possible. A normalization table for the Other CGS accounts of the previous budget input example looks like the example on the slide.
A-44
In databases with a large number of sparse dimensions, creating a complete block diagram can be too complicated and should not be used as a development technique.
A block diagram is a two-dimensional representation of data blocks, where rows represent generations of dimension1 and columns represent generations of dimension2. The resulting matrix represents all combinations between the generations of dimension1 and dimension2.
A-45
Module 6 Appendices Appendix A Creating Advanced Calculations Although normalizations can have interim steps, the final destination, or target block, for normalized data is a level 0 block. To build a block diagram, start with a single target block in the lower left corner. This block is an arbitrary selection to enable creation of a representative slice of your database. After creating your diagram, analyze your input data and mark on the diagram the blocks to which data is loaded. Marking helps you visualize the movement of data required during normalization.
A-46
A-47
Module 6 Appendices Appendix A Creating Advanced Calculations Multiple member input: When you load rates to multiple members in the dimension being normalized, normalize using dynamic references. In the example on the slide, the list price for each product is loaded to customer channels; there are different prices for OEM, Retail, and Distributor customers. To calculate List Price in the target blocks, use the following formula: "List Price" = @PARENTVAL(Customer, "List Price");
A-48
A-49
Copying Data
Copy entire blocks
DATACOPY "Current Year" TO "Forecast"
Copying Data
In budgeting or forecasting scenarios, it is common to copy actual data to use as a basis for the budget or forecast. The DATACOPY command is an efficient way to copy large slices of the database, creating blocks or filling in data cells within blocks, depending on the focus of the calculation.
A-50
Module 6 Appendices Appendix A Creating Advanced Calculations Guidelines for DATACOPY: You can use the cross-dimensional operator in the DATACOPY command, but the destination member combination cannot be more specific than the source member combination. For example, the following formula results in an error at runtime: DATACOPY "Current Year" TO "Prior Year"->Jan; However, the source member combination can be more specific than the destination member combination. For the following formula, Essbase fills in the missing member at runtime: DATACOPY "Current Year"->Jan TO "Prior Year"; When Essbase executes the preceding formula at runtime, it calculates the following combination of members: DATACOPY ""Current Year"->Jan TO "Prior Year"->Jan; If the source and destination member combinations are all dense member references, Essbase does not create data blocks. For example, the following calculation is executed only in existing data blocks: DATACOPY Jan TO Feb; However, if any member of the member combinations for the source or destination is sparse, Essbase creates data blocks, if they do not exist. You can use DATACOPY commands inside FIX statements, but not inside IF statements.
A-51
A-52
Module 6 Appendices Appendix A Creating Advanced Calculations You can use a cross-dimensional operator to create valid member combinations in a CLEARDATA statement. For example, the following statement clears Budget data for only the O-IBM customer. CLEARDATA Budget->"O-IBM"; The CLEARDATA command removes data blocks only when all members referenced in the statement are sparse. If any member is dense, the command clears only data cells. For example, in Bigcorp Sales, the following command removes all Current Year data blocks for R-Gateway, because both Scenario and Customer are sparse dimensions. CLEARDATA "Current Year"->"R-Gateway"; However, when you add a dense dimension, like Year Tot, to the member combination, as in the following example, the command clears cells in the Current Year data blocks for R-Gateway, but it does not remove the blocks. CLEARDATA "Current Year"->"R-Gateway"->Jan; You cannot use CLEARDATA in an IF statement.
A-53
DYNAMIC
A-54
Module 6 Appendices Appendix A Creating Advanced Calculations Guidelines for CLEARBLOCK: If you use CLEARBLOCK inside a FIX statement on dense dimension members, Essbase clears only the data cells within the fixed range and does not remove data blocks. In the following example, the CLEARBLOCK command clears data only for January cells in the Current Year scenario: FIX(Jan, "Current Year") CLEARBLOCK ALL; ENDFIX You cannot use CLEARBLOCK in an IF statement.
A-55
Summary
In this lesson, you should have learned to: Describe the script development process Implement methods for working with upper-level data loads Describe intelligent calculation behavior Allocate date with calculation scripts Describe and plan data normalization Normalize rates and drivers Copy and clear data
A-56
A P P E N D I X
Objectives
Describe Essbase Spreadsheet Add-in Install Essbase Spreadsheet Add-in Retrieve data into a Microsoft Excel worksheet Manage worksheet options Preserve Microsoft Excel formulas in a worksheet Replicate spreadsheet reports with the Cascade option Design spreadsheet reports by selecting members from the outline Create savable queries Create advanced queries Retrieve with report scripts
Essbase database
B-2
Essbase toolbar
B-3
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in To unregister Essbase Spreadsheet Add-in From the Windows desktop, select Start > Programs > Hyperion > Essbase Client > Unregister Spreadsheet Add-in. Essbase Spreadsheet Add-in features a convenient toolbar that displays buttons for accessing most of the common Essbase menu commands without opening the Essbase menu. You can view a short description of a button on the toolbar by moving your cursor over the button. Prior to using the Essbase toolbar for Excel, you must install the toolbar by opening an Excel file that is provided as part of the default Essbase installation. You do not have to perform the toolbar installation procedure again unless you delete the Essbase toolbar from the Toolbars dialog box in Excel. To install the Essbase toolbar: 1. In Excel, select File > Open. 2. From the x:\...\AnalyticServices\client\sample directory, open esstoolb.xls. Macros embedded in this file install the Essbase toolbar.
NOTE
When you open the file, two dialog boxes may be displayed warning that esstoolb.xls contains macros. If so, click the Enable Macros button on the first dialog box, and then click OK on the second dialog box. The macros must be enabled to install the Essbase toolbar. Excel macro security must be set to Medium or lower to install the toolbar.
3. Select File > Close to close esstoolb.xls. You do not need to modify or save the file.
B-4
1
1
4
4
B-5
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in If you have at least one established connection, the system does not prompt you to connect again on subsequent worksheets, but uses the last requested connection. To connect to a database: 1. Select Essbase > Connect. The Essbase System Login dialog box is displayed. 2. From the Server drop-down list, select an Essbase Server instance. 3. Enter your username and password, and then click OK. Application and database names are displayed for the selected server. 4. Select an application-database pair. 5. Click OK. To disconnect from a database: 1. Select Essbase > Disconnect. The Essbase Disconnect dialog box is displayed. 2. Select a worksheet connection. 3. Click Disconnect to disconnect the selected worksheet. 4. Click Close.
B-6
Retrieving Data
When you select Essbase > Retrieve, Essbase returns toplevel data into an empty spreadsheet.
1
2 3
Excel
Essbase Serve r
Essbase database
4
Top- level data
Retrieving Data
Each time you retrieve information from Essbase, the following sequence of events occurs: 1. Essbase Spreadsheet Add-in requests data from the server. 2. The server processes the request and prepares the data. 3. The server transmits the data to Essbase Spreadsheet Add-in. 4. The spreadsheet application receives the data from Essbase and organizes it in a worksheet.
B-7
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in When you retrieve data into an empty worksheet, the server returns data from the top levels of each database dimension. You can use the top-level data as a starting point to navigate, or drill down, into levels of detailed data. For example, if you retrieve top-level data from the Bigcorp Sales database, the following five dimensions are displayed: Year Tot, Accounts, Scenario, Product, and Customer.
TIP
B-8
You can retrieve data by double-clicking an empty spreadsheet cell, selecting Essbase > Retrieve, or clicking (Retrieve) on the Essbase toolbar. If every row in the report is #Missing and #Missing suppression is turned on, then the retrieve fails and the message No data was generated: Suppress Missing = [TRUE]. Sheet not overwritten is displayed.
Column labels
Row labels
Data cells
B-9
Header la bels
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in The Year Tot dimension, represented by quarters, is displayed as columns of the spreadsheet. The Current Year and Prior Year members of the Scenario dimension are also displayed in the columns of the spreadsheet. The cells, the intersections of the rows and columns, combined with the header information represent the data values. For example, the first data value in cell B4, 910,669.50, represents net sales of Lightbolt hard drives to OEM customers in the first quarter of the current year.
B-10
Label Scanning
General rules Header rules Row and column rules
Header labels
Column labels
Row labels
Label Scanning
When you submit a data retrieval request, Essbase initiates a label-scanning process. The scanning looks for report labels on the spreadsheet to match with members in the outline. The header section of the worksheet is scanned first, then the column and row sections. When at least one label is matched for each dimension, Essbase knows where to place data in the spreadsheet, assuming that the labels adhere to the following rules. If your spreadsheet does not follow the rules, Essbase stops the requested retrieve action and displays a message that describes the error condition. General Rules The following summarizes general rules for placing labels on a worksheet: Labels on the worksheet must match outline members or their aliases. All standard dimensions must be represented in the header or row-column section for Essbase to resolve a data point. Essbase 11.1.1: Bootcamp B-11
Row la bels
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in You must precede all member names that consist of numbers with a single quote. For example, if the account number for sales is 14000, enter 14000 in the spreadsheet cell. Header Rules The following rules apply to the scanning process for the header section: Only one member from a dimension can be displayed. Header members define all data on the page for their dimensions.
If a dimension name is not found on the worksheet during the label scanning process, Essbase places the dimension name (generation 1) in the header section. Retrieving data into a blank sheet places the generation 1 members of all standard dimensions on the spreadsheet as headers, except the first dimension in the outline, which is displayed as a row. Header members can be displayed in any order. They can also be stacked in multiple rows. Stacking header members results in a new header placement when you drill across columns. When you drill down on a parent-level header member, the header member and its children are moved to rows. When you press the Alt key while drilling down on a parent-level header member, the header member and its children are moved to columns. Row and Column Rules The following rules apply when you place row and column labels: Row and column labels must be on separate rows below the header section. A report must include at least one row and one column dimension. Each column dimension must be on a row of its own prior to the rows containing row labels. All members of a given column dimension must be displayed on the same row. Each row dimension must be in a column of its own, separate from the columns containing column labels. All members from a given row dimension must be displayed in the same column. A row or column dimensions can be grouped by, or nested in, another row or column dimension. There is no limit to the number of nested dimensions, up to the total number of dimensions in the database. B-12 Essbase 11.1.1: Bootcamp
If a dimension is represented in the header section, members from the dimension cannot be displayed in a row or column.
B-13
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in The following are the basic data manipulation operations of Essbase Spreadsheet Addin, all of which (except Flashback) initiate the label-scanning process:
Operation Zoom In Zoom Out Keep Only Remove Only Pivot Flashback Description Drills down from a selected member into the dimension hierarchy as specified by the outline Collapses one level up from a selected member, as specified by the outline hierarchy For the selected dimensions, retains only the selected members
Changes the row-column orientation of a dimension or the order of grouping of dimensions in rows or columns Reverses the last operation (Flashback can undo only one step.)
B-14
Navigating Data
Select Essbase > Zoom In to drill down.
Select Essbase > Zoom Out to drill up. Select Essbase > Navigate Without Data to turn automatic data retrieval on or off.
Navigating Data
You can navigate data, based on the outline hierarchy. Essbase Spreadsheet Add-in provides three commands that support navigation operations. Zooming In You zoom in (drill down) to navigate to lower levels in a multidimensional database hierarchy to display detail. For example, if you want to view a data value for a specific quarter or month rather than an aggregate data value for the whole year, you can drill down on the Year Tot dimension. Because worksheets can accommodate more rows that columns, Essbase Spreadsheet Add-in always retrieves data into rows when you drill down on a header dimension member. You can change this default behavior and display the results across columns by pressing the Alt key while drilling down.
B-15
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in Zooming Out You zoom out (drill up) to navigate to higher levels in the multidimensional database by collapsing the current member tree. For example, if you previously drilled down on the Year Tot dimension to view data for quarters, you can drill up to view aggregate data for the whole year. Navigating Without Data You use the Navigate Without Data option to perform navigational operations without retrieving data. This feature is especially useful when dealing with dynamically calculated members, which Essbase must calculate every time you perform a retrieval or data manipulation operation. After your navigational operations are complete, you must remember to turn off the Navigate Without Data option in order to retrieve. To zoom in, zoom out, or navigate without data: The following table describes the procedures for these operations:
Operation Zoom in (drill down) on a selected member Procedure Options Select Essbase > Zoom In. Double-click the selected member (if mouse button actions are enabled). Click Zoom out (drill up) from a selected member .
Select Essbase > Zoom Out. Double right-click the selected member (if mouse button actions are enabled). Click .
Zoom in (drill down) on a header dimensionreposition on rows Zoom in (drill down) on a header dimensionreposition on columns Navigate without data
B-16
Keep Only
Remove Only
B-17
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in To keep only or remove only: The following table describes the procedures for these operations.
Operation Keep only Procedure Options Select Essbase > Keep Only. Click Remove only .
B-18
Pivoting Data
Row group Column group
Pivoting Data
You can change the orientation of worksheet data by performing the following tasks: Move a row group to a column group Move a column group to a row group Change the order of row groups Change the order of column groups You can use the Pivot command on the Essbase menu to accomplish the first two tasks. You can right-click the desired dimension and drag your selection to the destination cell to accomplish all four tasks.
TIP
B-19
Options specific to the user environment Style and color formatting options Advanced options Zoom in options Options specific to individual worksheets
B-20
Global Options
Global options control options specific to the user environment: Mouse Actions
Primary button Retrieve Drill down Secondary button Drill up Pivot
Global Options
Global options are specific to the user environment. Global option settings apply to all worksheets and workbooks. Mouse Actions These check boxes enable the primary (left button for right-handed users) and secondary (right button for right-handed users) mouse button functionality for drill-down and pivot actions. For example, you can enable or disable the primary mouse button to retrieve or drill down on data. You can also enable or disable the secondary mouse button to drill up on data or pivot data.
B-21
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in Enabling mouse actions for Essbase Spreadsheet Add-in disables some Excel functionality, such as shortcut menus. By selecting the Limit to Connected Sheets check box, you can tell Essbase Spreadsheet Add-in to react to mouse clicks only in worksheets that are connected to an Essbase application and database.
NOTE
Memory You can turn on or off the Flashback functionality that stores the current view before processing retrievals or pivoting. Disabling Flashback conserves memory. Mode You can turn on or off Navigate Without Data, which enables you to develop reports using zoom, pivot, and keep-only actions without retrieving data from the database.
B-22
Enable the Limit to Connected Sheets option If you are using Essbase Spreadsheet Add-in and Smart View concurrently. When Essbase Spreadsheet Add-in and Smart View are installed on the same computer and this check box is selected, mouse clicks are ignored by Essbase Spreadsheet Add-in if the sheet being acted upon is not connected to an Essbase data source through Essbase Spreadsheet Add-in.
Zoom Options
Next level
Bottom level
All levels
C opyrigh t 2 008, Oracle . All rig hts reserved.
Zoom Options
Zoom options are specific to individual worksheets. Each sheet can have its own zoom settings. Zoom settings are saved with the Excel workbook. Zoom In Zoom In options enable you to control zoom behavior. Zoom In has the following settings:
Option Next Level All Levels Description Navigates to the next level in the hierarchydefault setting. For example, you can navigate from a member to its children. Drills down on all descendants of the selected member. Be careful not to zoom to all levels on a dimension with thousands of members.
B-23
Sibling Level, Same Level, and Same Generation Formula Include Selection
Zoom Out Zoom In settings do not affect the Zoom Out command. In all cases, Zoom Out navigates to the parent of the selected member.
B-24
Style Options
Define one set of styles per database connection. Enable styles for specific worksheets on the Display tab.
Style Options
You can create a different style scheme for each database and choose to display the styles you created in specific worksheets. Your style schemes apply to all worksheets for which styles are enabled. Style schemes saved are as local user settings, and not with the workbook.
NOTE
Because styles are defined for a specific database connection, the Styles tab is not displayed if the worksheet is not connected to a database.
B-25
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in The following table describes the three style categories:
Category Member styles Description Set font characteristics (font, size, style, color, and so on) for parent, child, shared member, members with formulas, and members with a Dynamic Calc storage setting. Settings apply to members of all dimensions. Parent style settings apply to all non-level 0 members. Child style settings apply only to level 0 members. In the example on the slide, parent members of every dimension are displayed with a bold blue font. Dimension styles Set font characteristics and backgrounds for each dimension in your database. When both dimension and member styles apply, the member style takes precedence. In the example on the slide, Jan, Feb, and Mar are displayed with the white font defined for the Year Tot dimension, but Qtr 1 is displayed with the bold blue font defined for parents. Data cell styles Set font characteristics on data cells themselves (not member labels) for distinguishing linked reporting objects, integration server drill-through links, read-only data, and read-write data.
NOTE
For more information about linked reporting objects (LROs), read the Database Administrators Guide. For a comprehensive discussion of Integration Server drillthrough links, read the Essbase Spreadsheet Add-in Users Guide for Excel.
B-26
Display Options
Display Options
Display options are specific to individual worksheets. Each sheet can have its own settings. Indentation Three levels of indentation are provided: Totals, Subitems, and None. Replacement You use the replacement options to enter your own nomenclature for #Missing and #NoAccess labels. For example, you can set #Missing to be a dash (-) or a text value of zero.
B-27
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in Suppress You use the suppression options to suppress rows that contain missing data or zero values or to suppress underscore (_) characters in member names. Suppress #Missing and suppress zero functionality is defined by row. Entire rows with #Missing or zero values are deleted upon retrieval if, under Suppress, you select #Missing Rows and Zero Rows. Aliases You can display aliases rather than member names. There are two alias options, which you can use separately or together: Use Aliases: Use aliases according to the selected alias table. Members with no aliases default to the member name. Use Both Member Names and Aliases: Use both member names and aliases for row dimension labels. The result may be distracting in rows with multiple grouped dimensions. If a member has no alias, the member name is presented twice. This feature is not functional for columns. Duplicate Members You can display qualified names of duplicate member names. There are two duplicate member name options, which you can use separately or together: Show Qualified Member Names on Sheet: Essbase displays duplicate members with their qualified member names. Show Qualified Member Names as Comment: For duplicate members, Essbase creates Excel cell comments that display the qualified member names. Unlike standard Excel cell comments, these comments move from cell to cell, following the relevant members as you drill and pivot. Cells You can control the display of certain cell characteristics. There are three cell options: Adjust Columns: Essbase automatically adjusts column widths to the longest data value or member name every time you retrieve. Use Styles: If you defined styles on the Styles tab, you must enable this setting to display styles in your current worksheet. Repeat Member Labels: This option fills in the outer grouped member names in rows and columns when you use more than one dimension.
B-28
B-29
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in Essbase Spreadsheet Add-in provides the following formula preservation options on the Mode tab of the Essbase Options dialog box:
Option Retain on Retrieval Description This option preserves formulas on a simple retrieve operation, but Essbase deletes formulas without warning for any other retrieve operation, such as during a zoom operation. This option instructs Essbase to preserve formulas when Keep Only or Remove Only is used. This option instructs Essbase to preserve formulas during a zoom operation. This option fills in formulas for newly inserted members during a zoom operation.
Keep in mind the following guidelines and restrictions when using the formula preservation options: You must select Retain on Retrieval to enable Retain on Keep and Remove Only and Retain on Zooms. You must select Retain on Zooms to enable Formula Fill. Formula Fill is intended to work correctly only on row zoom operations. Column zoom operations with Formula Fill enabled may produce unexpected results. When you select Retain on Retrieval, the Suppress #Missing Rows and Zero Rows options on the Display tab are not selectable. If you select either of these display options, the formula preservation options are not selectable. You can not pivot in formula preservation mode. When Retain on Retrieval is selected, retrieval times may be slightly delayed.
B-30
B-31
B-32
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in 3. On the Cascade Information tab, select a cascade level for each selected member, and then click OK.
Cascade Level Next Level All Levels Bottom Level Sibling Level Same Level Same Generation Formulas Description Creates a report for the children of the selected member. This is the default cascade option. Creates a report for the descendants of the selected member. Creates a report for all level 0 descendants of the selected member. Creates a report for the siblings of the selected member.
Creates a report for all members at the generation of the selected member. Creates a report for all members that are included in the formula of the selected member.
B-33
Creates a report for all members at the level of the selected member.
B-34
B-35
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in To define selection rules: 1. From the Dimension drop-down list, select a dimension. The selected dimension and its members are displayed under Members. 2. Under View Method, select one of the following options for copying members to the spreadsheet: By Member Name: Enables you to select members and their descendants from the dimension hierarchy.
By Level Name: Enables you to select all members of a particular level in the dimension. By Dynamic Time Series: Enables you to select Dynamic Time Series members (only for the dimension tagged as Time). 3. Under Members, select members, and click Add. The selected members are displayed under Rules. 4. Optional: Select one or more rules, and click Move Item Up, Move Item Down, Remove Item, or Remove All to reorder or remove the selected members. 5. Under Output Options, select an option to define how to insert the selected members into the spreadsheet:
Selection Option Place Down the Sheet Suppress Shared Members Insert List Before Active Cell Use Aliases Description Inserts members down a column. If you clear the check box, Essbase Spreadsheet Add-in inserts members across a row. Suppresses shared members from the results. This option is available only when the view method is set to generation or level names. Inserts members before an active cell. If you clear the checkbox, Essbase Spreadsheet Add-in overwrites the active cell and any other cells in the selected range. Inserts member aliases from the current alias table. This option also changes the display of the dimension hierarchy to member aliases.
6. Optional: Click Save to save the selection rule in a file on an instance of Essbase Server or in your local file system. 7. Click OK.
B-36
By Generation Name: Enables you to select all members of a particular generation in the dimension.
All children
Mar
Qtr 2 Apr
4
B-37
3. Click Preview. The Member Preview dialog box is displayed. 4. Preview the members that are displayed in the spreadsheet, and then click Close.
B-38
B-39
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in 2. Define the selection conditions. The conditions are displayed under Conditions. 3. Optional: Click Add (, Add ), Remove ( ), or Remove All ( ) to group conditions or remove groupings. 4. Click Preview, review the list meeting the criteria, and then click Close. 5. Click OK. Additional rules are displayed under the member in the Essbase Member Selection dialog box.
B-40
B-41
3
5
B-43
B-44
Filtering Data
Rank data Compare data to a value Compare one column to another Filter out missing data
Filtering Data
Despite the ease and speed with which you can navigate through large databases, it is not practical to use the capabilities of the spreadsheet application to filter and sort very large databases. However, Query Designer provides a powerful tool to define conditional retrievals. The data filtering tool in Query Designer gives you the ability to rank data, compare data to a specific value, compare data in one column to data in another column, and filter out missing data.
B-45
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in Filtering Queries Example You create the following query for Bigcorp Sales, which returns a basic year over year report of Net Sales for individual customers in January for the Lightbolt product line.
You want to filter the query so it returns only the top 10 current year customers who also had sales of more than 50,000 in the prior year. When you apply the filters shown in the example on the slide, the query produces the following report:
B-46
Sorting Data
Sorting Data
You can use Query Designer to sort row data in ascending or descending order. When selected, data sorting settings are displayed in the properties frame. The data sorting panel contains the following items: Dimension being sorted: a drop-down list box that lists the dimensions specified in the rows of the query layout Column used for sort: a drop-down list box from which you select one or more of the dimensions that are specified in the columns of the query layout to use as a basis for sorting Ordering: a drop-down list box from which you select ascending or descending sort order for the selected column
B-47
B-48
Module 6 Appendices Appendix B Creating Reports with Essbase Spreadsheet Add-in Free-Form: This retrieval mode enables you to enter member names anywhere on your spreadsheet and allow Essbase to place the members in rows, columns, or header. Additionally, you can use report script commands to create dynamic reports.
NOTE
Free-form retrieval mode cannot be used with duplicate member name outlines.
Description All children of the specified member The specified member and all of its children All descendants of the specified member The specified member and all of its descendants All siblings of the specified member The specified member and all of its siblings
Report script commands are most useful for defining reports on dimensions that change frequently; they ensure that the most updated list of members is retrieved from the server. For information on the syntax of report script commands and on guidelines for developing reports, see the Technical Reference and the Database Administrators Guide. Preserving Dimension Positions Template Retrieve is a free-form retrieval mode option that ensures that Essbase does not spontaneously reposition dimensions during retrievals. Additionally, when Template Retrieve is enabled, the Zoom, Keep Only, Remove Only, and Pivot options are unavailable. This restriction ensures that end users cannot substantially change the report layout.
B-49
Using Report Script Commands When you retrieve data in free-form mode, Essbase can retrieve a list of members based on hierarchy relationships, instead of reading hard-coded labels. In the example on the slide, the report script command <ICHILDREN Retail returns Retail and a list of the current children of Retail. The following table describes the most common report script commands that you can use for retrievals:
Summary
In this lesson, you should have learned to: Describe Essbase Spreadsheet Add-in Install Essbase Spreadsheet Add-in Retrieve data into a Microsoft Excel worksheet Manage worksheet options Preserve Microsoft Excel formulas in a worksheet Replicate spreadsheet reports with the Cascade option Design spreadsheet reports by selecting members from the outline Create savable queries Create advanced queries Retrieve with report scripts
B-50