P. 1
esb_dbag

esb_dbag

|Views: 23|Likes:
Published by Abhishek Rastogi

More info:

Published by: Abhishek Rastogi on Nov 17, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

11/17/2010

pdf

text

original

HYPERION® ESSBASE® – SYSTEM 9

RELEASE 9.3.1

DATABASE ADMINISTRATOR’S GUIDE

Essbase Database Administrator’s Guide, 9.3.1 Copyright © 1996, 2007, Oracle and/or its affiliates. All rights reserved. Authors: The Essbase writing team The Programs (which include both the software and documentation) contain proprietary information; they are provided under a license agreement containing restrictions on use and disclosure and are also protected by copyright, patent, and other intellectual and industrial property laws. Reverse engineering, disassembly, or decompilation of the Programs, except to the extent required to obtain interoperability with other independently created software or as specified by law, is prohibited. The information contained in this document is subject to change without notice. If you find any problems in the documentation, please report them to us in writing. This document is not warranted to be error-free. Except as may be expressly permitted in your license agreement for these Programs, no part of these Programs may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose. If the Programs are delivered to the United States Government or anyone licensing or using the Programs on behalf of the United States Government, the following notice is applicable: U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the Programs, including documentation and technical data, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement, and, to the extent applicable, the additional rights set forth in FAR 52.227-19, Commercial Computer Software--Restricted Rights (June 1987). Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065. The Programs are not intended for use in any nuclear, aviation, mass transit, medical, or other inherently dangerous applications. It shall be the licensee's responsibility to take all appropriate fail-safe, backup, redundancy and other measures to ensure the safe use of such applications if the Programs are used for such purposes, and we disclaim liability for any damages caused by such use of the Programs. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. The Programs may provide links to Web sites and access to content, products, and services from third parties. Oracle is not responsible for the availability of, or any content provided on, third-party Web sites. You bear all risks associated with the use of such content. If you choose to purchase any products or services from a third party, the relationship is directly between you and the third party. Oracle is not responsible for: (a) the quality of third-party products or services; or (b) fulfilling any of the terms of the agreement with the third party, including delivery of products or services and warranty obligations related to purchased products or services. Oracle is not responsible for any loss or damage of any sort that you may incur from dealing with any third party.

Contents

Part I. Understanding Essbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Chapter 1. Introducing Essbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Key Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Integration with Existing Infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Data Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Ease of Server and Database Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Mission Critical Applications in Web-based Environments . . . . . . . . . . . . . . . . . . . . 38 Powerful Querying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Write-Back and Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Ease of Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Essbase Product Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Essbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Administration Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Essbase Spreadsheet Add-in for Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Integration Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Provider Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Smart View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Application Programming Interface (API) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Developer Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Data Mining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Smart Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Chapter 2. Quick Start for Implementing Essbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Chapter 3. Understanding Multidimensional Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 OLAP and Multidimensional Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Dimensions and Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Outline Hierarchies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Dimension and Member Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Standard Dimensions and Attribute Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Contents

iii

Sparse and Dense Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Selection of Dense and Sparse Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Data Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Data Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Data Blocks and the Index System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Multiple Data Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 The Essbase Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Chapter 4. Case Study: Designing a Single-Server, Multidimensional Database . . . . . . . . . . . . . . . . . . . . . . . 67 Process for Designing a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Case Study: The Beverage Company . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Analyzing and Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Analyzing Source Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Identifying User Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Planning for Security in a Multiple User Environment . . . . . . . . . . . . . . . . . . . . . . . . 71 Creating Database Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Drafting Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Dimension and Member Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Dimension Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Member Storage Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Checklist for Dimension and Member Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Designing an Outline to Optimize Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Checking System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Loading Test Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Defining Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Consolidation of Dimensions and Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Tags and Operators on Example Measures Dimension . . . . . . . . . . . . . . . . . . . . . . . 88 Accounts Dimension Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Formulas and Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Dynamic Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Two-Pass Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Checklist for Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Defining Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Verifying the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Chapter 5. About Administration Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Administration Services Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Deploying Administration Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Starting Administration Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 About Administration Services Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

iv

Contents

Connecting to Administration Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Adding Essbase Administration Servers to Enterprise View . . . . . . . . . . . . . . . . . . . . . . 100 Adding Essbase Servers to Enterprise View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 About Essbase Server Connections and Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 About Essbase Administration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Part II. Designing and Creating Applications and Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Chapter 6. Creating Applications and Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Process for Creating Applications and Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Understanding Applications and Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Understanding Database Artifacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Understanding Database Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Understanding Data Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Understanding Rules Files for Data Load and Dimension Build . . . . . . . . . . . . . . . . 107 Understanding Calculation Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Understanding Report Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Understanding Security Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Understanding LROs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Understanding Spreadsheet Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Understanding Member Select Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Understanding Triggers Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Creating Applications and Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Creating an Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Creating a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Annotating a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Using Substitution Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Rules for Setting Substitution Variable Names and Values . . . . . . . . . . . . . . . . . . . . 111 Setting Substitution Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Deleting Substitution Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Updating Substitution Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Copying Substitution Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Using Location Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Creating Location Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Editing or Deleting Location Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Chapter 7. Creating and Changing Database Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Process for Creating Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Creating and Editing Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Locking and Unlocking Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

Contents

v

Adding Dimensions and Members to an Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Setting Data Storage Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Positioning Dimensions and Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Moving Dimensions and Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Sorting Dimensions and Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Verifying Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Saving Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Saving an Outline with Added Standard Dimensions . . . . . . . . . . . . . . . . . . . . . . . . 123 Saving an Outline with One or More Deleted Standard Dimensions . . . . . . . . . . . . . 123 Creating Sub-Databases Using Deleted Members . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Chapter 8. Creating and Working With Duplicate Member Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Creating Duplicate Member Names in Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Restrictions for Duplicate Member Names and Aliases in Outlines . . . . . . . . . . . . . . . . . 127 Syntax for Specifying Duplicate Member Names and Aliases . . . . . . . . . . . . . . . . . . . . . 127 Using Fully Qualified Member Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Qualifying Members by Differentiating Ancestor . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Using Shortcut Qualified Member Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Working With Duplicate Member Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Chapter 9. Setting Dimension and Member Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Setting Dimension Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Creating a Time Dimension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Creating an Accounts Dimension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Creating a Country Dimension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Creating Currency Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Creating Attribute Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Setting Member Consolidation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Calculating Members with Different Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Determining How Members Store Data Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Understanding Stored Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Understanding Dynamic Calculation Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Understanding Label Only Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Understanding Shared Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Setting Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Alias Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Creating Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Creating and Managing Alias Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Setting Two-Pass Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Creating Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

vi

Contents

Naming Generations and Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Creating UDAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Adding Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Chapter 10. Working with Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Process for Creating Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Understanding Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Understanding Attribute Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Understanding Members of Attribute Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . 154 Understanding the Rules for Base and Attribute Dimensions and Members . . . . . . . 154 Understanding the Rules for Attribute Dimension Association . . . . . . . . . . . . . . . . . 155 Understanding the Rules for Attribute Member Association . . . . . . . . . . . . . . . . . . 155 Understanding Attribute Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Comparing Attribute and Standard Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Comparing Attributes and UDAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Designing Attribute Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Using Attribute Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Using Alternative Design Approaches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Optimizing Outline Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Building Attribute Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Setting Member Names in Attribute Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Setting Prefix and Suffix Formats for Member Names of Attribute Dimensions . . . . . 163 Setting Boolean Attribute Member Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Changing the Member Names in Date Attribute Dimensions . . . . . . . . . . . . . . . . . . 164 Setting Up Member Names Representing Ranges of Values . . . . . . . . . . . . . . . . . . . 165 Changing the Member Names of the Attribute Calculations Dimension . . . . . . . . . . 166 Calculating Attribute Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Understanding the Attribute Calculations Dimension . . . . . . . . . . . . . . . . . . . . . . . 167 Understanding the Default Attribute Calculations Members . . . . . . . . . . . . . . . . . . 168 Viewing an Attribute Calculation Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Accessing Attribute Calculations Members Using the Spreadsheet . . . . . . . . . . . . . . 169 Optimizing Calculation and Retrieval Performance . . . . . . . . . . . . . . . . . . . . . . . . . 169 Using Attributes in Calculation Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Understanding Attribute Calculation and Shared Members . . . . . . . . . . . . . . . . . . . 171 Chapter 11. Linking Objects to Essbase Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Understanding LROs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Understanding LRO Types and Data Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Setting Up Permissions for LROs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Viewing and Deleting LROs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

Contents

vii

Exporting and Importing LROs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Limiting LRO File Sizes for Storage Conservation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Chapter 12. Designing and Building Currency Conversion Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 About the Sample Currency Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Structure of Currency Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Main Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Currency Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Conversion Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Building Currency Conversion Applications and Performing Conversions . . . . . . . . . . . 185 Creating Main Database Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Preparing Main Database Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Generating Currency Database Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Linking Main and Currency Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Converting Currency Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Tracking Currency Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Troubleshooting Currency Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Chapter 13. Designing Partitioned Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Process for Designing a Partitioned Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Understanding Essbase Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 What Is a Partition? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Data Sources and Data Targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Overlapping Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Substitution Variables in Partition Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Attributes in Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Version and Encoding Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Deciding Whether to Partition a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 When to Partition a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 When Not to Partition a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Determining Which Data to Partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Deciding Which Type of Partition to Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Replicated Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Transparent Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Linked Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Choosing a Partition Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Planning for Security for Partitioned Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Process for Setting up End User Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Process for Setting up Administrator Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Case Studies for Designing Partitioned Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

viii

Contents

Case Study 1: Partitioning an Existing Database . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Case Study 2: Connecting Existing Related Databases . . . . . . . . . . . . . . . . . . . . . . . 216 Case Study 3: Linking Two Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Chapter 14. Creating and Maintaining Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Process for Creating Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Choosing a Partition Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 Setting up the Data Source and the Data Target . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 Setting the User Name and Password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Defining a Partition Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Mapping Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Validating Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Saving Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Process for Maintaining Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Testing Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Synchronizing Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Populating or Updating Replicated Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Editing and Deleting Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Viewing Partition Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Troubleshooting Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Part III. Building Dimensions and Loading Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Chapter 15. Understanding Data Loading and Dimension Building . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Process for Data Loading and Dimension Building . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Data Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 Supported Data Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 Items in a Data Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Rules Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Situations That Do and Do Not Need a Rules File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Data Sources That Do Not Need a Rules File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Formatting Ranges of Member Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Formatting Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 Security and Multiple-User Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 Chapter 16. Creating Rules Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Understanding the Process for Creating Data Load Rules Files . . . . . . . . . . . . . . . . . . . . 255 Understanding the Process for Creating Dimension Build Rules Files . . . . . . . . . . . . . . . 256 Combining Data Load and Dimension Build Rules Files . . . . . . . . . . . . . . . . . . . . . . . . 257 Creating Rules Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

Contents

ix

Setting File Delimiters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 Naming New Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 Selecting a Build Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 Setting and Changing Member and Dimension Properties . . . . . . . . . . . . . . . . . . . . . . . 259 Using Data Prep Editor to Set Dimension and Member Properties . . . . . . . . . . . . . . 259 Using the Data Source to Work With Member Properties . . . . . . . . . . . . . . . . . . . . 259 Setting Field Type Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 List of Field Types and Valid Build Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 Rules for Assigning Field Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Setting Dimension Build Operational Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Defining Data Load Field Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Performing Operations on Records, Fields, and Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Validating, Saving, and Printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Requirements for Valid Data Load Rules Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Requirements for Valid Dimension Build Rules Files . . . . . . . . . . . . . . . . . . . . . . . . 266 Copying Rules Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 Printing Rules Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 Chapter 17. Using a Rules File to Perform Operations on Records, Fields, and Data . . . . . . . . . . . . . . . . . . . 269 Performing Operations on Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Selecting Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Rejecting Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 Combining Multiple Select and Reject Criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 Setting the Records Displayed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 Defining Header Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Performing Operations on Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Ignoring Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Ignoring Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Arranging Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Mapping Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Changing Field Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Performing Operations on Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Defining a Column as a Data Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Adding to and Subtracting from Existing Values . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Clearing Existing Data Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 Replacing All Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 Scaling Data Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 Flipping Field Signs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

x

Contents

Chapter 18. Performing and Debugging Data Loads or Dimension Builds . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Prerequisites for Data Loads and Dimension Builds . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Performing Data Loads or Dimension Builds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Stopping Data Loads or Dimension Builds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 Tips for Loading Data and Building Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Performing Deferred-Restructure Dimension Builds . . . . . . . . . . . . . . . . . . . . . . . . 283 Determining Where to Load Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Dealing with Missing Fields in a Data Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Loading a Subset of Records from a Data Source . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Saving and Reusing Data Load Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Debugging Data Loads and Dimension Builds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Verifying That Essbase Server Is Available . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Verifying That the Data Source Is Available . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Checking Error Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Recovering from an Essbase Server Crash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 Resolving Problems with Data Loaded Incorrectly . . . . . . . . . . . . . . . . . . . . . . . . . . 289 Creating Rejection Criteria for End of File Markers . . . . . . . . . . . . . . . . . . . . . . . . . 290 Understanding How Essbase Processes a Rules File . . . . . . . . . . . . . . . . . . . . . . . . . 290 Understanding How Essbase Processes Missing or Invalid Fields During a Data Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 Chapter 19. Understanding Advanced Dimension Building Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Understanding Build Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Using Generation References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 Using Level References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Using Parent-Child References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Adding a List of New Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Adding Members Based On String Matches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Adding Members as Siblings of the Lowest Level . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Adding Members to a Specified Parent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Building Attribute Dimensions and Associating Attributes . . . . . . . . . . . . . . . . . . . . . . . 306 Building Attribute Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 Associating Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 Updating Attribute Associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 Removing Attribute Associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 Working with Multilevel Attribute Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 Working with Numeric Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 Reviewing the Rules for Building Attribute and Base Dimensions . . . . . . . . . . . . . . . 315 Building Shared Members by Using a Rules File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 Sharing Members at the Same Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Contents

xi

Sharing Members at Different Generations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 Sharing Non-Level 0 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 Building Multiple Roll-Ups by Using Level References . . . . . . . . . . . . . . . . . . . . . . . 324 Creating Shared Roll-Ups from Multiple Data Sources . . . . . . . . . . . . . . . . . . . . . . 325 Building Duplicate Member Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 Uniquely Identifying Members Through the Rules File . . . . . . . . . . . . . . . . . . . . . . 326 Building Qualified Member Names Through the Rules file . . . . . . . . . . . . . . . . . . . 327 Part IV. Calculating Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Chapter 20. Calculating Essbase Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 About Database Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Outline Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Calculation Script Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 About Multidimensional Calculation Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Setting the Default Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 Calculating Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 Canceling Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Parallel and Serial Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Security Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Chapter 21. Developing Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 Understanding Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 Dimension and Member Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 Constant Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 Non-Constant Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 Understanding Formula Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 Understanding Formula Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 Reviewing the Process for Creating Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 Displaying Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 Composing Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Basic Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Conditional Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Examples of Conditional Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 Value-Related Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 Member-Related Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 Formulas That Use Various Types of Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 Mathematical Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

xii

Contents

Statistical Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 Range Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 Financial Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 Date and Time Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Calculation Mode Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Checking Formula Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Estimating Disk Size for a Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Using Formulas in Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Chapter 22. Reviewing Examples of Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 Calculating Period-to-Date Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 Calculating Rolling Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Calculating Monthly Asset Movements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Testing for #MISSING Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 Calculating an Attribute Formula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 Chapter 23. Defining Calculation Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Data Storage in Data Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Member Calculation Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 Understanding the Effects of Member Relationships . . . . . . . . . . . . . . . . . . . . . . . . 374 Determining Member Consolidation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 Ordering Dimensions in the Database Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Avoiding Forward Calculation References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 Block Calculation Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 Data Block Renumbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 Cell Calculation Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 Cell Calculation Order: Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Cell Calculation Order: Example 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 Cell Calculation Order: Example 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 Cell Calculation Order: Example 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Cell Calculation Order for Formulas on a Dense Dimension . . . . . . . . . . . . . . . . . . 385 Calculation Passes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 Calculation of Shared Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 Chapter 24. Understanding Intelligent Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 Introducing Intelligent Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 Benefits of Intelligent Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 Intelligent Calculation and Data Block Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 Limitations of Intelligent Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

Contents

xiii

Using Intelligent Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 Turning Intelligent Calculation On and Off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 Using Intelligent Calculation for a Default, Full Calculation . . . . . . . . . . . . . . . . . . . 392 Using Intelligent Calculation for a Calculation Script, Partial Calculation . . . . . . . . . 393 Using the SET CLEARUPDATESTATUS Command . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 Understanding SET CLEARUPDATESTATUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 Choosing a SET CLEARUPDATESTATUS Setting . . . . . . . . . . . . . . . . . . . . . . . . . 394 Reviewing Examples That Use SET CLEARUPDATESTATUS . . . . . . . . . . . . . . . . . 395 Calculating Data Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 Calculating Dense Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 Calculating Sparse Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 Handling Concurrent Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 Understanding Multiple-Pass Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 Reviewing Examples and Solutions for Multiple-Pass Calculations . . . . . . . . . . . . . . 398 Understanding the Effects of Intelligent Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 Changing Formulas and Accounts Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 Using Relationship and Financial Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Restructuring Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Copying and Clearing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Converting Currencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Chapter 25. Dynamically Calculating Data Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 Understanding Dynamic Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 Understanding Dynamic Calc Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Understanding Dynamic Calc and Store Members . . . . . . . . . . . . . . . . . . . . . . . . . 406 Retrieving the Parent Value of Dynamically Calculated Child Values . . . . . . . . . . . . 407 Benefitting from Dynamic Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 Using Dynamic Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 Choosing Values to Calculate Dynamically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Dense Members and Dynamic Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Sparse Members and Dynamic Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Two-Pass Members and Dynamic Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Parent-Child Relationships and Dynamic Calculation . . . . . . . . . . . . . . . . . . . . . . . 410 Calculation Scripts and Dynamic Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Formulas and Dynamically Calculated Members . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Scripts and Dynamically Calculated Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 Dynamically Calculated Children . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 Choosing Between Dynamic Calc and Dynamic Calc and Store . . . . . . . . . . . . . . . . . . . 412 Recommendations for Sparse Dimension Members . . . . . . . . . . . . . . . . . . . . . . . . . 412

xiv

Contents

Recommendations for Members with Specific Characteristics . . . . . . . . . . . . . . . . . 413 Recommendations for Dense Dimension Members . . . . . . . . . . . . . . . . . . . . . . . . . 413 Recommendations for Data with Many Concurrent Users . . . . . . . . . . . . . . . . . . . . 413 Understanding How Dynamic Calculation Changes Calculation Order . . . . . . . . . . . . . . 414 Calculation Order for Dynamic Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 Calculation Order for Dynamically Calculating Two-Pass Members . . . . . . . . . . . . . 415 Calculation Order for Asymmetric Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 Reducing the Impact on Retrieval Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 Displaying a Retrieval Factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 Displaying a Summary of Dynamically Calculated Members . . . . . . . . . . . . . . . . . . 418 Increasing Retrieval Buffer Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 Using Dynamic Calculator Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 Reviewing Dynamic Calculator Cache Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 Using Dynamic Calculations with Standard Procedures . . . . . . . . . . . . . . . . . . . . . . . . . 420 Creating Dynamic Calc and Dynamic Calc and Store Members . . . . . . . . . . . . . . . . . . . 421 Restructuring Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 Dynamically Calculating Data in Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 Chapter 26. Calculating Time Series Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 Calculating First, Last, and Average Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 Specifying Accounts and Time Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Reporting the Last Value for Each Time Period . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Reporting the First Value for Each Time Period . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 Reporting the Average Value for Each Time Period . . . . . . . . . . . . . . . . . . . . . . . . . 428 Skipping #MISSING and Zero Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 Considering the Effects of First, Last, and Average Tags . . . . . . . . . . . . . . . . . . . . . . 428 Placing Formulas on Time and Accounts Dimensions . . . . . . . . . . . . . . . . . . . . . . . 429 Calculating Period-to-Date Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Using Dynamic Time Series Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Specifying Alias Names for Dynamic Time Series Members . . . . . . . . . . . . . . . . . . . 431 Applying Predefined Generation Names to Dynamic Time Series Members . . . . . . . 432 Retrieving Period-to-Date Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 Using Dynamic Time Series Members in Transparent Partitions . . . . . . . . . . . . . . . . . . 433 Chapter 27. Developing Calculation Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 Understanding Calculation Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 Understanding Calculation Script Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 Understanding the Rules for Calculation Script Syntax . . . . . . . . . . . . . . . . . . . . . . 437 Understanding Calculation Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Controlling the Flow of Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

Contents

xv

Declaring Data Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 Specifying Global Settings for a Database Calculation . . . . . . . . . . . . . . . . . . . . . . . 440 Adding Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Planning Calculation Script Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Using Formulas in a Calculation Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Using a Calculation Script to Control Intelligent Calculation . . . . . . . . . . . . . . . . . . 444 Grouping Formulas and Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 Calculating a Series of Member Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 Calculating a Series of Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 Using Substitution Variables in Calculation Scripts . . . . . . . . . . . . . . . . . . . . . . . . . 446 Clearing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 Copying Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 Calculating a Subset of a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 Using DATAEXPORT to Export Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 Enabling Calculations on Potential Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Writing Calculation Scripts for Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 Controlling Calculation Order for Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 Reviewing the Process for Creating Calculation Scripts . . . . . . . . . . . . . . . . . . . . . . . . . 455 Checking Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 Saving Calculation Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 Executing Calculation Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 Checking the Results of Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 Copying Calculation Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 Chapter 28. Reviewing Examples of Calculation Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 Calculating Variance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 Calculating Database Subsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 Loading New Budget Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 Calculating Product Share and Market Share Values . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 Allocating Costs Across Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 Allocating Values Within or Across Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 Allocating Within a Dimension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 Allocating Across Multiple Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 Goal Seeking Using the LOOP Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 Forecasting Future Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 Chapter 29. Developing Custom-Defined Calculation Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 Understanding Custom-Defined Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 Viewing Custom-Defined Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 Creating Custom-Defined Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476

xvi

Contents

Understanding Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 Naming Custom-Defined Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 Creating Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 Refreshing the Catalog of Custom-Defined Macros . . . . . . . . . . . . . . . . . . . . . . . . . 478 Using Custom-Defined Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 Updating Custom-Defined Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 Copying Custom-Defined Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Removing Custom-Defined Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Chapter 30. Developing Custom-Defined Calculation Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 Viewing Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 Creating Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 Understanding Java Requirements for Custom-Defined Functions . . . . . . . . . . . . . . 482 Understanding Method Requirements for Custom-Defined Functions . . . . . . . . . . . 483 Understanding Security and Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . 484 Understanding Scope and Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . 484 Naming Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 Creating and Compiling the Java Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 Installing Java Classes on Essbase Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 Registering Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 Using Registered Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 Updating Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 Updating Local Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 Updating Global Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 Removing Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Removing Local Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Removing Global Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 Copying Custom-Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 Considering How Custom-Defined Functions Affect Performance and Memory . . . . . . . 492 Performance Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 Memory Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 Part V. Retrieving Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 Chapter 31. Understanding Report Script Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 Working With a Simple Report Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 Understanding How Report Writer Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 Report Extractor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 Parts of a Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 Parts of a Report Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500

Contents

xvii

Planning Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 Considering Security and Multiple-User Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 Reviewing the Process for Creating Report Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 Creating Report Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Saving Report Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Executing Report Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 Copying Report Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 Developing Free-Form Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 Chapter 32. Developing Report Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 Understanding Extraction and Formatting Commands . . . . . . . . . . . . . . . . . . . . . . . . . 507 Understanding Report Script Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Designing the Page Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Creating Page, Column, and Row Headings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Modifying Headings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Creating Symmetric and Asymmetric Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512 Formatting Report Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Formatting Page, Column, and Row Headings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Adding Totals and Subtotals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 Changing How Data Is Displayed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 Selecting and Sorting Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Selecting Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Selecting Members by Using Generation and Level Names . . . . . . . . . . . . . . . . . . . . 525 Selecting Duplicate Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 Selecting Dynamic Time Series Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 Selecting Members by Using Boolean Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 Selecting Members by Using Substitution Variables . . . . . . . . . . . . . . . . . . . . . . . . . 529 Selecting Members by Using Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 Selecting Members by Using UDAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 Selecting Members by Using Wildcards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 Suppressing Shared Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 Selecting How Member Names are Displayed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 Sorting Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 Restricting and Ordering Data Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 Understanding the Order of Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 Using TOP, BOTTOM, and ORDERBY with Sorting Commands . . . . . . . . . . . . . . . 536 Using RESTRICT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 Using ORDERBY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537

xviii Contents

Using ORDERBY with Formatting Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 Using TOP and BOTTOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 Converting Data to a Different Currency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 Generating Reports Using the C, Visual Basic, and Grid APIs . . . . . . . . . . . . . . . . . . . . . 540 Chapter 33. Writing MDX Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 Understanding Elements of a Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 Introduction to Sets and Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 Rules for Specifying Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 Introduction to Axis Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 Cube Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 Using Functions to Build Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 Working with Levels and Generations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 Using a Slicer Axis to Set Query Point-of-View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 Common Relationship Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552 Performing Set Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 Creating and Using Named Sets and Calculated Members . . . . . . . . . . . . . . . . . . . . . . . 555 Calculated Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 Named Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 Using Iterative Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 Working With Missing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 Using Substitution Variables in MDX Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 Querying for Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 Querying for Member Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 The Value Type of Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 NULL Property Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562 Chapter 34. Copying Data Subsets and Exporting Data to Other Programs . . . . . . . . . . . . . . . . . . . . . . . . . . 565 Process for Creating a Database Subset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 Create an Application and Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 Copy the Outline File from the Source Database . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 Create an Output File Containing the Required Data Subset . . . . . . . . . . . . . . . . . . 567 Load the Output File Into the New Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 Exporting Data to be Input to Other Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 Exporting Text Data Using Report Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 Exporting Text Data Using Calculation Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 Chapter 35. Mining an Essbase Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 Understanding Data Mining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 Essbase Data Mining Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574

Contents

xix

Essbase Data Mining Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 Creating Data Mining Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 Applying the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 Viewing Data Mining Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 Scoring the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 Accessing Data Mining Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 Built-in Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 Creating Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 Built-In Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 Creating Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 Importing and Exporting Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 Chapter 36. Retrieving Relational Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 Understanding Hybrid Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 Hybrid Analysis Relational Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 Data Retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 Hybrid Analysis Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 Defining Hybrid Analysis Relational Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 Retrieving Hybrid Analysis Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 Using Outline Editor with Hybrid Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 Managing Data Consistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 Managing Security in Hybrid Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 Using Advanced Relational Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 Advanced Relational Access Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 Essbase Databases and Advanced Relational Access . . . . . . . . . . . . . . . . . . . . . . . . . 598 Different Values Loaded in Ragged Hierarchies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 Working With SAP R/3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 Part VI. Designing and Managing a Security System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 Chapter 37. User Management and Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 About Using Shared Services With Essbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 Essbase User Roles For Shared Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604 Essbase Projects, Applications, and Databases in Shared Services . . . . . . . . . . . . . . . . . . 606 Essbase Users and Groups in Shared Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607 Assigning Access to Users in Shared Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608 Launching and Logging In to User Management Console . . . . . . . . . . . . . . . . . . . . 608 Assigning Server Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609

xx

Contents

Assigning Application Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 Assigning Database Calculation and Filter Access . . . . . . . . . . . . . . . . . . . . . . . . . . 610 Assigning Application Access Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611 Synchronizing Security Information Between Shared Services and Essbase . . . . . . . . . . . 612 User Synchronization Using CSSSYNCLEVEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612 User Refresh Using CSSREFRESHLEVEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 Role Requirements For Refreshing Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 Scheduling Security Refreshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 Migrating Essbase to Shared Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 Application and Database Migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 User and Group Migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 Continuing to Use Essbase in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 Understanding Native Security Mode in Essbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 Creating Users and Groups in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 Creating Users in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 Creating Groups in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 Granting Permissions to Users and Groups in Native Security Mode . . . . . . . . . . . . . . . 622 Assigning User and Group Types in Native Security Mode . . . . . . . . . . . . . . . . . . . 623 Granting Application and Database Access to Users and Groups in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624 Granting Designer Permissions to Users and Groups in Native Security Mode . . . . . 625 Managing Users and Groups in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . 625 Viewing Users and Groups in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . 626 Editing Users in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 Editing Groups in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 Copying an Existing Security Profile in Native Security Mode . . . . . . . . . . . . . . . . . 626 Deleting Users and Groups in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . 627 Renaming Users and Groups in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . 627 Using the Hyperion Security Platform for External Authentication in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 Managing Global Security for Applications and Databases in Native Security Mode . . . . . 629 Defining Application Settings in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . 629 Setting General Application Connection Options in Native Security Mode . . . . . . . . 629 Setting Application and Database Minimum Permissions in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 Managing User Activity on the Essbase Server in Native Security Mode . . . . . . . . . . . . . 634 Disconnecting Users and Terminating Requests in Native Security Mode . . . . . . . . . 634 Managing User Locks in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 Managing Passwords and User Names in Native Security Mode . . . . . . . . . . . . . . . . 635 Propagating Password Changes in Native Security Mode . . . . . . . . . . . . . . . . . . . . . 635

Contents

xxi

Viewing and Activating Disabled User Names in Native Security Mode . . . . . . . . . . 636 Understanding the essbase.sec Security File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 Security File Backups in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 Security File Backups in Shared Services Security Mode . . . . . . . . . . . . . . . . . . . . . . 637 Security Information Recovery in Shared Services Security Mode . . . . . . . . . . . . . . . 638 Backing Up the Security File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 Changing Security Backup File Comparison Frequency . . . . . . . . . . . . . . . . . . . . . . 639 Managing Security-File Fragmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 Exporting the Security File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 Chapter 38. Controlling Access to Database Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 Understanding How Filters Define Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 Creating Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 Filtering Members Versus Filtering Member Combinations . . . . . . . . . . . . . . . . . . . 645 Filtering Using Substitution Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 Filtering with Attribute Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 Managing Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 Viewing Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 Editing Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 Copying Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 Renaming Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 Deleting Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 Assigning Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 Assigning Filters in Shared Services Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . 650 Assigning Filters in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 Overlapping Filter Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 Overlapping Access Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 Chapter 39. Security Examples in Native Security Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Security Problem 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Security Problem 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 Security Problem 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 Security Problem 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 Security Problem 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 Part VII. Enabling Multi-Language Applications Through Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 Chapter 40. Understanding the Essbase Unicode Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 About Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 About the Essbase Implementation of Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659

xxii

Contents

Locales and Essbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 Unicode and Non-Unicode Application Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 Unicode and Non-Unicode Essbase Server Modes . . . . . . . . . . . . . . . . . . . . . . . . . . 661 Increased Name Lengths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 Compatibility Between Different Versions of Client Programs and Essbase Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 Unicode-Enabled C API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 Support of Different Locales on Clients and Essbase Server . . . . . . . . . . . . . . . . . . . 663 Identification of Text Encoding and Locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 Unicode-Enabled Administration Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 Report Script Retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 Spreadsheet Retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 SQL Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 Sample_U Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 When to Use Unicode-Mode Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 Chapter 41. Administering Unicode-Mode Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 Setting Up a Computer for Unicode Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 Defining Password Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 Naming Applications and Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 Managing Unicode-Mode Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 Setting Essbase Server to Unicode Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 Viewing the Unicode-Related Mode of Essbase Server . . . . . . . . . . . . . . . . . . . . . . . 669 Creating Unicode-Mode Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 Migrating Applications to Unicode Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 Viewing the Unicode-Related Mode of an Application . . . . . . . . . . . . . . . . . . . . . . . 670 Using Control Characters in Report Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 Working with Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 Working With Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 Managing File Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 How the Encoding of a File Is Determined . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672 Encoding Indicators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 Locale Header Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 Essbase Unicode File Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 Part VIII. Maintaining Essbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679 Chapter 42. Running Essbase Servers, Applications, and Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 Understanding Essbase Executable Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 Understanding the Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682

Contents xxiii

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 Changing Port Default Values . . . 694 Starting an Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696 Stopping an Application Improperly . . . . . . . . . . . . . . . . . . . 704 Application and Database File Types . . . . . . . . . . . . . . . . . . . . . . and Database Artifacts . . . . . . . . . .Multithreading . 693 Starting Essbase Server from Administration Services Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707 Managing Applications. . . . . 700 Viewing Port Statistics . . . 708 Monitoring Applications . . 704 Server Software File Types . . . . . . . 694 Starting and Stopping Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695 Stopping an Application . . . . . . . . . . . . . 703 Understanding Applications and Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705 API File Types . . . . . . . . . . . . . . . . . . . 688 Starting and Stopping Remote Start Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 Configuring Remote Start Server . . . . . . . . Managing Applications and Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 Specifying Non-Default Port Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696 Starting and Stopping Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 Changing the Essbase Server System Password . . . . . . . . . . . . . . 701 Limiting the Number of User Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 Managing Essbase Administration Server Communication Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 Increasing Agent Connections to Essbase Server . 697 Starting a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686 Stopping Essbase Server . . 682 List of Agent Commands and Equivalents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 Viewing a List of Users and Available Ports . . . 701 Chapter 43. . . . . . 683 Starting and Stopping Essbase Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 Controlling Query Size and Duration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 Stopping a Database . . . . . . . . . . . . . . . . . . . . . Databases. . . . . . . . . 684 Starting Essbase Server in the Foreground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 Starting Essbase Server Remotely from Administration Services Console . . . . . . . . . . . . . . . . 703 Understanding How Essbase Files Are Stored . . . . . . . . . . . . . . . . . . . . . . . 698 Managing Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 xxiv Contents . . . . . . . . . . . . . . . . . 708 Using Essbase to Manage Applications and Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707 Using the File System to Manage Applications and Databases During Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 Running Remote Start Server as a Windows Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 Starting Essbase Server as a Background Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . 755 Understanding Kernel Components . . . . . . . . . . . . . . . . . . . 722 Using Essbase Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754 Setting the I/O Access Mode . . . . . . . . . . . . . . . . . . . . . . . 722 Trigger Examples . . . . . . . . . . . 758 Understanding the Precedence of Database Settings . . . . . . . . . . . . . . . . . . . . . . Applications. . . . . . Managing Database Settings . . 753 Understanding Buffered I/O and Direct I/O . . . . . . . . . . . . . . 743 Understanding and Using Dimension Build and Data Load Error Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 Identifying Compatible Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754 Viewing the I/O Access Mode . . . . . 723 Essbase Server and Application Logs . . . . . . . . . . . 718 Chapter 44. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715 Transferring Compatible Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749 Chapter 45. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 Index Manager . . . . . . . . . . . . . . . . 719 Effect of Triggers on Performance and Memory Usage . . . 758 Contents xxv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Using Essbase to Manage Artifacts . . . . . . . . . . . . . . . . 728 Essbase Server and Application Log Message Categories . . . . . . . . . 725 Essbase Server Log Example . . . . . . . . . . . . 755 Allocation Manager . . . . . . . 724 Contents of the Essbase Server Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757 Transaction Manager . . . . . . . . . . . . . . . . . . . 719 Monitoring Data Changes Using Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732 Using Essbase Server and Application Logs . . . . . . . . . . . . . 739 Understanding and Using the Outline Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 Understanding and Using Exception Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Monitoring Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 Migrating Applications Using Administration Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 Administering Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727 Example of an Application Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 Implementing Query Logs . . . . . . . . . . . 715 Checking File Names . . . . . . . . . . . . . . . . . . . . . 756 Data Block Manager . . . . . . . . . . . . . . . . . . 753 Understanding the Essbase Server Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757 LRO Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717 Reloading the Database . . . . . . . . . . . 726 Contents of the Application Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 Porting Applications Across Platforms . . . . . . . . 757 Lock Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758 Understanding the Kernel Startup . . . . . . . . . . . . . . and Databases . . . . . . . . . . . . . . . .

. . . . . . . . . . 772 Changing Data Compression Settings . . . . . . 772 Deciding Which Type of Compression to Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 Viewing Most Recently Entered Settings . . . . . . . . . . . . . . 785 Free Space Recovery . . . . . . . . . . . . . . . . 760 Specifying and Changing Database Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776 Committed Access . . 774 Chapter 47. . . . . . . . . . 769 RLE Data Compression . . . . . . . . . . . . . . 781 Specifying Data Integrity Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761 Chapter 46. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784 Checking Structural and Data Integrity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782 Example of Specifying Isolation Level Settings with ESSCMD . . . . . . . . . . . . . . . . . .Understanding How Essbase Reads Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786 What to Expect If a Server Interruption Occurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Allocating Storage and Compressing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764 Specifying Disk Volumes . . . . 768 Data Compression . . . . . . . . . . . . . . . 760 Using alter database in MaxL . . . . . . . . . . . 781 Understanding How Essbase Handles Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775 Data Locks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774 Data Block Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775 Understanding Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763 Checking Index and Data File Sizes . . . . . . . . . . . . . . . . . . 761 Using SETDBSTATEITEM in ESSCMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ensuring Data Integrity . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770 zlib Compression . . . . . . . . . . . . . . . . . . . . . . . . . . 784 Using VALIDATE to Check Integrity . . . . . . . . . . . . 779 Committed Versus Uncommitted Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783 Example of Specifying Isolation Level Settings with MaxL . . . . . . . . . . . . . . . . . . . . . . . . . 773 Checking the Compression Ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771 Index Value Pair Compression . . . . . . . . . . . . . . . . . . 788 xxvi Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777 Uncommitted Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764 Reviewing an Example of Specifying Volumes To Control Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783 Accommodating Data Redundancy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 Customizing Database Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763 Storage Allocation . . . . . . 787 How to Use Spreadsheet Update Logging . . . . . . 775 Understanding Isolation Levels . . . . . 784 Recovering from a Crashed Database . . . . . . . . . . . . . . . . . . 768 Bitmap Data Compression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . 820 Database Cache Settings . . . . . . . . . . . . . . . . . . . . . . 791 Essbase Backup . . . . . . . . . . . . . . . . 811 Part IX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790 Chapter 48. . . . . . . . . . . . 808 Command Shell Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800 Components of Statements . . . . . . . 800 Analysis of Statements . . . . . . . . . . 819 Recognizing Basic Design Issues That Affect Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815 Finding Diagnostic Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Considering Hybrid Analysis Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 Backing up Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804 The MaxL Shell . . . . . . . . . . . . . . . . . . . . . . . . . 796 Restoring the Data Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797 Chapter 49. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Monitoring Performance . . . . . . . . . . . . . . . 796 Restoring the File Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794 Essbase Recovery . . . . . . . . . . . 810 The MaxL Perl Module . . . . . . . . . . . . . . . . . . . . . . Using MaxL Data Definition Language . . . . . . 806 Logging In to Essbase . . . . . . . . . . . . . . . . 816 Monitoring Application/Database Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Improving Essbase Performance . . . . . . . . . . . . . . . . . . . . . . . . . 819 Resetting Databases to Increase Performance . . . . 819 Using Database Settings to Customize for Maximum Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Optimizing Essbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809 Stopping the MaxL Shell . . . . . . . . . . . . . . 817 Monitoring Applications from the Operating System . . . . . . . . . . . . . . . . . . . . . . . . . Backup and Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 Database Disk Volumes Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817 Chapter 51. . . . . . . . . . . . . 799 Overview of Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817 Monitoring User Sessions and Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796 Restoring Corrupted Databases . . . . . . . . . . . . . . 816 Viewing Application Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815 Viewing Essbase Server Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805 Starting the MaxL Shell . . . . . . . . . . . . . . . . . . . . . . . . . 799 The MaxL DDL Language . . . . . . . . . . . . . . . . . . . . . . . . . . . 821 Contents xxvii . . . . . . . . . . . . . . . . . . . 792 Backing Up Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 Chapter 50. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 Backing Up Files During Run-Time . . . . . . . . 816 Viewing Database Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . 826 Implementing 64-bit Essbase . . . . . 833 Changing the Data Cache Size . . . . . . . . . . . . . . . . . 845 Database Restructuring . . . . . . . 828 Chapter 52. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825 Enabling Windows 4 GB RAM Tuning . . . . . . . . . . . . . . . 851 Essbase Partitioning Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 Miscellaneous Database Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842 Checking Cache Hit Ratios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Optimizing Database Restructuring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827 Finding Additional Optimization Information . . . . . . . . . . . . . . . . . . . 832 Sizing the Data File Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 Sizing Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851 xxviii Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848 Optimization of Restructure Operations . . . 834 Sizing Dynamic Calculator Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849 Incremental Restructuring and Performance . . . . . . . . . . . . . . . . . . . . . 840 Fine Tuning Cache Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844 Chapter 53. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843 Checking Performance . . . . . . . . . . . . . . . . . 831 Changing the Index Cache Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844 Running Test Calculations . 829 Deciding Whether to Use Cache Memory Locking . . . . . . . . . . . . . . 848 Sparse Restructures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846 Conditions Affecting Database Restructuring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829 Understanding Essbase Caches . . . . . . . . . . . 834 Sizing the Calculator Cache . . . . . . . . . . . . 850 Outline Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 Preventing or Removing Fragmentation . . . . . . . . . 849 Actions That Improve Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 Sizing the Index Cache . . . . . . . . . . . . . . .Database Transaction Control Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847 Dense Restructures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833 Sizing the Data Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842 Understanding Cache Settings . . . . . . . . . . . . . . . . . . . . . . . . . . Optimizing Essbase Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849 Options for Saving a Modified Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845 Types of Database Restructuring . . . 847 Temporary Files Used During Restructuring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 Measuring Fragmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823 Eliminating Fragmentation . . . . . . . . . . . . . . . . . . . . . . 832 Changing the Data File Cache Size . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878 Using Formulas . . . . . . 876 Enabling Parallel Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871 Parallel Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 880 Using Complex Formulas . . . . . . . . . . . . . . . . . . . . . 859 Optimizing Parallel Data Load Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866 SET MSG SUMMARY and SET MSG DETAIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879 Using Simple Formulas . . . . . . . . . . . . . . . . . . . . . 869 Estimating Calculation Affects on Database Size . . 866 SET NOTICE . 868 Factors Affecting Estimate Accuracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867 Estimating Calculation Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865 Database Outlines with Two or More Flat Dimensions . . . 859 Managing Parallel Data Load Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863 Designing for Calculation Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . Optimizing Calculations . . . . . . . . . 855 Understanding Data Loads . . . . . 855 Grouping Sparse Member Combinations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871 Checking Current Parallel Calculation Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866 Performing a Simulated Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870 Using Parallel Calculation . . . . . . . . . . . . 858 Loading from Essbase Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865 Monitoring and Tracing Calculations . . . . . . . . . . 858 Positioning Data in the Same Order As the Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Outline Change Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876 Identifying Additional Tasks for Parallel Calculation . . . . . . . . . . . . . . . . . . . . . 880 Optimizing Formulas on Sparse Dimensions in Large Database Outlines . . . . . . . . . . . . . . . 856 Making the Data Source As Small As Possible . . . . . . . . . . . . . . . . . . . . . . . . . 859 Understanding Parallel Data Load Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857 Making Source Fields As Small As Possible . . . . . . . . . . . . . . . . 863 Block Size and Block Density . . . . 866 Using Simulated Calculations to Estimate Calculation Time . . . . . 864 Incremental Data Loading . . . . . 851 Chapter 54. . 879 Consolidating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860 Chapter 55. . Optimizing Data Loads . . . . . . . . . . . . . . . . . . . . . . . 881 Contents xxix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864 Order of Sparse Dimensions . . . . . . 877 Monitoring Parallel Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865 Formulas and Calculation Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869 Changing the Outline Based on Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . 894 Choosing Between Member Set Functions and Performance . . . . . . . . . . . . . . . . 897 Understanding Reference Cubes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905 Setting the Retrieval Buffer Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Constant Values Assigned to Members in a Sparse Dimension . . . . . . . . . . . . . . . . . . . . . . . . . 907 Improving Retrieval Performance on Large Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Optimizing Reports and Other Types of Retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903 Chapter 56. . . . . . . . . . . . . . . . . 893 Creating Calculation Scripts for Two-Pass and Intelligent Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882 Non-Constant Values Assigned to Members in a Sparse Dimension . . . . . . . . . . . . . . . . 890 Understanding the Interaction of Two-Pass Calculation and Intelligent Calculation . . . . 908 Organizing Members to Optimize Data Extraction . . . . . . . . 889 Reviewing a Two-Pass Calculation Example . . . . . . . . . . . . . . . . . . . . . . . . . . 909 xxx Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883 Managing Formula Execution Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882 Using Cross-Dimensional Operators (->) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905 Setting the Retrieval Sort Buffer Size . 898 Working with Reference Cubes . . . . . . 885 Forcing a Bottom-Up Calculation . . . . . . . . . . . . . . . . . . . . . . . 891 Choosing Two-Pass Calculation Tag or Calculation Script . . . . . . . . . . . . . . . . . . . . . . . . . . . 888 Managing Concurrent Access for Users . . . . . . . . . . . . . . . . . . . . . . . 897 Using Reference Cubes to Improve @XREF Performance . . . . . . . . . . . . . . . . . . . 899 Sizing Reference-Cube Memory Impact . . 888 Using Two-Pass Calculation . . . . . . . . . . . . . . . . . . . 905 Changing Buffer Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 Bottom-Up and Top-Down Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887 Working with the Block Locking System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 888 Using SET LOCKBLOCK and CALCLOCKBLOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884 Using Bottom-Up Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900 Understanding #MISSING calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892 Enabling Two-Pass on Default Calculations . . . . . . . . . 907 Setting Numeric Precision . . . . . . . . . . . . . . . . . . 886 Managing Caches to Improve Performance . . . . . . . . . . . . . . . . . . . . . . . . 900 Changing Consolidation for Performance . . 899 Consolidating #MISSING Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889 Understanding Two-Pass Calculation . . . . . 907 Generating Symmetric Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901 Removing #MISSING Blocks . . . . . . . . . . . . . . . . . . . 902 Identifying Additional Calculation Optimization Issues . . . . . . . . . . . . . . . . 909 Understanding Reports for Outlines That Contain Dynamic or Transparent Members . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . 937 Using MDX Formulas . . Creating. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949 Designing and Creating an Outline for Date-Time Analysis . . . . . . . . . . . . 922 Hierarchies . . . . . . . Databases. . . . . . . . . 930 Query Design Considerations for Aggregate Storage . . . . . . 939 Creating Formulas on Aggregate Storage Outlines . . . . . . . . . . . . . . . . . . . and Managing Aggregate Storage Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934 Optimizing Outline Paging . . . . . . . . . . . . . . . . . . . . . . . 947 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921 Process for Creating Aggregate Storage Applications . . . . . . . . . . . . . . 933 Outline Paging . . . . . . . . . . . . . . . . . . . . . . . 950 Preparing for Creating Date-Time Dimensionality . . . . 918 Chapter 58. . . . . . 944 Example of Use of a Write-Back Partition . . . . . . 943 Process for Creating Write-Back Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comparison of Aggregate and Block Storage . . . . . . . and Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Databases. . . . . . . . . 941 Using a Transparent Partition to Enable Write-Back for Aggregate Storage Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928 Design Considerations for Attribute Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936 Compacting the Outline File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953 Contents xxxi . . . . 913 Differences Between Aggregate and Block Storage . . . . . . . . . . 910 Part X. . . . . . . . . . . . 923 Attribute Dimensions . . . . . . . . . . . . . . . . . . . . . . . .Limiting LRO File Sizes . . . . . 911 Chapter 57. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aggregate Storage Time-Based Analysis . . . . . . . . . . 936 Developing Formulas on Aggregate Storage Outlines . . . and Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929 Design Considerations for Aggregate Storage Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921 Creating Aggregate Storage Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947 Understanding Date-Time Dimensions . . . . 951 Modifying or Deleting Date-Time Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913 Features Supported by Aggregate and Block Storage . . . . . . 933 Outline Paging Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aggregate Storage Applications. . 940 Composing Formulas on Aggregate Storage Outlines . . . . . Calculating. . . . . . . . . . . . 951 Understanding Date-Time Calendars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930 Understanding the Compression Dimension for Aggregate Storage Databases . . . . . . . . . . . 947 Understanding Linked Attributes . . . 939 Formula Syntax for Aggregate Storage Databases . . . . 931 Verifying Outlines . . . . . . . . . . . . . . . . . . . 944 Chapter 59. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937 Formula Calculation for Aggregate Storage Databases . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954 Analyzing Time-Based Data . . . . . . . . . . . . 997 Defining Tablespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Limits . . . . 973 Calculating Aggregate Storage Databases . . . . . . . . . . . . . 996 Working with Tablespaces . . . . . . . . . . . . . . . . . . . . . . . . . Managing Aggregate Storage Applications and Databases . . . . . . . . . . . . . . . . . . . . . . 954 Verification Rules for Linked Attribute Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995 Managing Storage for Aggregate Storage Applications . . . . . . . . . . . . . . . . . . . . . . and Retrieving Aggregate Storage Data . . . . . . . . . 975 Aggregating an Aggregate Storage Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Verification Rules for Date-Time Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975 Calculation Order . . . . . . . . Appendices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993 Chapter 61. . . . . . . . . . . . . . . . . . . . . . . 956 Analyzing Time-Based Metrics with MDX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990 Retrieving Aggregate Storage Data . . . . . . . . . . . . . 1009 Names and Related Artifacts . 973 Outline Factors Affecting Data Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992 Retrieval Tools Supporting Aggregate Storage Databases . . . . . . . . . . . . . . 956 Using Smart View to Analyze Time-Related Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964 Combining Data Loads and Dimension Builds . . . . 954 Loading Data Mapped to Dates . . . . . . . . . . . 995 Aggregate Storage Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 Exports . . . 999 Levels of Aggregate Storage Database Restructuring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979 Performing Time Balance and Flow Metrics Calculations in Aggregate Storage Accounts Dimensions . . . . . . . . . . . . . . . 998 Aggregate Storage Database Restructuring . . . . . . . . . . . . . . . . . Calculating. . . . 974 Block Storage Calculation Features That Do Not Apply to Aggregate Storage Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009 xxxii Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959 Preparing Aggregate Storage Databases . . . 1000 Outline-Change Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005 Part XI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995 Backing Up Aggregate Storage Applications . . . . . . . . . . . . . . . . . . . . . . . . . 1001 Exporting Aggregate Storage Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960 Building Dimensions in Aggregate Storage Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992 Attribute Calculation Retrievals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 Managing the Aggregate Storage Cache . . . . . . 1007 Appendix A. . . . . . . . . . . . . . . . . . . . . . . . . . . . 956 Chapter 60. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Loading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961 Loading Data into Aggregate Storage Databases . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045 About Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023 Estimating the Total Essbase Server Disk Space Requirement . . . . . 1047 About Sharing Metadata and Sharing Data . . . . . . . . . . . . . . . . . . . . Managing Shared Services Models . . . . . . . . . . . . . . . . . . . . . . . Estimating Disk and Memory Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . 1013 Recovering from Dense Restructure Failures . . . . . . . . . . . . . . . . . . . . . . . 1013 Understanding Fatal Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1046 Registering Applications . . . . . . . . . . . 1014 Recovering from Sparse Restructure Failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037 Estimating Total Essbase Memory Requirements . . . . . . . . 1042 Appendix D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1030 Estimating Memory Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031 Estimating Startup Memory Requirement for Applications . . . . . . . . . . . . . . . . . . . . . . 1047 Working with Private Applications . . . . . . . . . . . . . . . . . . . . . . . . . . 1049 Exporting Models and Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1055 Viewing Model Content . . . 1011 Appendix B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1018 Calculating the Factors To Be Used in Sizing Disk Requirements . . . . . . . . . . . . . . . . . . . . . . 1032 Estimating Startup Memory Requirements for Databases . . . . 1045 Prerequisites . . . . . . . . . . . . . . . . . . 1055 Compare Operations . . . . . . . . . . . . . . . . . . . . . . . . 1050 Export Operations . . . . . . . . . . . . . . 1032 Estimating Additional Memory Requirements for Database Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059 Contents xxxiii . . . . . . . . . . . 1014 Synchronizing Member Names in Report Scripts and Database Outlines . . . . . . 1017 Determining Disk Space Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047 About Managing Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017 Understanding How Essbase Stores Data . 1015 Handling Essbase Server Problems When Running Multiple Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045 Overview . . 1053 Model Naming Restrictions . . . 1045 Superusers Group in Shared Services . . . 1011 Other Size or Quantity Limits . . . . . . 1058 Tracking Model History . . . . . . . . . . . . . . 1019 Estimating Disk Space Requirements for a Single Database . 1054 Comparing Models .Data Load and Dimension Build Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Handling Errors and Troubleshooting Essbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1048 Working with Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015 Appendix C. 1057 Renaming Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063 Appendix E. . . . . . . . . . and Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077 Naming Restrictions for Applications and Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091 xxxiv Contents . . . 1078 Using Dimension and Member Names in Calculation Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067 Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065 Understanding Syntax Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1071 Handling Command Errors in Script Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070 Using Script and Batch Files for Batch Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Managing Permissions to Models . . . . . . . . . . . . . . . . . . . . . 1066 Canceling ESSCMD Operations . . . . . . 1066 Referencing Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1074 Handling Command Errors in Batch Files . . . . . . . . . . . . . . . . . . . . . . 1068 Preparing to Start ESSCMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070 Writing Script Files . . . . . . . 1067 Considering Case-Sensitivity . . . . . . . . . . . . Naming Restrictions for Essbase Applications. . . . . . . . . Report Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using ESSCMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073 Writing Batch Files . . . 1071 Running Script Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Databases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1068 Using Interactive Mode . . . . . . . . . . . . . . . . . . . . . . . . . . and Substitution Variable Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Members. . . . . . . . . . . . . . . . . . . . . . . . 1060 Viewing and Setting Model Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065 Understanding ESSCMD . . . . . . . . . . 1077 Naming Restrictions for Dimensions. . . . . . . . and Aliases . . . . . . . . . . . . . 1067 Accessing Multiple Databases . . . . . . . . . . . . . . . . . 1069 Logging on to Essbase Server . . . . . . . . 1068 Starting and Quitting ESSCMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069 Canceling Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formulas. . . . . . . . . . . 1075 Appendix F. . . 1069 Entering Commands . . . 1072 Reviewing Sample Script Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Part I Understanding Essbase In Understanding Essbase: ● ● ● ● ● Introducing Essbase Quick Start for Implementing Essbase Understanding Multidimensional Databases Case Study: Designing a Single-Server. Multidimensional Database About Administration Services Understanding Essbase 35 .

36 Understanding Essbase .

............ Essbase products meet the enterprise analytic demands of users for critical business information with a minimum of information technology (IT) overhead and thus enable organizations to realize maximum return on their existing IT investments: ● Provides an extensible architecture Key Features 37 ........ Key Features Essbase products provide the analytic solution that integrates data from multiple sources and meets the needs of users across an enterprise....... Essbase products enable the quick and easy implementation of solutions................................. and transform data into actionable information....................................1 In This Chapter Introducing Essbase Key Features........ including: ● ● ● ● ● Essbase Oracle's Essbase® Administration Services Oracle's Essbase® Integration Services Oracle's Hyperion® Provider Services Oracle's Hyperion® Smart View for Office Essbase products provide companies with the ability to deliver critical business information to the right people when they need it......................... companies quickly leverage and integrate data from multiple existing data sources and distribute filtered information to end-user communities in the format that best meets the users’ needs......... Users interact and intuitively explore data in realtime and along familiar business dimensions....... enabling them to perform speed-of-thought analytics..................................37 Essbase Product Components ............ With Essbase.......39 This chapter provides an architectural overview of the product components and introduces the key features of Oracle's Hyperion® Essbase® – System 9 products.......... add value to previously inaccessible data......... Integration with Existing Infrastructure Essbase products integrate with your existing business intelligence infrastructure...............

Powerful Querying Large communities of business users can interact with data in real time. hardware and operating system platforms. Using Essbase products you can organize and present data along familiar business dimensions. Ease of Server and Database Administration Essbase products provide a cross-platform administration console. A rich library of functions makes it easy to define advanced and sophisticated business logic and relationships. Essbase gives users the flexibility to build. and a metadata catalog that tie into relational databases or data warehouse environments (including SAP BW). and failover support extending the scalability and reliability of the platform and support mission-critical applications in a 24 x 7 environment. legacy systems.● Supports a comprehensive range of data sources. a syntactical language command shell with a PERL extension module. ebusiness systems. Mission Critical Applications in Web-based Environments A middle-tier framework extends the power of Essbase products by creating a Web-enabled. enterprise resource planning (ERP) systems. You can use MaxL. Provider Services provides clustering. as well as the ability to span calculations across 38 Introducing Essbase . analyzing business performance at the speed of thought. The console gives you detailed control over the Essbase environment: ● ● You can manage multiple servers and databases. to automate batch maintenance. Calculations Essbase includes powerful calculation features for demanding analytic requirements. data integration services. distributed platform for Essbase applications hence serving the analysis needs of large numbers of users in Web-based environments. thus enabling users to view and explore the data intuitively and to turn the data into actionable information. customize and extend the calculator through custom-defined macros and functions. and development languages Enables analytic applications to be deployed across a local or wide area network and across an intranet or Internet ● Data Integration Essbase products enable organizations to leverage data in their data warehouses. Integration Services provides a suite of graphical tools. Web log files and other external data sources. online transaction processing (OLTP) systems. customer relationship management (CRM) applications. access interfaces. For database integration.

a DBA can configure a single calculation request to use multiple threads to accomplish the calculation. and modify hierarchies to reflect new business developments. Business users with front-end tools can write data back to a server and recalculate the data on a server using calculation scripts—key functionality to support sophisticated modeling and planning applications. Oracle's Hyperion® Shared Services provides integration with external authentication systems. such as Lightweight Directory Access Protocol (LDAP). multi-level security model provides server-. views. Users can: ● ● Design and manage applications using a graphical interface to control most server functions. Figure 1 provides a high-level view of the information flow between the source data and the product components. Ease of Development Essbase offers many key advantages to help users develop effective multidimensional applications. and enable dramatic improvements in database aggregation time for certain types of applications. Write-Back and Security Essbase provides unique multi-user read and write capabilities. the dynamic dimension builder automatically defines and dynamically loads large amounts of data.System 9 Installation Guide. database-.databases. Essbase Product Components Essbase products incorporate powerful architectural features to handle a wide range of analytic applications across large multi-user environments. ● ● For information about supported applications. In addition. operating systems. flat files. Essbase Product Components 39 . Aggregate storage databases provide an alternative to block storage databases. see the Hyperion Essbase . Define key calculations without having to write a program. and networking protocols. Quickly add dimensions. and cell-level security. Define security for individuals and groups and customize views and retrieval procedures for each user without writing a program. On multiprocessor systems. Full control of data access. and supported relational database tables directly into a database. The robust. including data update and multiuser recalculation. including data from spreadsheets. providing enhanced calculation speed. and write capabilities are managed through administration. change calculations.

caching. profitability analytics—all from a single analytic infrastructure. Aggregate storage databases—using a new storage kernel for multidimensional databases— provide an alternative to block storage databases. All Essbase application components. thin-client architecture. application control. Essbase requires a server to run a multi-threaded operating system so a server can efficiently manage multiple. Essbase serves a wide range of analytic needs—financial analysis. and multidimensional database information. A server also runs a server agent process that acts as a traffic coordinator for all user requests to applications. and data security. simultaneous requests. marketing analysis. calculations. supply chain analysis. enabling you to store large databases. Using aggregate storage. planning. handling all data storage. including database outlines and calculation scripts. The Essbase Server client needs only to retrieve and view data that resides on a server. With Essbase you can configure server disk storage to span multiple disk drives.Figure 1 High-level Information Flow Between Product Components Essbase Essbase—a multi-threaded OLAP database software that takes advantage of symmetric multi processing hardware platforms—is based upon Web-deployable. 40 Introducing Essbase . reside on a server. and enable dramatic increases in database dimensionality. sales analysis. budgeting. The server acts as a shared resource.

You can also use custom Java plugins to leverage and extend key functionality. Administration Services Administration Services—the database and system administrators’ interface to Essbase— provides a single-point-of-access console to multiple Essbase Servers. Drill-down. and XMLA clients. Essbase Spreadsheet Add-in for Excel adds the Essbase menu to Excel. This relational stored data is mapped to the appropriate Essbase hierarchies. See the Hyperion Installation Start Here for information on the supported operating systems. maintain. Users can access and analyze data on Essbase Server by using simple mouse clicks and drag-and-drop operations.MaxL—a multidimensional database access language that is part of Essbase Server—provides a flexible way to automate Essbase administration and maintenance tasks. You can preview data from within the console. Hybrid Analysis allows portions of Essbase databases to be stored in a relational database. The Hybrid Analysis feature gives business users more detail for decisionmaking and IT managers more modularity in designing and maintaining large-scale analytic applications. Provider Services supports highly concurrent analytical scenarios and provides scalability and reliability in a distributed Web-enabled enterprise environment. See the Essbase Spreadsheet Add-in for Excel Online Help and the Essbase Spreadsheet Add-in for Excel User's Guide. See the Essbase Integration Services Installation Guide and the Essbase Integration Services Online Help. Integration Services Integration Services—an optional product component—provides a metadata-driven environment to bridge the gap between data stored in Essbase databases and detailed data stored in relational databases. Provider Services Provider Services is a middle-tier data-source provider to Essbase for Java API.System 9 Installation Guide for specific information about server configuration requirements. See the Essbase Provider Services Installation and Configuration Guide. Essbase Product Components 41 . and Calculate. applications. Essbase Spreadsheet Add-in for Excel Essbase Spreadsheet Add-in for Excel integrates Essbase with Microsoft Excel. develop. and databases. Pivot. Essbase Spreadsheet Add-in for Excel enables multiple users to access and update data on an Essbase Server simultaneously. Smart View. Using Administration Services you can design. without having to open a client application such as Essbase Spreadsheet Add-in for Excel. which provides enhanced commands such as Connect. and manage multiple Essbase Servers. and the Hyperion Essbase .

and then apply them to existing Essbase applications and databases. Using simple business terminology. For information about installing and configuring Smart Search. and Oracle's Hyperion® Application Builder. Oracle's Hyperion® Financial Management – System 9. management and deployment of tailored enterprise analytic applications. users can obtain structured information from Essbase applications and databases. manipulate. Developer Products Essbase developer products enable the rapid creation. See the Hyperion Smart View for Office Online Help and the Hyperion Smart View for Office User's Guide. Oracle's Hyperion® Planning – System 9. enabling you to make better business decisions. distribute and share data in Microsoft Excel. For information about configuring Oracle's Hyperion® Smart Search to search and display Essbase cube data. see the Hyperion Smart Search Installation and Configuration Guide. Using Data Mining.Smart View Smart View provides a common Microsoft Office interface for Essbase. with or without programming knowledge. build models. Using Smart View. Smart Search Oracle's Hyperion® Smart Search integrates with leading enterprise search solutions like Google Search Appliance and Oracle Secure Enterprise Search to provide a familiar search interface. and PowerPoint interfaces.NET) provide a comprehensive set of application programming interfaces. and Oracle's Hyperion® Workspace data. import. Data Mining Data Mining—an optional product component of Essbase—shows you hidden relationships and patterns in your data. and supported compilers. Word. Information that has been filtered according to user privileges is delivered in both data grids and live links in Smart View . Application Programming Interface (API) Essbase API—the developers’ interface to Essbase—allows you to create customized applications. you can view. Smart Search greatly enhances the way in which users can quickly get to information contained within Hyperion applications. The Essbase API Reference provides a complete listing of API functions. platforms. you can plug in various data mining algorithms. Application Builder. The products (for example. 42 Introducing Essbase . see the Essbase Administration Services Online Help. drag and drop components and services.

Unless otherwise specified. Consider the following: ● ● Your budget. For detailed information on the differences between aggregate and block storage. The information in this chapter is designed for block storage databases. forecasting.System 9 Installation Guide for important upgrade information. relational data or is it higher-level. see Chapter 57. and other financial reports with notes on how you want to improve them ● ● ● ● Chapter 3. The table also tells you where you can find more information about each step. “Comparison of Aggregate and Block Storage. the chapters refer to the Hyperion Essbase .2 Note: Quick Start for Implementing Essbase The table in this chapter provides process steps to help you get up and running with Essbase. “Designing Partitioned Applications” Attend an Essbase training class. Some of the information is not relevant to aggregate storage databases. hierarchical data that can be used for analysis? In what format is the data? ● 43 . Chapter 1. If you are upgrading from a previous version of Essbase. see the Hyperion Essbase . “Introducing Essbase” Chapter 3. “Understanding Multidimensional Databases” Chapter 6.System 9 Database Administrator's Guide. “Working with Attributes” Chapter 13. Have a clear idea of your data analysis needs and of what types of calculations and reports you want to run. contact your software vendor. “Creating Applications and Databases” Chapter 10. Assess your needs and requirements.” Note: This chapter assumes that you are a new Essbase user. Table 1 A Process Map Reference ● ● ● ● ● ● Process Step Learn the fundamentals of Essbase and distributed OLAP. Analyze your data from a multidimensional perspective. “Understanding Multidimensional Databases” Essbase SQL Interface Guide ODBC drivers documentation Integration Services documentation Where are your data sources? What type is the data? Is it detailed.

Multidimensional Database” ● ● ● ● ● ● Estimate the size of your database. ● ● Identify business and user requirements.System 9 Installation Guide Install Essbase. and ensure that the sizes of the index. Define calculations needed for outline dimensions and members. “Creating Applications and Databases” Chapter 12. Define standard dimensions and designate sparse and dense storage. You can load data these ways: ● ● ● Appendix A. and Data” Chapter 18. Identify any need for currency conversion applications that track data in different currencies. “Using a Rules File to Perform Operations on Records. Design your application and database. Identify any need to monitor data changes in the database. “Case Study: Designing a Single-Server. and data caches in memory are adequate. consider dynamically building your dimensions using a rules file and a data source. Chapter 4. Hyperion Essbase . set up regular data loads. “Performing and Debugging Data Loads or Dimension Builds” Chapter 19. “Designing and Building Currency Conversion Applications” Chapter 7. “Understanding Data Loading and Dimension Building” Chapter 16. Design a currency application. “Creating and Changing Database Outlines” Chapter 9. Build an outline for your database. “Limits” Chapter 6. Be aware that the license your company purchased might not include all options. You monitor data changes using the Essbase triggers feature (licensed separately). Assign alias names to your members. Decide whether your data loads will introduce new members into the outline. “Understanding Advanced Dimension Building Concepts” Free-form With a rules file With Hybrid Analysis ● ● 44 Quick Start for Implementing Essbase . “Creating Rules Files” ● ● ● Chapter 15. you may need Essbase SQL Interface or Integration Services (a separately purchasable product). Identify source data and determine the scope of the Essbase database. Create an application and a database. check disk space. “Creating Rules Files” Chapter 17. Choose whether to leave lowest-level member data in a relational database and access with Hybrid Analysis.Process Step ● Reference How will you access the data? If you need to access relational data. If so. Fields. Identify any need for attribute dimensions. If not. “Setting Dimension and Member Properties” ● ● Chapter 15. data files. or to load all data. Decide what components you want to install. Load your data. including security. Build the dimensions. “Understanding Data Loading and Dimension Building” Chapter 16.

Process Step Calculate your database. “Calculating Time Series Data” Chapter 27. ensure that the sum of index and data cache sizes for all the active databases on the server is not more than two-thirds of the system’s RAM. data file. data file. specify the appropriate disk volume names and configuration parameters. Link files or cell notes to data cells. “Allocating Storage and Compressing Data” Data compression: Specify data compression on disk and the compression scheme. Cache memory locking: You can lock the memory that is used for the index. or a combination of both. “Understanding Report Script Basics” Chapter 32. Allocate storage and specify Essbase kernel settings for your database. “Managing Database Settings” Chapter 46. other Hyperion tools. “Reviewing Examples of Calculation Scripts” Chapter 29. Disk volumes: You can specify the storage location of Essbase index files and data files. “Calculating Essbase Databases” Chapter 21. 45 . Chapter 25. Consider whether tagging some members as Dynamic Calc or whether using Intelligent Calculation will improve calculation efficiency. “Developing Custom-Defined Calculation Macros” Chapter 30. see the Essbase Spreadsheet Add-in for Excel User's Guide For third-party tools. Consider which members you need to tag as two-pass calculation to ensure correct calculation results. View data with Essbase Spreadsheet Add-in for Excel. and data cache sizes. ● Chapter 31. “Developing Formulas” Chapter 22. “Linking Objects to Essbase Data” Chapter 34. Copy or export data subsets. ● ● Chapter 11. or third-party tools. Cache sizes: You can specify the index. “Defining Calculation Order” Chapter 25. To prevent a slowdown of the operating system. “Developing Calculation Scripts” Chapter 28. Think about whether your data can benefit from being decentralized into connected databases. “Dynamically Calculating Data Values” Chapter 26. “Copying Data Subsets and Exporting Data to Other Programs” Chapter 48. “Backup and Recovery” ● ● Back up and restore your data. see the vendor documentation Chapter 13. ● ● ● Learn about dynamic calculations and how they can greatly improve performance. ● Chapter 45. Isolation level: Specify either committed access or uncommitted access. Ensure that relationships between members and member consolidations in the database outline are correct. “Developing Custom-Defined Calculation Functions” Decide on a type of calculation: outline or calculation script. and data caches into physical memory. “Developing Report Scripts” Choose a type of report: structured or free-form. “Creating and Maintaining Partitions” ● Learn about Partitioning. ● ● ● ● ● ● Generate a report. “Dynamically Calculating Data Values” ● For Essbase Spreadsheet Add-in for Excel. ● Reference ● ● ● ● ● ● ● ● ● ● Chapter 20. “Designing Partitioned Applications” Chapter 14. “Reviewing Examples of Formulas” Chapter 23.

Archive data from Essbase Server on a regular basis. and row headings (unnecessary for a free-form report). Set the correct size for the index. ● Chapter 42. such as page layout. Save the report on Essbase Server or on a client computer. “Optimizing Database Restructuring” Chapter 54. “Optimizing Data Loads” Chapter 55. “Optimizing Calculations” Chapter 24. Define common data access permissions at the scope of the server. Validate the database to ensure data integrity. “Allocating Storage and Compressing Data” Chapter 47. To define global application or database permissions. or data-cell levels. Ensure that disk space is adequate to allow the application to grow over time. data. select the relevant application or application and database and adjust the settings. “Ensuring Data Integrity” Chapter 48. and content of titles. format of data values. ● ● ● Maintain your applications. Create users and groups and assign them administrative or data-access permissions. ● ● ● Chapter 45. use Administration Services Report Script Editor or any other text editor. “Managing Database Settings” Chapter 46. “Running Essbase Servers. For a structured report. “User Management and Security” Chapter 38. “Using MaxL Data Definition Language” Appendix E. and Databases” Chapter 43. ● ● ● ● 46 Quick Start for Implementing Essbase . applications. “Allocating Storage and Compressing Data” Chapter 50. “Copying Data Subsets and Exporting Data to Other Programs” Chapter 35. “Improving Essbase Performance” Chapter 52. “Mining an Essbase Database” ● ● ● ● Fine-tune your database performance and storage settings. “Monitoring Performance” Chapter 49. “Managing Applications and Databases” “Using Essbase Logs” on page 723 Chapter 45. “Security Examples in Native Security Mode” Automate routine operations by using MaxL or ESSCMD. column. data file. “Backup and Recovery” Chapter 50. “Understanding Intelligent Calculation” Chapter 56. “Monitoring Performance” Chapter 51. “Optimizing Essbase Caches” Chapter 53. ● ● ● ● Create a security plan for your environment based on database security needs. Chapter 34. if necessary. Applications. ● ● ● ● ● ● ● ● ● ● Ensure that block size is not excessively large. and calculator caches. databases. Consider using partitioning to distribute data across multiple cubes for better scalability and performance. Create and test a report script. identity of members.Process Step ● Reference ● Plan the elements of the report. “Managing Database Settings” Chapter 46. “Controlling Access to Database Cells” Chapter 39. ● ● Design security for your database. “Using ESSCMD” Chapter 37. number of columns. “Optimizing Reports and Other Types of Retrieval” ● ● ● ● ● ● Analyze and improve performance and troubleshoot errors if they occur. create page.

increase the size of the retrieval sort buffer. If sorting on retrievals. ● 47 .Process Step ● Reference Enable logging for spreadsheet update to ensure that log files are updated after archiving.

48 Quick Start for Implementing Essbase .

.............................. financial performance analysis........ Sales departments use OLAP for sales analysis and forecasting.....3 In This Chapter Understanding Multidimensional Databases OLAP and Multidimensional Databases ..... “Comparison of Aggregate and Block Storage....... it provides “just-in-time” information for effective decision-making............ Some of the information is not relevant to aggregate storage databases................. and market/customer segmentation..... multi-user....................50 Data Storage .... see Chapter 57............... activity-based costing (allocations)................................ customer analysis........ Important to all of the applications mentioned in the previous paragraph is the ability to provide managers with the information they need to make effective decisions about an organization's strategic directions.49 Dimensions and Members ........ client-server computing environment for users who need to analyze enterprise data... Typical manufacturing OLAP applications include production planning and defect analysis............................................66 Essbase contains multidimensional databases that support analysis and management reporting applications.... “Just-intime” information is computed data that usually reflects complex relationships and is often calculated on the fly.... sales forecasting. because the nature of data relationships may OLAP and Multidimensional Databases 49 ... that is........ This chapter discusses multidimensional concepts and terminology.. Among other applications. Finance departments use OLAP for applications such as budgeting........... Providing “just-in-time” information requires more than a base level of detailed data.................. A successful OLAP application provides information as needed................” OLAP and Multidimensional Databases Online analytical processing (OLAP) is a multidimensional.............. Note: The information in this chapter is designed for block storage databases........... marketing departments use OLAP for market research analysis...................60 The Essbase Solution ................... promotions analysis. OLAP applications span a variety of organizational functions........................... and financial modeling................... For detailed information on the differences between aggregate and block storage................... Analyzing and modeling complex relationships are practical only if response times are consistently short........ In addition.........................

Dimensions and Members This section introduces the concepts of outlines. the structure that defines all elements of the database. A truly flexible data model ensures that OLAP systems can respond to changing business requirements as needed for effective decision making. you can compare 50 Understanding Multidimensional Databases . A dimension represents the highest consolidation level in the database outline. Through attribute dimensions. they also provide retrieval and calculation of a variety of data subsets. For example. you are well on your way to understanding the power of a multidimensional database. Accounts. dimensions and members within a multidimensional database. For example. you group and analyze members of standard dimensions based on the member attributes (characteristics). If you understand dimensions and members. Typical standard dimensions are Time. they all require the following key features: ● ● ● Multidimensional views of data Calculation-intensive capabilities Time intelligence Key to OLAP systems are multidimensional databases. Standard dimensions represent the core components of a business plan and often relate to departmental functions. Product Line. Users can pivot the data to see information from a different viewpoint. and Division. Although OLAP applications are found in widely divergent functional areas. the data model must be flexible. Essbase has two types of dimensions: standard dimensions and attribute dimensions. a marketing analyst might want answers to the following questions: ● How did Product A sell last month? How does this figure compare to sales in the same month over the last five years? How did the product sell by branch. Attribute dimensions are a special type of dimension that are associated with standard dimensions. A multidimensional database supports multiple views of data sets for users who need to analyze the relationships between data categories. and territory? Did this product sell better in particular regions? Are there regional trends? Did customers return Product A last year? Were the returns due to product defects? Did the company manufacture the products in a specific plant? Did commissions and pricing affect how salespeople sold the product? Did particular salespeople do a better job of selling the product? ● ● ● With a multidimensional database. region. in Figure 2. Dimensions change less frequently than members. Market. or drill up to see an overview.not be known in advance. Multidimensional databases not only consolidate and calculate data. The database outline presents dimensions and members in a tree structure to indicate a consolidation relationship. drill down to find more detailed information. the number of data views is limited only by the database outline. Time is a dimension and Qtr1 is a member. For example.

Product B. and Product C might be members of the Product dimension. Qtr2. When you create a dimension. Members are the individual components of a dimension. storing summary data for the entire quarter. Qtr3. Each dimension consists of one or more members. and rolling up quarterly data to obtain annual figures. Essbase does not limit the number of members within a dimension and enables the addition of new members as needed. The members. a consolidation is a group of members in a branch of the tree. The database outline in Figure 2 uses a hierarchical structure to represent the data consolidations and relationships in Qtr1. For example. Qtr2. Essbase can store the data associated with a member (referred to as a stored member in this chapter) or it can dynamically calculate the data when a user retrieves it. Likewise. plus Year. For example. A database outline accomplishes the following: ● ● ● Defines the structural relationships between members in an Essbase database Organizes all the data in the database Defines the consolidations and mathematical relationships between items Essbase uses the concept of members to represent data hierarchies. rolling up monthly data to obtain quarterly figures. Businesses may also summarize data by zip code. may consist of other members. In the Sample Basic database included with Essbase Server. Within the tree structure of the database outline.the profitability of non-caffeinated products that are packaged in glass to the profitability of non-caffeinated products that are packaged in cans. by city. Qtr1 consists of four members: Jan. Qtr3. Dimensions and Members 51 . the Year dimension consists of five members: Qtr1. in turn. storing summary data for the entire year. each storing data for an individual month. and Mar. you tell Essbase how to consolidate the values of its individual members. Figure 2 Hierarchical Structure Some dimensions consist of relatively few members. state. Feb. Product A. each storing data for an individual quarter. and country. while others may have hundreds or even thousands of members. many businesses summarize their data monthly. and Qtr4. and Qtr4 consist of the members that represent the individual months plus the member that stores the quarterly totals. Each member has a unique name. Outline Hierarchies All Essbase database development begins with creating a database outline. plus Qtr1. Any dimension can be used to consolidate data for reporting purposes. for example.

Sales and Cost of Goods Sold are siblings (they both have the parent Margin). Inventory. and Ratios are descendants of Measures. Ancestors are members in branches above a member. ● 52 Understanding Multidimensional Databases . For example. and sibling relationships: ● A parent is a member that has a branch below it. Profit. and Measures are ancestors of Sales. These terms are used throughout Essbase documentation. Margin. Margin is a parent member for Sales and Cost of Goods Sold. child. at the same generation. A child is a member that has a parent above it. Siblings are child members of the same immediate parent. ● ● Descendants and Ancestors Figure 3 illustrates the following descendant and ancestral relationships: ● Descendants are members in branches below a parent. For example. For example. For example. but Marketing (at the same branch level) is not a sibling because its parent is Total Expenses. You can describe the position of the members of the branches in Figure 3 in several ways. and Siblings Figure 3 illustrates the following parent. The children of Profit. Inventory. Children. Profit. Sales and Cost of Goods Sold are children of the parent Margin. Essbase uses hierarchical and family history terms to describe the roles and relationships of the members in an outline.Dimension and Member Relationships Essbase uses the terms defined in the following sections to describe a database outline. For example. Figure 3 Member Generation and Level Numbers Parents. and Ratios are also descendants of Measures.

A root branch of the tree is generation 1. and Margin is generation 3. Inventory. For the Ratios branch. for example. In the example in Figure 3. Leaf members have no children. For the Total Expenses branch. Figure 5 shows part of the Product dimension with its levels numbered. All other leaf members are also level 0. Opening Inventory. All siblings of each level belong to the same generation. Figure 5 Levels Dimensions and Members 53 . Measures is level 3. Measures is generation 1. Notice that the level number of Measures varies depending on the branch. Margin is level 1. and Ending Inventory are leaf members. both Inventory and Ratios are generation 2. Additions. In Figure 3. and Profit is level 2. ● Generations and Levels Figure 3 on page 52 illustrates the following generations levels: ● Generation refers to a consolidation level within a dimension. They are also referred to as level 0 members. and the children of Profit. Figure 4 shows part of the Product dimension with its generations numbered. For example. levels reverse the numerical ordering used for generations. Figure 4 Generations ● Level also refers to a branch within a dimension. Measures is level 2. Sales and Cost of Goods Sold are level 0. and Ratios. Profit is generation 2.Roots and Leaves Figure 3 on page 52 illustrates the following root and leaf member relationships: ● The root is the top member in a branch. Measures is the root for Profit. Ratios. The root level number varies depending on the depth of the branch. Inventory. Levels count up from the leaf member toward the root. Generation numbers increase as you count from the root toward the leaf member.

A sparse dimension is a dimension with a low percentage of available data positions filled.Generation and Level Names To make reports easier to maintain. and Scenario represents whether the accounts values are budget or actual values. Most multidimensional databases are inherently sparse: they lack data values for the majority of member combinations. “Working with Attributes. Year and Scenario are also chosen as dense dimensions. Instead it dynamically calculates the members when the user requests data associated with them. Product. Standard Dimensions and Attribute Dimensions Essbase has two types of dimensions: standard dimensions and attribute dimensions. and Measures represents the accounts data. Because changes to an outline are automatically reflected in a report. Essbase speeds up data retrieval while minimizing the memory and disk requirements. accounts data exists for almost all products in all markets. so Measures is chosen as a dense dimension. Product represents the product units. without losing the advantages of matrix-style access to the data. Market and Product are chosen as sparse dimensions. Market. Most multidimensional databases also contain dense dimensions. 54 Understanding Multidimensional Databases . See Chapter 10. Essbase maximizes performance by dividing the standard dimensions of an application into two types: dense dimensions and sparse dimensions. A dense dimension is a dimension with a high probability that one or more cells is occupied in every combination of dimensions. Measures. An attribute dimension is a special type of dimension that is associated with a standard dimension. you can assign a name to a generation or level and then use the name as a shorthand for all members in that generation or level. Data does not exist for the majority of member combinations. This chapter primarily considers standard dimensions because Essbase does not allocate storage for attribute dimension members. and Scenario dimensions. Because not every product is sold in every market. For example. Market represents the geographical regions in which the products are sold. the Sample Basic database shown in Figure 6 includes the Year. all products may not be sold in all areas of the country. For example. Year represents time in months.” Sparse and Dense Dimensions Most data sets of multidimensional databases have two characteristics: ● ● Data is not smoothly and uniformly distributed. For example. This division allows Essbase to cope with data that is not smoothly distributed. when you use generation and level names. you do not need to change the report if a member name is changed or deleted from the database outline. in the Sample Basic database.

Note: In Figure 6. Intro Date. you can store the existing data in a reasonable number of fairly dense data blocks. See Chapter 10. see “Setting Dimensions as Dense or Sparse” in the Essbase Administration Services Online Help. Essbase can make recommendations for the sparse-dense configuration of dimensions based on the following factors: ● ● ● The time and accounts tags on dimensions The probable size of the data blocks Characteristics that you attribute to the dimensions Dimensions and Members 55 . To help you determine whether dimensions should be dense or sparse. Pkg Type and Population are attribute dimensions. By default. rather than in many highly sparse data blocks. “Working with Attributes. Caffeinated. Ounces. ➤ To select automatic configuration of dense and sparse dimensions. a new dimension is set sparse. If you match patterns correctly. Essbase provides an automatic configuration feature. existing data tends to follow predictable patterns of density and sparsity.” Figure 6 Sample Basic Database Outline Selection of Dense and Sparse Dimensions In most data sets.

and Scenario. consider the sparse member combination Caffeine Free Cola (100-30). TBC does not sell every product in every market. ● ● 56 Understanding Multidimensional Databases . Therefore. it probably exists for February and for all members in the Year dimension. Year and.So. Essbase creates a data block for each unique combination of members in the Product and Market dimensions (for more information on data blocks. The dense standard dimensions are Year. if no data values exist for a specific combination of members in these dimensions. Measures. consider combinations of members in the Year. The sparse-dense configuration of the standard dimensions in the Sample Basic database may be summarized as follows: ● ● The sparse standard dimensions are Product and Market. similarly. therefore. Data values almost always exist for some member combinations on these dimensions. Note: The automatic configuration of dense and sparse dimensions provides only an estimate. Dense-Sparse Configuration for Sample Basic Consider the Sample Basic database that is provided with Essbase. the data set is reasonably sparse.You can apply a recommended configuration or you can turn off automatic configuration and manually set the sparse or dense property for each dimension. For example. For example. it is likely that other accounts data values exist for other members in the Measures dimension. illustrated by Figure 7: ● If accounts data (represented by the Measures dimension) exists for this combination for January. If Actual accounts data values exist. and Scenario dimensions. Data values do not exist for many combinations of members in the Product and Market dimensions. If a data value exists for one member on the Measures dimension. The data blocks are likely to have few empty cells. if Caffeine Free Cola is not sold in Florida. Measures and Scenario are dense dimensions. it is likely that Budget accounts data values exist. then data values do not exist for the combination Caffeine Free Cola (100-30)->Florida. Measures. Each data block represents data from the dense dimensions. Thus. However. The Sample Basic database represents data for The Beverage Company (TBC). data values exist for the member combination Sales->January->Actual because at least some products are sold in January. Essbase does not create a data block for the combination. see “Data Storage” on page 60). New York. For example. Product and Market are sparse dimensions. It cannot take into account the nature of the data you will load into your database or multiple user considerations. Keep in mind that you can associate attribute dimensions only with sparse standard dimensions. Attribute dimensions are always sparse dimensions.

Essbase creates data blocks that consist of single data cells that contain single data values. Assume that these scenarios are based on typical databases with at least seven dimensions and several hundred members: Scenario 1: All Sparse Standard Dimensions If you make all dimensions sparse. Figure 8 Database with All Sparse Standard Dimensions Scenario 2: All Dense Standard Dimensions If you make all dimensions dense.Figure 7 Dense Data Block for Sample Basic Database Dense and Sparse Selection Scenarios The following scenarios show how a database is affected when you select different standard dimensions. this configuration requires thousands of times Dimensions and Members 57 . in this scenario. therefore. In most applications. for each existing data value. This configuration produces an index that requires a large amount of memory. An index entry is created for each data block and. very sparse block. Essbase creates one index entry and one very large. The more index entries. the longer Essbase searches to find a specific block. as shown in Figure 9.

Ideally. Figure 9 Database with All Dense Standard Dimensions Scenario 3: Dense and Sparse Standard Dimensions Based upon your knowledge of your company’s data. In the following example. and Product. If not. Figure 10 An Ideal Configuration with Combination of Dense and Sparse Dimensions Scenario 4: A Typical Multidimensional Problem Consider a database with four standard dimensions: Time. Essbase creates dense blocks that can fit into memory easily and creates a relatively small index as shown in Figure 10. Accounts. you have approximately equal numbers of sparse and dense standard dimensions.more storage than other configurations. Time and Accounts are dense dimensions. you are probably working with a non-typical data set and you need to do more tuning to define the dimensions. and Region and Product are sparse dimensions. you have identified all your sparse and dense standard dimensions. Essbase needs to load the entire memory when it searches for a data value. 58 Understanding Multidimensional Databases . Region. Your database runs efficiently using minimal resources. which requires enormous amounts of memory.

F. The data blocks that Essbase has created have very few empty cells. M. In the following example. The sparse dimensions are Region and Product. Essbase has not created data blocks for these member combinations. The members in the Product dimension are Product A. and Net. and Q1. Exp. The members of the Region dimension are East. and Total US. Figure 12 shows 11 data blocks. Therefore. Figure 11 Two-dimensional Data Block for Time and Accounts Essbase creates data blocks for combinations of members in the sparse standard dimensions (providing at least one data value exists for the member combination). Product B. This configuration provides efficient data storage and retrieval. The members in the Accounts dimension are Rev. Dimensions and Members 59 . and Total Product.The two-dimensional data blocks shown in Figure 11 represent data values from the dense dimensions: Time and Accounts. Next consider a reversal of the dense and sparse dimension selections. and Time and Accounts are sparse dimensions. South. Figure 12 Data Blocks Created for Sparse Members on Region and Product This example effectively concentrates all sparseness into the index and concentrates all data into fully utilized blocks. Product C. the two-dimensional data blocks represent data values from the dense dimensions: Region and Product. and for Product C in the East. The members in the Time dimension are J. No data values exist for Product A in the West and South. Region and Product are dense dimensions. As shown in Figure 13. West. for Product B in the East and West.

Consider the simplified database shown in Figure 15. Because data values do not exist for all products in all regions. 60 Understanding Multidimensional Databases . The sparse standard dimensions are Time and Accounts. Data values exist for all combinations of members in the Time and Accounts dimensions. Essbase dynamically calculates attribute dimension data when a user retrieves the data. the data blocks have many empty cells.Figure 13 Two-Dimensional Data Block for Region and Product Essbase creates data blocks for combinations of members in the sparse standard dimensions (providing at least one data value exists for the member combination). A particular data value is referenced by specifying its coordinates along each standard dimension. Essbase creates data blocks for all the member combinations. therefore. Figure 14 shows 12 data blocks. Note: Essbase does not store data for attribute dimensions. Figure 14 Data Blocks Created for Sparse Members on Time and Accounts Data Storage Each data value in a multidimensional database is stored in a single cell. Data blocks with many empty cells store data inefficiently.

Time. thus. Margin. and Margin%. and Scenario: ● ● ● The Accounts dimension has four members: Sales. you are specifying the portion of the database containing eight Sales values. and Qtr1 has three month members The Scenario dimension has two child members: Budget for budget values and Actual for actual values. Data Values The intersection of one member from one dimension with one member from each of the other dimensions represents a data value. Data Storage 61 . The Time dimension has four quarter members. COGS. The example in Figure 16 has three dimensions.Figure 15 A Multidimensional Database Outline This database has three dimensions: Accounts. Figure 16 Three-Dimensional Database The shaded cells in Figure 17 illustrate that when you specify Sales. the dimensions and data values in the database can be represented in a cube.

When you specify Actual Sales. Jan. you are specifying the four Sales values where Actual and Sales intersect as shown by the shaded area in Figure 18. In Figure 19. Actual is shaded. Figure 19 Sales -> Jan -> Actual Slice of the Database Data Blocks and the Index System Essbase uses two types of internal structures to store and access data: data blocks and the index system. 62 Understanding Multidimensional Databases . The data value can also be expressed using the cross-dimensional operator (->) as Sales -> Actual -> Jan. you specify its member on each dimension. Figure 18 Actual. To refer to a specific data value in a multidimensional database. the cell containing the data value for Sales. Sales Slice of the Database A data value is stored in a single cell in the database.Figure 17 Sales Slice of the Database Slicing a database amounts to fixing one or more dimensions at a constant value while allowing the other dimensions to vary.

When Essbase searches for a data value. and Scenario. Product and Market are sparse dimensions.Essbase creates a data block for each unique combination of sparse standard dimension members (providing that at least one data value exists for the sparse dimension member combination). It contains an entry for each unique combination of sparse standard dimension members for which at least one data value exists. The index entry provides a pointer to the data block. Figure 20 Product and Market Dimensions from the Sample Basic Database If data exists for Caffeine Free Cola in New York. For example. it locates the cell containing the data value. it uses the index to locate the appropriate data block. Essbase creates a data block and an index entry for the sparse member combination of Caffeine Free Cola (100-30) -> New York. within the data block. The index handles sparse data efficiently because it includes only pointers to existing data blocks. Each dimension of the block represents a dense dimension in the Sample Basic database: Time. Then. The data block Caffeine Free Cola (100-30) -> New York represents all the Year. and Scenario dimensions for Caffeine Free Cola (100-30) -> New York. Data Storage 63 . Essbase does not create a data block or an index entry for the sparse member combination: Caffeine Free Cola (100-30) -> Florida. The index represents the combinations of sparse standard dimension members. Each unique data value can be considered to exist in a cell in a data block. Measures. Figure 21 shows part of a data block for the Sample Basic database. The data block represents all the dense dimension members for its combination of sparse dimension members. Essbase creates an index entry for each data block. Measures. If Caffeine Free Cola is not sold in Florida. A data block exists for each unique combination of members of the Product and Market sparse dimensions (providing that at least one data value exists for the combination). in the Sample Basic database outline shown in Figure 20.

The search is almost instantaneous.Figure 21 Part of a Data Block for the Sample Basic Database Each data block is a multidimensional array that contains a fixed. Accessing a cell in the block does not involve sequential or index searches. ordered location for each possible combination of dense dimension members. Essbase orders the cells in a data block according to the order of the members in the dense dimensions of the database outline. A (Dense) a1 a2 B (Dense) b1 b11 b12 b2 b21 b22 C (Dense) c1 c2 c3 D (Sparse) d1 d2 d21 d22 E (Sparse) e1 e2 e3 The block in Figure 22 represents the three dense dimensions from within the combination of the sparse members d22 and e3 in the preceding database outline. The symbol for the cross64 Understanding Multidimensional Databases . resulting in optimal retrieval and calculation speed. In Essbase. member combinations are denoted by the cross-dimensional operator.

The slice of January in Figure 23. A data block is created if at least one data value exists in the block. Thus. d22 -> e3 denotes the block for d22 and e3. Slicing the database in different ways gives you different perspectives of the data. Figure 22 Data Block Representing Dense Dimensions for d22 -> e3 Essbase creates a data block for every unique combination of the members of the sparse dimensions D and E (providing that at least one data value exists for the combination).dimensional operator is ->. you can ensure that data blocks do not contain many empty cells. minimizing disk storage requirements and improving performance. but is enabled by default. b21. Figure 23 Data for January Data Storage 65 . Essbase compresses data blocks with missing values on disk. examines all data values for which the Year dimension is fixed at Jan. expanding each block fully as it brings the block into memory. for example. and c3 is written A -> b21 -> c3. In Essbase. By carefully selecting dense and sparse standard dimensions. Data compression is optional. The intersection of A. may include cells that do not contain data values. such as the one shown in Figure 22. see “Data Compression” on page 768. Data blocks. For more information. empty cells are known as #MISSING data Multiple Data Views A multidimensional database supports multiple views of data sets for users who need to analyze the relationships between data categories.

Calculating your database. see Chapter 4.The slice in Figure 24 shows data for the month of February: Figure 24 Data for February The slice in Figure 25 shows data for profit margin: Figure 25 Data for Profit Margin The Essbase Solution To create an optimized Essbase database.” Selecting dense and sparse dimensions. see “Data Compression” on page 768. Multidimensional Database. see “Selection of Dense and Sparse Dimensions” on page 55. consider the following questions: ● ● ● ● How does your company use the data? How do you plan to build and order the dimensions? Which data compression scheme will you use? How do you want to create and order calculations? For more information on: ● Planning the development of your multidimensional database.” Compressing data and optimizing your database. “Case Study: Designing a Single-Server.” ● ● ● ● 66 Understanding Multidimensional Databases . Loading data. see Chapter 15. “Understanding Data Loading and Dimension Building. “Calculating Essbase Databases. see Chapter 20.

.........95 To implement a multidimensional database....... “Creating Applications and Databases................................. designing an application is a cyclic process that moves from a planning stage to a verification stage....... multidimensional database solution for your organization............. see Chapter 6...................................................................................69 Drafting Outlines ....................... see “Deciding Whether to Partition a Database” on page 198.. Process for Designing a Database 67 .............................................................................85 Loading Test Data..... this chapter provides an overview of the database planning process and discusses working rules that you can follow to design a single-server....................................................................85 Defining Calculations .....................94 Verifying the Design......................................................................... first you install Essbase....... For detailed information about building applications and databases.....................................................................................69 Analyzing and Planning................ Using a case study.... see Chapter 57........................................... and then you design and create an application and databases....4 In This Chapter Case Study: Designing a SingleServer................ “Comparison of Aggregate and Block Storage.............. Multidimensional Database Process for Designing a Database ..........67 Case Study: The Beverage Company..........85 Defining Reports ................................” Process for Designing a Database As illustrated in Figure 26........................................................................... distributed approach best serves your needs.................. You analyze data sources and define requirements very carefully and then decide whether a single-server approach or a partitioned.... For detailed information on the differences between aggregate and block storage...............” Note: The information in this chapter is designed for block storage databases.................... Some of the information is not relevant to aggregate storage databases..............................................................................................................80 Checking System Requirements ................................................. For criteria that you can review to decide whether to partition an application.............................

Check system requirements. 3. 4. See “Defining Reports” on page 94. Load test data into the database. See “Drafting Outlines” on page 80. Analyze business needs and design a plan. Define reports. See “Checking System Requirements” on page 85. you design report layouts and run reports. Therefore. Multidimensional Database . 68 Case Study: Designing a Single-Server. The application and database that you create must satisfy the information needs of your users and your organization. See “Defining Calculations” on page 85. After an outline and a security plan are in place. If you plan to provide predefined reports to users. How you meet system requirements and define system parameters affects the efficiency and performance of the database. and design a database model. you load the database with test data to enable the later steps of the process. review security considerations. Draft a database outline. define user information access needs. See “Analyzing and Planning” on page 69. 6. you identify source data. You test outline consolidations and write and test formulas and calculation scripts for specialized calculations. 2. See “Loading Test Data” on page 85. Users access data through print and online reports and spreadsheets or on the Web. The outline determines the structure of the database—what information is stored and how different pieces of information relate to one another. 5. Define calculations.Figure 26 The Database Design Cycle The database design process includes the following basic steps: 1.

TBC has determined that Essbase is the best tool for creating a centralized repository for financial data. See “Verifying the Design” on page 95. consider these factors: ● How information flows within the company—who uses what data for what purposes Case Study: The Beverage Company 69 . TBC manufactures. Analyzing and Planning The design and operation of an Essbase multidimensional database play a key role in achieving a well-tuned system that enables you to analyze business information efficiently. and prospective database elements can save you development and implementation time. Last month. 8. To ensure that the database satisfies your user goals. Verify with users. the process of deriving and analyzing data is tedious. developing an optimized database is critical. Repeat the process. and distributes soft drink products internationally. Analysts at TBC prepare budget forecasts and compare performance to budget forecasts on a monthly basis. The planning and analysis phase involves three tasks: ● ● ● ● “Analyzing Source Data” on page 70 “Identifying User Requirements” on page 71 “Planning for Security in a Multiple User Environment” on page 71 “Creating Database Models” on page 71 When designing a multidimensional application. Given the size and performance volatility of multidimensional databases. TBC has a variety of users. The data repository will reside on a server that is accessible to analysts throughout the organization. Users will have access to the server and will be able to load data from various sources and retrieve data as needed. so TBC expects that different users will have different security levels for accessing data. To fine-tune the design. analysts spent most of their time entering and rekeying data and preparing reports. repeat steps 1 through 7.7. TBC uses spreadsheet packages to prepare budget data and perform variance reporting. TBC is a variation of the Sample Basic application that is included with the Essbase installation. A detailed plan that outlines data sources. Because TBC plans and tracks a variety of products over several markets. solicit and carefully consider user opinions. Case Study: The Beverage Company This chapter bases the database planning process on the needs of a fictitious company called The Beverage Company (TBC) and uses TBC as an example to demonstrate how to build an Essbase database. markets. The financial measures that analysts track are profit and loss and inventory. user needs.

If an organization has thousands of product families containing hundreds of thousands of products. Carefully define reporting and analysis needs. evaluate the source data to be included in the database. Analyzing Source Data First. you may want to store data values only for product families. how they process data today. Is all data that you want to use readily available? ● 70 Case Study: Designing a Single-Server. Determine the scope of the database. ● ● ● Where does each department currently store data? Is data in a form that Essbase can use? Do departments store data in a DB2 database on an IBM mainframe. in a relational database on a UNIX-based server. Currency conversion applications generally consist of a main database and a separate currency database (see Chapter 12. or in a PC-based database or spreadsheet? Who updates the database and how frequently? Do the individuals who need to update data have access to the data? ● ● Make sure that the data is ready to load into Essbase. ● ● Does data come from a single source or from multiple sources? Is data in a format that Essbase can use? For a list of valid data sources that you can load into Essbase.● The types of reporting the company does—what types of data must be included in the outline to serve user reporting needs Note: Defining only one database per application enables enhanced memory usage and ease of database administration. Think about where the data resides and how often you plan to update the database with the data. and how they want to process data in the future. see “Data Sources” on page 242. Interview members from each user department to find out what data they process. This up-front research saves time when you create the database outline and load data into the Essbase database. ● ● ● ● How do users want to view and analyze data? How much detail should the database contain? Does the data support the desired analysis and reporting goals? If not. “Designing and Building Currency Conversion Applications”). Multidimensional Database . what additional data do you need and where can you find the needed data? Determine the location of the current data. Applications that use the optional Essbase Currency Conversion module are an exception to this recommendation.

● ● ● What types of analysis do users require? What summary and detail levels of information do users need? Do some users require access to information that other users should not see? Planning for Security in a Multiple User Environment You must consider user information needs when you plan how to set up security permissions. Most businesses choose to analyze the following areas: ● ● ● ● ● ● ● Time periods Accounting measures Scenarios Products Distribution channels Geographical regions Business units Use the following topics to help you gather information and make decisions: ● ● ● “Identifying Analysis Objectives” on page 72 “Determining Dimensions and Members” on page 72 “Analyzing Database Design” on page 75 Analyzing and Planning 71 .Identifying User Requirements Discuss information needs with users. identify the perspectives and views that are important to your business. “User Management and Security”. Determine the following requirements. and as a group. These views translate into the dimensions of the database model. End your analysis with a list of users and permissions. Review the information they use and the reports they must generate for review by others. To build the model. Use this checklist to plan for security: ● ● ● Who are the users and what permissions should they have? Who should have load data permissions? Which users can be grouped. given similar permissions? See Chapter 37. create a model of the database on paper. Creating Database Models Next.

Relationships Among Dimensions Next. Each business area that you analyze provides a different view of the data. how do you define the regions? Do you define regions by sales territories? Do you define regions by geographical boundaries such as states and cities? If analyzing by product line. The structure of an Essbase database makes it easy for users to analyze information from many different perspectives. do you need to review data for each specific product? Can you summarize data into product classes? ● ● Regardless of the business area. If you need to analyze a business area by classification or attribute. Months within a quarter consolidate to a total for each quarter. such as quarters. A financial analyst. such as by the size or color of products. When you know approximately what dimensions and members you need. the next step in designing an Essbase database is deciding how the database enables data analysis: ● If analyzing by time. Each quarter and month becomes a member of the dimension that you create for time. consider the relationships among the business areas. which time periods are needed? Does the analysis need to include only the current year or multiple years? Does the analysis need to include quarterly and monthly data? Does the analysis need to include data by season? If analyzing by geographical region. months. and within quarters. These elements become the members of their respective dimensions. you can use attribute dimensions to represent the classification views. For example. review the following topics and develop a tentative database design: ● ● ● “Relationships Among Dimensions” on page 72 “Example Dimension-Member Structure” on page 73 “Checklist for Determining Dimensions and Members” on page 74 After you determine the dimensions of the database model. Determining Dimensions and Members You can represent each business view as a separate standard dimension in the database. Quarters and months represent a two-level hierarchy of members and their children. With Essbase. The dimensions that you choose determine what types of analysis you can perform on the data.Identifying Analysis Objectives After you identify the major areas of information in a business. A typical Essbase database contains at least seven standard dimensions (non-attribute dimensions) and many more attribute dimensions. a perspective of time may include the time periods that you want to analyze. Multidimensional Database . may ask the following questions: 72 Case Study: Designing a Single-Server. you can use as many dimensions as you need for analysis. choose the elements or items within the perspective of each dimension. for example. you need to determine the perspective and detail needed in the analysis.

Feb. May. members in column 3 are divided into another level of subcategories. Another dimension which provides a different point of view. account. and scenario. such as Budget for budget values and Actual for actual values. ● ● Figure 27 Cube Representing Three Database Dimensions The cells within the cube. The dimensions represent the major business areas to be analyzed. is displayed along the Y-axis. Mar Apr. the Margin of the Measures dimension is divided into Sales and COGS. In some cases. Sep Dimensions Year Analyzing and Planning 73 . the actual sales in January. An accounts dimension. and Margin%. with one dimension represented along each of the three axes: ● A time dimension. the analyst may want to examine information from three different perspectives —time. Example Dimension-Member Structure Table 2 shows a summary of the TBC business areas that the planner determined would be dimensions. The planner created three columns. Aug. Feb. and Mar and the total for Qtr1. is displayed along the Z-axis. for example. COGS. for example. Table 2 TBC Sample Dimensions Members Qtr1 Qtr2 Qtr3 Child Members Jan. contain the data relevant to all three intersecting members. Margin. which consists of the individual months Jan. where the members intersect. which consists of accounting figures such as Sales. is displayed along the X-axis. Jun Jul. The members in column 3 are subcategories of the members in column 2.● What are sales for a particular month? How does this figure compare to sales in the same month over the last five years? By what percentage is profit margin increasing? How close are actual values to budgeted values? ● ● In other words. with the dimensions in the left column and members in the two right columns. The sample database shown in Figure 27 represents these three perspectives as three dimensions.

Strawberry (400-30) Connecticut. Wisconsin In addition. Payroll. New Mexico. Orange (400-20). Oregon. Additions. Texas Colorado. Miscellaneous Measures Profit Inventory Ratios Product Colas (100) Root Beer (200) Cream Soda (300) Fruit Soda (400) Market East West South Central Scenario Actual Budget Variance Variance % Opening Inventory. Ending Inventory Margin %. Sarsaparilla (200-30). Diet Cream Soda (300-30) Grape (400-10). Massachusetts. Diet Cola (100-20). New York California. Profit per Ounce Cola (100-10). the planner added two attribute dimensions to enable product analysis based on size and packaging: Table 3 TBC Sample Attribute Dimensions Members Large Small Child Members 64. Profit %. Utah. Birch Beer (200-40) Dark Cream (300-10).Dimensions Members Qtr4 Child Members Oct. Missouri. COGS Total Expenses: Marketing. Dec Margin: Sales. Nov. Iowa. New Hampshire. Illinois. 12 Dimensions Ounces Pkg Type Bottle Can Checklist for Determining Dimensions and Members Use the following checklist when determining the dimensions and members of your model database: ● What are the candidates for dimensions? 74 Case Study: Designing a Single-Server. Vanilla Cream (300-20). Nevada. 32. Ohio. 20 16. Oklahoma. Caffeine Free Cola (100-30) Old Fashioned (200-10). Diet Root Beer (200-20). Florida. Multidimensional Database . Washington Louisiana.

keep it and apply more analysis rules until you feel confident about deleting or keeping it. See “Designing an Outline to Optimize Performance” on page 83. For a basic introduction. Consider the design for a company that sells products to multiple customers over multiple markets. The guidelines are processes or questions that help you achieve an efficient design and meet consolidation and calculation goals.● Do any of the dimensions classify or describe other dimensions? These dimensions are candidates for attribute dimensions. Standard and Attribute Dimensions For simplicity. see “Sparse and Dense Dimensions” on page 54. What are the candidates for members? How many levels does the data require? How does the data consolidate? ● ● ● ● Analyzing Database Design While the initial dimension design is still on paper. Use the information in the following topics to analyze and improve your database design: ● ● ● ● ● ● ● “Dense and Sparse Dimensions” on page 75 “Standard and Attribute Dimensions” on page 75 “Dimension Combinations” on page 77 “Repetition in Outlines” on page 78 “Interdimensional Irrelevance” on page 78 “Reasons to Split Databases ” on page 79 “Checklist to Analyze the Database Design” on page 79 Dense and Sparse Dimensions Which dimensions are sparse and which dense affects performance. The number of members needed to describe a potential data point should determine the number of dimensions. If you are not sure that you should delete a dimension. the markets are unique to each customer: New York Illinois California Cust A 100 N/A N/A Cust B N/A 150 N/A Cust C N/A N/A 30 Analyzing and Planning 75 . the examples in this topic show alternative arrangements for what was initially designed as two dimensions. you should review the design according to a set of guidelines. Do users want to qualify their view of a dimension? The categories by which they qualify a dimension are candidates for attribute dimensions. You can apply the same logic to all combinations of dimensions. The guidelines help you to fine-tune the database and leverage the multidimensional technology.

Cust C and Cust F are in California. the company can ship to a customer that has locations in different markets: Cust A New York Illinois California 100 N/A 150 Cust B 75 150 N/A Cust C N/A N/A 30 Cust A is in New York and California. The company associates the members of the Market dimension as attributes of the members of the Customer dimension. and Cust P are in Illinois. Customer (Standard dimension) Cust A (Attribute:New York) Cust B (Attribute:Illinois) Cust C (Attribute:California) Cust E (Attribute:New York) Cust F (Attribute:California) Cust M (Attribute:Illinois) Cust P (Attribute:Illinois) Market (Attribute dimension) New York Illinois California Consider another situation. as an attribute dimension. and Cust C is only in California. the company sells products to multiple customers over multiple markets but.Cust A is only in New York. if you look at a larger sampling of data. Therefore. The members of the Market dimension describe locations of the customers. Cust C is only in California. Multidimensional Database . Cust A and Cust E are in New York. The company can define the data in one standard dimension: Market New York Cust A Illinois Cust B California Cust C However. Again. Cust B is in New York and Illinois. the company typically defines the large dimension. Cust B. Market. Using an attribute dimension does not work in this situation. Cust B is only in Illinois. a customer member cannot have more than one attribute member. as a standard dimension and the smaller dimension. Customer. Cust M. In this situation. you may see that there can be many customers in each market. the company designs the data in two standard dimensions: Customer Cust A Cust B Cust C Market New York Illinois California 76 Case Study: Designing a Single-Server.

proposed dimensions at TBC (as listed in Table 2 on page 73) include the following combinations: ● ● ● ● ● ● ● ● ● ● ● Year across Measures Year across Product Year across Market Year across Scenario Measures across Product Measures across Market Measures across Scenario Market across Product Market across Scenario Scenario across Product Ounces across Pkg Type As attribute dimensions associated with the Product dimension. you can draw a matrix and include a few of the first generation members. Figure 28 Analyzing Dimensional Relationships For each combination of dimensions. Ideally. For example. the answers to all questions should be yes. the answers to the questions help determine if the combination is valid for the database. Ounces and Pkg Type can be considered with the Product dimension. Figure 28 shows a simplified set of matrixes for three dimensions. Analyzing and Planning 77 .Dimension Combinations Break each combination of two dimensions into a two-dimensional matrix. To help visualize each dimension. ask three questions: ● ● ● Does it add analytic value? Does it add utility for reporting? Does it avoid an excess of unused combinations? For each combination. If all answers are not yes.

as shown in the second example. discuss information needs with users. Here is an example of repetition and a solution: Separating Budget and Actual and placing them into another dimension simplifies the outline and provides a simpler view of the budget and actual figures of the other dimensions in the database. You can avoid the repetition of the left column and simplify the design of the outline by creating a Diet attribute dimension. As you work through this process. Multidimensional Database . Attribute dimensions also provide additional analytic capabilities. Repetition in Outlines The repetition of elements in an outline often indicates a need to split dimensions.you should consider rearranging the data into dimensions that are more meaningful. For a review of the advantages of using attribute dimensions. Interdimensional Irrelevance Interdimensional irrelevance occurs when many members of a dimension are irrelevant across other dimensions. In such a situation. see “Designing Attribute Dimensions” on page 160. 78 Case Study: Designing a Single-Server. The left column of this table uses shared members in the Diet dimension to analyze diet beverages. Essbase defines irrelevant data as data that Essbase stores only at the summary (dimension) level. you may be able to remove a dimension from the database and add its members to another dimension or split the model into separate databases.

TBC decided to create a separate Human Resources (HR) database. did you ask: ❍ Does it add analytic value? Analyzing and Planning 79 . Table 4 Interdimensional Irrelevance Example Joe Smith Mary Jones Mike Garcia All Employees x x x x x x x x x x x Revenue Variable Costs COGS Advertising Salaries Fixed Costs Expenses Profit Reasons to Split Databases Because individual employee information is irrelevant to the other information in the database. Only the Salary measure is relevant to individual employees. Members of the proposed Employee dimension are compared with members of the Measures dimension.For example. There are many reasons for splitting a database. TBC considered separating employees into a separate dimension. Each subsidiary relies on time-sensitive financial calculations. and 401(k) plans. But salary information often proves to be irrelevant in the context of a corporate database. Most salaries are confidential and apply to specific individuals. benefits. for example. The new HR database contains a group of related dimensions and includes salaries. You may want to split the database for groups of subsidiaries in the same time zone to ensure that financial calculations are timely. Checklist to Analyze the Database Design Use the following checklist to analyze the database design: ● ● Have you minimized the number of dimensions? For each dimensional combination. TBC considered analyzing salaries as a member of the Measures dimension. The individual and the salary typically represent one cell. You can also use a partitioned application to separate information by subsidiary. insurance. suppose that a company maintains an organizational database that contains several international subsidiaries located in several time zones. with no reason to intersect with any other dimension. and also because adding an Employee dimension substantially would increase database storage needs. Table 4 shows an example of how TBC analyzed the proposed Employee dimension for interdimensional irrelevance.

and build the first draft of the outline in Essbase. consolidates to quarters. quarterly. Product. and four regions make up a market. calculations and formulas. Missouri. or Central. Payroll. Each product consolidates to its respective family (100. ● ● ● ● 80 Case Study: Designing a Single-Server. and Profit per Ounce from these measures. The Product codes are 100-10. TBC needs to collect data monthly and summarize the monthly data by quarter and year. New York. stored in members such as Qtr1 and Qtr2. 300-10. because each product is associated with members of the Ounces and Pkg Type attribute dimensions. 400-20. stored in members such as Jan. members. The states are Connecticut. TBC needs to calculate Measures on a monthly. Utah. and Ounces. 100-30. Quarterly data. Each region consolidates into Market.❍ ❍ ● ● ● Does it add utility for reporting? Does it avoid an excess of unused combinations? Did you avoid repetition in the outline? Did you avoid interdimensional irrelevance? Did you split the databases as necessary? Drafting Outlines Now you can create the application and database. 200-20. Texas. Nevada. The planners also used product codes rather than product names to describe products. Additions. Oklahoma. Measures. 200-10. and reporting requirements. ● Year. Managers must monitor and track budgets and actuals. Monthly data. Use the outline to design consolidation requirements and identify where you need formulas and calculation scripts. as well as the variance and variance percentage between them. Scenario. and 400-30. 200-40. Massachusetts. Washington. Each consolidation allows TBC to analyze by size and package. 300-20. 200. and consolidations. TBC derives and tracks budget data versus actual data. 100-20. Miscellaneous. and Ending Inventory are standard measures. 200-30. Essbase can calculate Margin. New Hampshire. Cost of Goods Sold. Iowa. Total Inventory. Louisiana. Measures. West. The TBC planners issued the following draft for a database outline. create an Essbase application to contain it. Total Expenses. Feb. Several states make up a region. Colorado. Ohio. Illinois. Profit %. and Mar. Scenario. Observe how TBC anticipated consolidations. and Wisconsin. and yearly basis. Market. South. consolidates to Year. Profit. The draft defines all dimensions. Opening Inventory. Market. Oregon. 300-30. 300. New Mexico. Note: Before you create a database and build its outline. Pkg Type. Product. Marketing. Each state consolidates into its respective region— East. 400-10. Florida. California. Margin %. Multidimensional Database . Sales. and 400). the bold words are the dimensions—Year. In this plan.

TBC wants to see the effect that product packaging has on sales and profit. See “Consolidation of Dimensions and Members” on page 86. Database:Design Year (Type: time) Measures (Type: accounts) Product Market Scenario Pkg Type (Type: attribute) Ounces (Type: attribute) Table 5 defines each Essbase dimension type. Formulas. Establishing the Ounces attribute dimension helps users to monitor which sizes sell better in which markets. See “Dimension Types” on page 81. The most commonly used dimension types are time. see Chapter 9.● Pkg Type. accounts. ● The following topics present a review of the basics of dimension and member properties and a discussion of how outline design affects performance: ● ● ● ● ● “Dimension and Member Properties” on page 81 “Dimension Types” on page 81 “Member Storage Properties” on page 82 “Checklist for Dimension and Member Properties” on page 83 “Designing an Outline to Optimize Performance” on page 83 Dimension and Member Properties The properties of dimensions and members define the roles of the dimensions and members in the design of the multidimensional structure. TBC sells products in different sizes in ounces in different market areas. Establishing the Pkg Type attribute dimension enables users to analyze product information based on whether a product is packaged in bottles or cans. “Setting Dimension and Member Properties. See “Formulas and Functions” on page 90. Consolidation operators. For a complete list of dimension and member properties. These properties include the following: ● ● ● ● Dimension types and attribute associations. This topic uses the following dimensions of the TBC database to illustrate dimension types.” Dimension Types A dimension type is a property that Essbase provides that adds special functionality to a dimension. Data storage properties. Drafting Outlines 81 . and attribute. Ounces. See “Member Storage Properties” on page 82.

you can change a store data member to label only member. you can specify the type of currency used in each member. This dimension type is used only in the main database and is only for currency conversion applications. In a country dimension. such as bottle or can. by default. see “Accounts Dimension Calculations” on page 89. Canadian dollars. The time dimension enables several accounts dimension functions. You can change the default logic for each member by changing the data storage property tag for the member. Dimension Types None Time Accounts Attribute Contains members that can be used to classify members of another. Member Storage Properties You can specify data storage properties for members. and makes Essbase built-in accounting functionality available. for example. Only one dimension can be defined as accounts. The data associated with the member is not calculated until requested by a user. members are tagged as store data. it is discarded after the request is completed. data storage properties define where and when consolidations are stored. For example. The data associated with the member comes from another member with the same name. For example. For example. Canada has three markets—Vancouver. and the local currency members may contain values that are based on the currency type of their region. and Montreal. Contains items that you want to measure. do not have data associated with them. Toronto. The calculated data is not stored. the Pkg Type attribute dimension contains a member for each type of packaging. Essbase sums the values of store data members and stores the result at the parent level. such as profit and inventory. Table 6 describes Essbase data storage properties. The data associated with the member is not calculated until it is requested by a user. The base currency for analysis may be US dollars. associated dimension. Multidimensional Database . Defines the time periods for which you report and update data.Table 5 Dimension Types Description Specifies no particular dimension type. Country Contains data about where business activities take place. such as first and last time balances. They use the same currency type. You can tag only one dimension as time. that applies to members of the Product dimension. Storage Properties Store data Dynamic Calc Dynamic Calc and Store Shared member 82 Case Study: Designing a Single-Server. Members with the label only tag. Table 6 Essbase Data Storage Properties Effects on Members The member stores data. The calculated data is then stored. For discussion of two forms of account dimension calculation. For example. Store data is the default storage property. Currency partition Separates local currency members from the base currency defined in the application.

Margin %. place the most queried sparse dimensions before the less queried sparse dimensions. the member Ratios has three children. did you identify a currency partition dimension? Can you identify qualities or characteristics of dimensions that should be defined as separate attribute dimensions? What members require special data storage properties? ● ● Designing an Outline to Optimize Performance Position attribute dimensions at the end of the outline. The label only tag groups members and eases navigation and reporting. The member Ratios defines a category of members. in the Measures dimension. Ratios is tagged as label only.Never share The data associated with the member is duplicated with the parent and its child if an implied shared relationship exists. Hence. Typically. Position dense dimensions before sparse dimensions. Label only Checklist for Dimension and Member Properties ● ● ● Can you identify a time dimension? Can you identify an accounts dimension? Does the data include foreign currencies? If so. Profit%. The position of dimensions in an outline and the storage properties of dimensions can affect two areas of performance—how quickly calculations are run and how long it takes users to retrieve information. When consolidated. Although a label only member has no data associated with it. it can still display a value. For example. use the following guidelines when you design an outline: ● If the outline contains attribute dimensions. and Profit per Ounce. Use the following topics to understand performance optimization basics: ● ● ● “Optimizing Query Performance” on page 83 “Optimizing Calculation Performance” on page 84 “Meeting the Needs of Both Calculation and Retrieval” on page 84 Optimizing Query Performance To optimize query performance. In the outline. and Profit per Ounce do not roll up to a meaningful figure for Ratios. label only members are not calculated. ● The outline shown in Figure 29 is designed for optimum query performance: Drafting Outlines 83 . Profit%. make sure that the attribute dimensions are the only sparse Dynamic Calc dimensions in the outline. Margin%.

Market. starting with the dimension that contains the fewest members. order the sparse dimensions in the outline by their number of members. the storage property for standard dimensions and all standard dimensions members is set as store data. is immediately above the first attribute dimension. Base dimensions are typically queried more than other dimensions. How often do you expect to update and recalculate the database? What is the nature of user queries? What is the expected volume of user queries? 84 Case Study: Designing a Single-Server. ● Meeting the Needs of Both Calculation and Retrieval Even though they contain the same dimensions.Figure 29 Designing an Outline for Optimized Query Times ● Because the outline contains attribute dimensions. As the most-queried sparse dimension. the Product dimension is the first of the sparse dimensions. If the outline did not contain attribute dimensions. is the first of the sparse dimensions in the outline. Multidimensional Database . Product. the Product dimension would be at the end of the outline. prioritize the data retrieval requirements of the users against the time needed to run calculations on the database. the example outlines of Figure 29 and Figure 30 are different. ● Optimizing Calculation Performance To optimize calculation performance. See “Designing for Calculation Performance” on page 863. The largest standard dimension that is sparse. To determine the best outline sequence for a situation. The outline shown in Figure 30 is designed for optimum calculation performance: Figure 30 Designing an Outline for Optimized Calculation Times ● The smallest standard dimension that is sparse.

“Performing and Debugging Data Loads or Dimension Builds” Chapter 19. This final test may reveal source data problems that were not anticipated during earlier design process phases. “Optimizing Essbase Caches.” ● ● Loading Test Data Before you can test calculations. you need data in the database. basic noncalculated data is called input data. See “Estimating Memory Requirements” on page 1031. During the design process. Make sure that you have enough memory. remember to resequence the dimensions in the outline to optimize calculation. “Understanding Data Loading and Dimension Building” Chapter 16. you can manually resequence the dimensions to optimize retrieval. Fields. Use the test rules files if possible. “Using a Rules File to Perform Operations on Records. The following topics use the Product and Measures dimensions of the TBC application to illustrate several types of common calculations that are found in many Essbase databases: ● ● “Consolidation of Dimensions and Members” on page 86 “Tags and Operators on Example Measures Dimension” on page 88 Checking System Requirements 85 . Make sure that your caches are set correctly. Data that is derived from a calculation is called calculated data. See “Determining Disk Space Requirements” on page 1018. “Creating Rules Files” Chapter 17. consolidations. After you run the calculations. See Chapter 52. loading mocked-up data or a subset of real data provides flexibility and shortens the time required to test and analyze results. Detailed instructions for loading data are in the following chapters: ● ● ● ● ● Chapter 15.A possible workaround is initially to position the dimensions in the outline to optimize calculation. When you save the outline after you reposition its dimensions. ● Make sure that you have enough disk space. choose to restructure the database by index only. and Data” Chapter 18. test load the complete set of real data with which you will populate the final database. “Understanding Advanced Dimension Building Concepts” If you are satisfied with your database design after the preliminary test. Checking System Requirements Now you are ready to determine the system requirements for the database. Defining Calculations Calculations are essential to derive certain types of data. Before you run calculations again. and reports.

States roll up to regions. and regions consolidate into Market. and product families consolidate into Product. Months roll up into quarters. as shown in Figure 31. and ~ (no consolidation). %. “Understanding Intelligent Calculation” Consolidation of Dimensions and Members When you define members of standard dimensions. 100-20. “Developing Custom-Defined Calculation Functions” Chapter 24. Essbase adds 100-10. This topic uses the Product dimension to illustrate consolidations. you can change a member consolidation property to one of the following operators: -. 100. see the following chapters: ● ● ● Chapter 20. and 100-30 and stores the result in their parent. /. ● ● The following topics discuss consolidation in greater detail: ● ● ● “Effect of Position and Operator on Consolidation” on page 87 “Consolidation of Shared Members” on page 88 “Checklist for Consolidation” on page 88 Consolidation operators define how Essbase rolls up data for each member in a branch to the parent. some products must consolidate in multiple categories. *. 86 Case Study: Designing a Single-Server. Multidimensional Database .● ● ● ● “Accounts Dimension Calculations” on page 89 “Formulas and Functions” on page 90 “Dynamic Calculations” on page 92 “Two-Pass Calculations” on page 93 For information on block storage calculations. and quarters consolidate into Year. For example. The TBC outline also requires multiple consolidation paths. The TBC application has several consolidation paths: ● Individual products roll up to product families. Essbase automatically tags the members with the addition (+) consolidator. meaning that during consolidation members are added. Consolidation is the most frequently used calculation in Essbase. “Calculating Essbase Databases” Chapter 30. As appropriate. using the default operator (+).

operators. Table 7 shows the Essbase consolidation operators. in order. which indicate that each group of members is added and rolled up to the parent. Essbase multiplies the member by -1 and then adds the product to the result of previous calculations performed on members of the branch. Product. When a member has the – operator. so TBC created a separate Diet member that does not impact overall consolidation. Table 7 Consolidation Operations Description The default operator. Effect of Position and Operator on Consolidation Essbase calculates the data of a branch in top-down order. Essbase multiplies the member by the result of previous calculations performed on members of the branch. if you have. For an example of how Essbase applies operators. When a member has the + operator. When a member has the * operator. Essbase adds the member to the result of previous calculations performed on members of the branch. two members tagged with an addition symbol (+) and a third member tagged with a multiplication symbol (*). see “Calculating Members with Different Operators” on page 137. Since Essbase always begins with the top member when it consolidates. which indicates that Essbase does not include the Diet member in the consolidation to the parent. The TBC product management group wants to be able to isolate Diet drinks in reports. For example.Figure 31 TBC Product Dimension The Product dimension contains mostly (+). Operator + – * Defining Calculations 87 . The Diet member consists entirely of members that are shared . Essbase adds the first two and multiplies the sum by the third. Diet has a tilde (~). so the order and the labels of the members is very important.

so Essbase stores the data only once. Essbase divides the member into the sum of previous calculations performed on members of the branch. It also contains formulas and special tags to help Essbase calculate the outline. Essbase does not use it in the consolidation to its parent. This topic discusses the formulas and tags that TBC included in the Measures dimension (the dimension tagged as accounts). When a member has the ~ operator.Operator / Description When a member has the / operator. Take a moment to look closely at the Measures dimension tags defined by TBC (in Figure 32). negative (–). The shared member stores a pointer to data contained in the other member. Data can be shared by two or more members. % ~ Consolidation of Shared Members Shared members also affect consolidation paths. Many of the properties of the Measures dimension are discussed in previous topics of this chapter: positive (+). Multidimensional Database . Checklist for Consolidation Use the following checklist to help define consolidation: ● ● ● ● Have you identified the consolidations in the outline? Did you tag each member with the proper consolidation operator? Did you specify a shared member tag for designated members? Would shared members be more efficient if designed within an attribute dimension (other than shared)? Tags and Operators on Example Measures Dimension The Measures dimension is the most complex dimension in the TBC outline because it uses both time and accounts data. The shared member concept enables two members with the same name to share the same data. The result is multiplied by 100. and tilde (~) consolidation operators as well as accounts and label only tags: 88 Case Study: Designing a Single-Server. When a member has the % operator. Shared members must be in the same dimension. Essbase divides the member into the result of previous calculations performed on members of the branch.

Using the tags requires a dimension tagged as accounts and a dimension tagged as time. Opening Inventory requires the time balance tag. TB first. The quarterly value for Opening Inventory is equal to the Opening value for the quarter. average. Dynamic calculations are discussed in “Dynamic Calculations” on page 92. last. The quarterly value for Ending Inventory is equal to the ending value for the quarter.Figure 32 TBC Measures Dimension ● The Inventory and Ratios member names assist the user in data navigation and do not contain data and. These tags. therefore. Ending Inventory data represents the inventory that TBC carries at the end of each month. and expense tags are available exclusively for use with accounts dimension members. TB last. Some members of Measures have a time balance tag (TB First or TB Last). receive a label only tag. The first. called time balance tags or properties. Table 8 shows the time balance tags for the accounts dimension. provide instructions to Essbase about how to calculate the data in a dimension tagged as accounts. The Measures dimension itself has a label only tag. Some members of Measures have a Dynamic Calc tag. Opening Inventory data represents the inventory that TBC carries at the beginning of each month. Defining Calculations 89 . Ending Inventory requires the time balance tag. In the TBC Measures dimension. Time balance tags are discussed in “Setting Time Balance Properties” on page 133. ● ● Accounts Dimension Calculations This topic discusses two forms of calculations for a dimension tagged as accounts: ● ● “Time Balance Properties” on page 89 “Variance Reporting” on page 90 Time Balance Properties Note the two tags in the Measures dimension of Table 9—TB first and TB last.

For example. Variance reporting properties define how Essbase calculates the difference between actual and budget data in members with the @VAR or @VARPER function in their member formulas. Inventory members. Tags Time Balance Last Time Balance First The QTR1 and Year columns inTable 9 show how consolidation in the time dimension is affected by time balance properties in the accounts dimension. This topic explains how TBC optimized the performance of its database by using formulas. the calculation of a parent in the time dimension is based on the consolidation and formulas of children of the parent. Without the expense reporting tag. and the COGS member each receive an expense reporting tag for variance reporting. the variance is 10. Formulas and Functions Formulas calculate relationships between members in the database outline. When you tag a member as expense. Jan is carried to Qtr1. see “Setting Time Balance Properties” on page 133. the @VAR function calculates Budget . Multidimensional Database .Budget. The default is non-expense. For example. For examples. March is carried to Qtr1. if the budgeted amount is $100 and the actual amount is $110. Essbase provides two variance reporting properties—expense and non-expense. or you can place formulas in a calculation script. if a member in an accounts branch is marked as TB First. The value for the first child is carried to the parent. For example.Actual. However. Variance Reporting One of the TBC Essbase requirements is the ability to perform variance reporting on actual versus budget data. if the budgeted amount is $100 and the actual amount is $110. details are shown only for first quarter: Table 9 TBC Consolidations Affected by Time Balance Properties Jan 11 20 25 Feb 12 25 21 Mar 13 21 30 Qtr1 36 20 30 Year Qtr1 + Qtr2 + Qtr3 + Qtr4 20 Value of Qtr4 Accounts -> Time Accounts Member1 Accounts Member2 (TB First) Accounts Member3 (TB Last) Normally. the @VAR function calculates Actual . The variance reporting calculation requires that any item that represents an expense to the company must have an expense reporting tag. the variance is -10. You can apply formulas to members in the outline. Total Expense members. For example.Table 8 Accounts Member Tags Description The value for the last child member is carried to the parent. 90 Case Study: Designing a Single-Server. any parent in the time dimension matches the member marked as TB First.

which look up data values within a database during a calculation based on the position of the current member. which provide a conditional test by returning a TRUE or FALSE value Mathematical functions. which calculate advanced statistics Date and time functions. Formulas are composed of operators and functions. The Profit per Ounce Defining Calculations 91 . which perform specialized mathematical calculations Relationship functions. as well as dimension names. which specify the calculation mode that Essbase uses to calculate a formula ● ● ● ● ● ● ● ● The Measures dimension uses the following formulas: ● ● ● ● ● ● Margin = Sales . which manipulate data for the purpose of smoothing data.” The Profit% formula uses the same % operator. which allocate values that are input at a parent level across child members Forecasting functions.Total Expenses Profit % = Profit % Sales Margin % = Margin % Sales Profit per Ounce = Profit / @ATTRIBUTEVAL(@NAME(Ounces)) Essbase uses consolidation operators to calculate the Margin. which declare a range of members as an argument to another function or to a command Financial functions. Total Expenses. which perform specialized financial calculations Member set functions. Essbase supports the following functions: ● ● ● Boolean functions. Essbase supports the following operators: ● ● ● Mathematical operators that perform arithmetic operations Conditional operators that build logical conditions into calculations Cross-dimensional operators that point to data values of specific database member combinations The Essbase functions include over 100 predefined routines to extend the calculation capabilities of Essbase. which use date and time characteristics in calculation formulas Calculation mode functions. and numeric constants.COGS Total Expenses = Marketing + Payroll + Miscellaneous Profit = Margin .Functions are predefined routines that perform specialized calculations and return sets of members or sets of data values. which means “express Margin as a percentage of Sales. Range functions. The Margin% formula uses a % operator. interpolating data. and Profit members. which are based on a specified member and which generate lists of members Allocation functions. member names. or calculating future values Statistical functions.

and Profit %. However. for example. you can choose to store dynamically calculated values after the first retrieval. the Dynamic Calc members and their corresponding formulas are not calculated. As shown in Figure 33.formula uses a division operator (/) and a function (@ATTRIBUTEVAL) to calculate profitability by ounce for products sized in ounces. Margin %. Note: In the Profit per Ounce formula. functions. it recalculates the values for any subsequent retrieval. Total Expenses. the TBC Measures dimension contains several members that are tagged as Dynamic Calc—Profit. Dynamic Calculations When you design the overall database calculation. Also see Chapter 21. and syntax. For a complete list of operators. Multidimensional Database . Essbase calculates the combinations of that member when you retrieve the data. Figure 33 TBC Measures Dimension. When you tag a member as Dynamic Calc. from Essbase Spreadsheet Add-in for Excel. To decide when to calculate data values dynamically. Dynamic calculations shorten regular database calculation time but may increase retrieval time for dynamically calculated data values. Margin. “Developing Formulas”. These members are calculated when a user requests them. see the Essbase Technical Reference. you may want to define a member as a Dynamic Calc member. Essbase does not store the calculated values. consider your priorities in the following areas: ● ● Optimum regular calculation time (batch calculation) Low disk space usage 92 Case Study: Designing a Single-Server. Dynamic Calc Tags When an overall database calculation is performed. instead of pre-calculating the member combinations during the regular database calculation. the @NAME function is also used to process the string “Ounces” for the @ATTRIBUTEVAL function.

The data then looks as follows: Measures -> Year Profit Sales Profit % Jan 100 1000 10% Feb 100 1000 10% Mar 100 1000 10% Qtr1 Next. both Margin % and Profit % contain the label two-pass. Essbase calculates the Year dimension. The following examples illustrate why Profit % (based on the formula Profit%Sales) has a twopass tag. The data rolls up across the dimension. Essbase recalculates profit percent at each occurrence of the member Profit %. Two-Pass Calculations In the TBC database.● ● ● Reduced database restructure time Speedy data retrieval for users Reduced backup time See Chapter 25. However. Essbase loads data into the system as follows: Measures -> Year Profit Sales Profit % Jan 100 1000 Feb 100 1000 Mar 100 1000 Qtr1 Essbase calculates Measures first. The data is then correct and is displayed as follows: Defining Calculations 93 . Measures -> Year Profit Sales Profit % Jan 100 1000 10% Feb 100 1000 10% Mar 100 1000 10% Qtr1 300 3000 30% The result in Profit % -> Qtr1 of 30% is not correct. This default label indicates that some member formulas need to be calculated twice to produce the desired value. because TBC tagged Profit% as two-pass calculation. The two-pass property works only on members of the dimension tagged as accounts and on members tagged as Dynamic Calc and Dynamic Calc and Store. “Dynamically Calculating Data Values”.

a Essbase Spreadsheet Add-in for Excel user who drills down and up through the hierarchy of the outline design? Attribute reporting. printed reports. You can use the Report Script Editor in Administration Services Console to write report scripts quickly. Defining Reports To ensure the design meets user information requirements. do you need ● ● 94 Case Study: Designing a Single-Server. Do the intersections enabled by the design provide the data that users need? Levels of totals. Users typically view data through spreadsheets. See “Understanding Triggers Definitions” on page 109. for example. and test whether the database design meets user needs. Does the database design facilitate an analysis that is based on the characteristics or attributes of specific dimensions or members? For example. Multidimensional Database . Several tools can help you display and format data quickly. Triggers is licensed separately from Essbase.Measures -> Year Profit Sales Profit % Jan 100 1000 10% Feb 100 1000 10% Mar 100 1000 10% Qtr1 300 3000 10% Checklist for Calculations Use the following checklist when you define a calculation: ● ● ● ● ● ● Does the default calculation logic achieve accurate results? Which members require formulas? Which members require time balance tags? Which members require variance reporting? Which members require two-pass calculation? Which members can be tagged as Dynamic Calc? Note: The triggers feature provided by Essbase enables efficient monitoring of data changes in a database. check for the following things: ● Grouping and sequencing of data. There are many tools available through Hyperion and its partners for producing the reporting systems that users use. What consolidation levels are required by. During the design phase. you need to view data as users view it. or reports published on the Web. Those familiar with spreadsheets can use the Essbase Spreadsheet Add-in for Excel or Smart View (Smart View requires Provider Services).

reports. performance. you need to test with real data. Look at documentation topics relevant to your problem. Make sure that you check with the users to ensure that the database satisfies all of their goals. you will need to repeat one or more steps of the design process to arrive at the ideal database solution. repeat the steps of the design cycle to identify the cause of the problem. resources. You can also use the index of this guide to find help for solving problems. topics about security. Since reports with too many columns and rows are very hard to use. Do the calculations give them the information they need? Are they able to generate reports quickly? Are they satisfied with consolidation times? In short. ask users if the database works for them. Sources include application and Essbase Server logs. you may need to create a number of different reports instead of one or two all-inclusive reports. You should have already checked to see if the database satisfies the users’ analysis and reporting needs. such as comparing the sales of 16-ounce bottled colas with the sales of 32-ounce bottled colas? Be sure to use the appropriate tool to create and test predesigned use reports against the test data. Most likely. and warnings. Look up such terms as troubleshooting. Verifying the Design After you analyze the data and create a preliminary design. or general error messages. Does the outline build correctly? Does all data load? If the database fails in any area. Verifying the Design 95 . The reports should be easy to use. optimizing. and database information accessible from Administration Services. you need to check all aspects of the design with the users. The reports that you design should provide information that meets your original objectives. recovery. They should provide the right combinations of data and the right amount of data. calculations. exception logs. logs. errors. Near the end of the design cycle. Essbase provides several sources of information to help you isolate problems. for example.to compare sales by specific combinations of size and packaging.

96 Case Study: Designing a Single-Server. Multidimensional Database .

...............................99 Adding Essbase Administration Servers to Enterprise View ........................................... called Enterprise View.............. and other tools to help administrators view... platform support and system requirements.................. Administration Services provides its own set of documentation..................... a Java API Reference............................99 About Administration Services Users............................................................................................... a developer’s guide................... To view documentation.......... 100 About Essbase Administration Server .... Administration Services consists of a Java middle-tier server... a context-sensitive online help system....... and a Java client console.............................98 Deploying Administration Services ....................... see Essbase Administration Services Installation Guide.......... called Essbase Administration Server............... editors................................. 97 ... see the Essbase Administration Services Online Help. first start Essbase Administration Server and then launch the Administration Services Information Map (eas\doc_launcher.. The console includes a data preview grid that enables you to preview data without having to switch from the console to another program...98 Starting Administration Services....................... manage......... 100 About Essbase Server Connections and Ports ........................ and maintain a unique set of Essbase Servers... and a readme......................................htm in the Administration Services installation directory).................. including an installation guide...................................99 Connecting to Administration Services................................... The console provides wizards............................. 100 Administration Services is the cross-platform administration tool for Essbase................................ For procedural instructions for using Administration Services to manage Essbase........... and installation instructions... For information about release compatibility................................................................ called Administration Services Console.....................................5 In This Chapter About Administration Services Administration Services Architecture ............................. Administration Services Console is the graphical user interface (GUI) that enables administrators to manage the Essbase environment from a single navigation tree. 100 Adding Essbase Servers to Enterprise View ............

98 About Administration Services . application servers and relational databases). The middle tier coordinates interactions and resources between the UI and Essbase Servers. You can also install Essbase Administration Server and Administration Services Console on separate computers and platforms. a middle-tier server. Database tier (Essbase Server): One or more Essbase Servers store and process multidimensional database information. For example. The three tiers include the following components. Deploying Administration Services Administration Services can be deployed in a variety of scenarios. and one or more Essbase Servers. as illustrated below: Figure 34 Administration Services Architecture ● Client tier (Administration Services Console): A Java-based client console provides a UI to manage the Essbase environment. you can install Essbase Server on a computer running UNIX and install Essbase Administration Server and Administration Services Console on a computer running Windows. and security information for connections to Essbase Servers. The three tiers may or may not be on the same computer or platform. Essbase Servers are installed separately from Administration Services.Administration Services Architecture Administration Services works with Essbase Servers in a three-tiered system that consists of a client user interface (UI). Note: ● ● For information about which platforms are supported for the client and middle tier components. see the Essbase Administration Services Installation Guide. session. Middle tier (Essbase Administration Server): A Java-based server maintains communication. The middle tier Essbase Administration Server also supports the substitution of certain third-party products within the existing framework (for example.

first start Essbase Administration Server. After your initial connection to Administration Services. You can connect to different instances of Essbase Server simultaneously from Administration Services Console. You do not to create spreadsheet users on Essbase Administration Server. You can use the User Setup Wizard to step you through the process of creating Essbase Administration Server users and associating them with the appropriate Essbase Servers. and then start Administration Services Console. see your Administration Services administrator. you are automatically connected to each Essbase Server you added to Enterprise View. see the Essbase Administration Services Installation Guide. See “About Essbase Connections and Ports” in the Essbase Administration Services Online Help. To enable this functionality. see “User Setup Wizard” in the Essbase Administration Services Online Help. When you start Administration Services. See “Connecting to Administration Services” in the Essbase Administration Services Online Help. if Essbase Server is started. you can start that Essbase Server remotely from Enterprise View in Administration Services Console. Starting Administration Services To start Administration Services. See “Starting Essbase Server Remotely from Administration Services Console” on page 687.For more information about deployment scenarios and guidelines. you can use the User Setup Wizard to create Administration Services users and add Essbase Servers to each user’s Enterprise View. If you have enabled an Essbase Server for remote start. About Administration Services Users Existing Essbase users cannot use Administration Services until they have also been created as users on Essbase Administration Server. Connecting to Administration Services In Administration Services. Your Administration Services username and password may be different than your Essbase Server username and password. See “Starting Administration Services” in the Essbase Administration Services Installation Guide. Starting Administration Services 99 . you need to configure and start the Remote Start Service on the Essbase Server computer. connections to individual Essbase Servers are handled by the middle tier Essbase Administration Server. If you do not know your Administration Services username and password. ➤ To create Administration Services users.

See “About Custom Views” in the Essbase Administration Services Online Help. A system administrator uses the reserve port to log out one or more users when all other ports are in use. which is the navigation tree in the left navigation panel. Adding Essbase Servers to Enterprise View Each time you connect to Administration Services. You can also create custom views of the Enterprise View tree in separate tabs in the navigation panel. see “Adding Essbase Administration Servers to Enterprise View” in the Essbase Administration Services Online Help. See “About Essbase Connections and Ports” in the Essbase Administration Services Online Help. edit the server’s properties. right-click an Essbase Server node.Adding Essbase Administration Servers to Enterprise View Each time you connect to Administration Services. See Chapter 42. Each user can populate Enterprise View with a unique set of Essbase Administration Servers. About Essbase Administration Server The middle tier Essbase Administration Server provides business logic to support cross-server operations. You can use the following methods to add Essbase Servers to Enterprise View: ● ● ● In Enterprise View. ➤ To add Essbase Servers to Enterprise View. which is the navigation tree in the left navigation panel. “Running Essbase Servers. Essbase provides one reserve port for the system administrator. and Databases. persistence of user preferences. and select Add Essbase Server.” In Administration Services. Each user can populate Enterprise View with a unique set of Essbase Servers. For an existing server. and access to Essbase Servers. see “Adding Essbase Servers to Enterprise View” in the Essbase Administration Services Online Help. the Essbase Servers you have chosen are displayed in Enterprise View. 100 About Administration Services . Select Wizards > User Setup and follow the steps in the wizard. Applications. a port is in use only when an Essbase Server connection is established. and then Essbase Administration Server manages their connections to Essbase. the Essbase Administration Servers you have chosen are displayed in Enterprise View. About Essbase Server Connections and Ports The number of ports available for an Essbase Server represents the number of licensed concurrent connections. ➤ To add Essbase Administration Servers to Enterprise View. A system administrator creates users on Essbase Administration Server.

These ports are different from Essbase Server ports. Essbase Administration Server has several configurable communication ports. Note: If you change the value for the Essbase Administration Server port. you must specify the new port value when you log in to the Administration Services Console. see “Specifying Communication Ports for Administration Server” in the Essbase Administration Services Online Help. ➤ To change a default port value. the node name for Essbase Administration Server is the same as the server computer name. About Essbase Administration Server 101 . If one of the default communication ports is in use by another application. you need to specify another port value in order to run Essbase Administration Server.In Enterprise View.

102 About Administration Services .

Part II Designing and Creating Applications and Databases In Designing and Creating Applications and Databases: ● ● ● ● ● ● ● ● ● Creating Applications and Databases Creating and Changing Database Outlines Creating and Working With Duplicate Member Outlines Setting Dimension and Member Properties Working with Attributes Linking Objects to Essbase Data Designing and Building Currency Conversion Applications Designing Partitioned Applications Creating and Maintaining Partitions Designing and Creating Applications and Databases 103 .

104 Designing and Creating Applications and Databases .

.. Some of the information is not relevant to aggregate storage databases........... Note: The information in this chapter is designed for block storage databases...... 110 Using Location Aliases ............................................... including substitution variables and location aliases........ 106 Creating Applications and Databases................................6 In This Chapter Creating Applications and Databases Process for Creating Applications and Databases .................... 105 Understanding Applications and Databases ................................... databases....................... see the optimization and system administration information in this guide.. For information on everyday management of applications.. 2 Create an application. 3 Create a database....... Databases............” Process for Creating Applications and Databases ➤ To create an application and database: 1 Design the application...... “Aggregate Storage Applications........ 106 Understanding Database Artifacts....” For information on creating aggregate storage applications....... 109 Using Substitution Variables ... see Chapter 58................................. and their associated files............. “Comparison of Aggregate and Block Storage....................... For detailed information on the differences between aggregate and block storage............... See “Creating a Database” on page 109............. 114 An Essbase application is a container for a database and its related files................................................. See “Quick Start for Implementing Essbase” on page 43................ Process for Creating Applications and Databases 105 ......................................................................... See “Creating an Application” on page 109. see Chapter 57...................................... and Outlines... This chapter provides an overview of Essbase applications and databases and explains how to create applications and databases and some Essbase artifacts...........................................................

The server computer can store multiple applications. such as calculation scripts and LROs. application. Database artifacts perform actions against one or more Essbase databases. Understanding Database Artifacts Files that are related to databases are called artifacts (or objects). 106 Creating Applications and Databases . You cannot. artifacts are stored in their associated database folder on the Essbase Server. In Administration Services Console. By default. set substitution variables at the Essbase Server. Essbase applications and databases reside on an Essbase Server.” Understanding Applications and Databases An Essbase application is a management structure that contains one or more Essbase databases and related files. Essbase provides the following common types: ● ● ● ● ● ● ● ● A database outline (a storage structure definition) Data sources Rules for loading data and building dimensions dynamically (rules files) Scripts that define how to calculate data (calculation scripts) Scripts that generate reports on data (report scripts) Security definitions Linked reporting objects (LROs) Partition definitions Some of these artifacts are optional. See “Using Location Aliases” on page 114. See “Understanding Multidimensional Databases” on page 49 and “Storage Allocation” on page 763. A multidimensional database supports multiple views of data so that users can analyze the data and make meaningful business decisions. See Chapter 7. “Creating and Changing Database Outlines. 5 If necessary. See “Using Substitution Variables” on page 110. and can also be saved to a client computer or to other available network directories. An Essbase database is a data repository that contains a multidimensional data storage array. 6 Create the outline. load data or calculate data on a client computer. See “Application and Database File Types” on page 705. or database level. however. such as defining calculations or reporting against data. set a location alias for the database.4 If necessary. database artifacts are displayed under their associated applications or database in the Enterprise View tree.

types. Rules files are typically associated with a particular database.otl See “Creating a Database” on page 109 and Chapter 7. Rules files have the .otl). Dimension build rules files create or modify the dimensions and members in an outline dynamically based on data in an external data source. Essbase creates an outline for that database automatically. properties. The outline has the same name as the database (dbname. such as an SQL database See “Supported Data Sources” on page 242. Because calculation scripts perform specific mathematical operations on members. into the Essbase database. You can.rul extension. however. Data load rules files are sets of operations that Essbase performs on data from an external data source file as the data is loaded. For example. A single rules file can be used for both data loads and dimension builds.” Understanding Data Sources A data source is external data that is loaded into an Essbase database. or copied. The common types of data sources include the following: ● ● ● ● Text files Spreadsheet files Spreadsheet audit log files External databases. but you can define rules for use with multiple databases. define a calculation script for use with multiple databases. consolidations. an outline is created in the following directory: ARBORPATH/app/sample/basic/basic. Understanding Rules Files for Data Load and Dimension Build An Essbase database contains no data when it is first created. including all the dimensions. when the Basic database is created within the Sample application. Calculation scripts files have the . “Creating and Changing Database Outlines. The structure defined in the outline determines how data is stored in the database.Understanding Database Outlines Database outlines define the structure of a multidimensional database. members.” Understanding Calculation Scripts Calculation scripts are text files that contain sets of instructions telling Essbase how to calculate data in the database. Understanding Database Artifacts 107 . When a database is created.csc extension. they are typically associated with a particular database. and mathematical relationships. See “Rules Files” on page 247 and Chapter 16. aliases. “Creating Rules Files. Calculation scripts perform different calculations than the consolidations and mathematical operations that are defined in the database outline.

and output instructions to create a report from the database.sel extension.” Understanding Security Definitions Essbase provides a comprehensive system for managing access to applications. databases. “Linking Objects to Essbase Data. audio. “User Management and Security.” Understanding Spreadsheet Queries Within Essbase Spreadsheet Add-in for Excel. Understanding Member Select Definitions Within Essbase Spreadsheet Add-in for Excel. video.rep extension. and other artifacts. “Developing Calculation Scripts. formatting. LROs can enhance data analysis capabilities by providing additional information on a cell. users can define and save member retrievals with the member select feature. Report scripts have the . See Chapter 32. Member specification files have the . Each application and database contains its own security definitions that restrict user access. Report scripts are typically associated with a particular database. 108 Creating Applications and Databases . See the Essbase Spreadsheet Add-in for Excel User's Guide.” Understanding Report Scripts Report scripts are text files that contain data retrieval.eqd extension. “Developing Report Scripts. See the Essbase Spreadsheet Add-in for Excel User's Guide.” Understanding LROs An LRO is an artifact associated with a specific data cell in an Essbase database. users can create and save queries using Query Designer (EQD). See Chapter 37. but you can define a report script for use with multiple databases. An LRO can be any of the following: ● ● ● ● A paragraph of descriptive text (a “cell note”) A separate file that contains text. or graphics A URL for a Web site A link to data in another Essbase database See Chapter 11.See Chapter 27. Query files created using Query Designer have the . The queries can be accessed at a later time by any user with access to the query.

See Chapter 12. ➤ To create an application. Essbase creates a subdirectory for the database within the application directory. AnalyticServices/app/app1. sales for a month fall below sales for the equivalent month in the previous year. The new subdirectory has the same name as the database. for example. Creating an Application When you create an application on the Essbase Server. Before naming the application. applications and databases are displayed in a tree structure in Enterprise View. See “Monitoring Data Changes Using Triggers” on page 719. If data breaks rules that you specify in a trigger. See “Copying or Migrating Applications” on page 709. for example. to notify the sales manager if. for some triggers. Creating Applications and Databases First create an application and then create its databases. AnalyticServices/app/app1/dbname1. see “Naming Restrictions for Applications and Databases” on page 1077. The new subdirectory has the same name as the application. Essbase creates a subdirectory for the application on the Essbase Server in the ARBORPATH/app directory. In Administration Services Console. You can create normal databases or currency databases. “Designing and Building Currency Conversion Applications. Triggers is licensed separately from Essbase.Understanding Triggers Definitions The triggers feature enables efficient monitoring of data changes in a database. use a tool: Tool Administration Services MaxL ESSCMD Topic Creating Applications create application CREATEAPP Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Creating a Database When you create a database. in the Western region. You can also create an application that is a copy of an existing application. In Administration Services Console. Essbase logs relevant information in a file or. applications and databases are displayed in a tree structure in Enterprise View. You can annotate the databases. sends an email alert.” Creating Applications and Databases 109 . for example.

Users can view database notes in Essbase Spreadsheet Add-in for Excel. such as CurMnth. manual changes are reduced. use a tool: Tool Administration Services MaxL ESSCMD Topic Creating Databases create database CREATEDB Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Except for databases requiring use of the Currency Conversion option. if you generate a report based on the current month. see “Annotating Databases” in the Essbase Administration Services Online Help. Annotating a Database A database note can provide useful information in situations where you need to broadcast messages to users about the status of a database. ➤ To create a database. When you use the variable name in a report script.Before naming the database. For example. “Developing Calculation Scripts. With a substitution variable. set on the server. you can change the assigned value each month to the appropriate time period. ➤ To annotate a database. deadlines for updates. Since changes to a variable value are reflected everywhere the variable is used. Using Substitution Variables Substitution variables are global placeholders for regularly changing information. many reports depend on reporting periods. and so on. the information is dynamically updated when you run the final report. ● Calculation scripts See Chapter 27. see “Naming Restrictions for Applications and Databases” on page 1077. You can use substitution variables with both aggregate storage and block storage applications in the following areas: ● Aggregate storage outline formulas See “Using MDX Formulas” on page 937. ● Block storage outline formulas See “Using Substitution Variables in Formulas” on page 354.” 110 Creating Applications and Databases . you have to update the report script manually every month. creating one database per application is recommended.

See the Essbase Spreadsheet Add-in for Excel User's Guide. asterisks (*). “Developing Report Scripts. ● MDX statements See “Using Substitution Variables in MDX Queries” on page 559. See these Essbase Administration Services Online Help topics: “Setting Headers in the Rules File” and “Mapping Field Names. the order of precedence for the variables is as follows: a database level substitution variable supersedes an application level variable. and database levels. ● Security filters See “Filtering Using Substitution Variables” on page 647. If substitution variables with the same name exist at server. Do not use spaces. Set the variable at any of the following levels: ● Essbase Server—providing access to the variable from all applications and databases on the Essbase Server Application—providing access to the variable from all databases within the application Database—providing access to the variable within the specified database ● ● Rules for Setting Substitution Variable Names and Values The following rules apply to substitution variable names and values: ● The substitution variable name must be composed of alphanumeric characters or underscores ( _ ) and cannot exceed the limit specified in the section called “Names and Related Artifacts”on page 1010 The substitution variable name cannot include non-alphanumeric characters. or ESSCMD. ● Data source name (DSN) specifications in rules files for SQL data sources See Essbase SQL Interface Guide. ● SELECT. punctuation marks. which supersedes a server level variable.” ● Data load rules file header definitions and field definitions. FROM. You can type in variable names for dimension and member names. You can set substitution variables on the Essbase Server using Administration Services.” ● Partition definitions See “Substitution Variables in Partition Definitions” on page 197. ● ● Using Substitution Variables 111 . application. and slashes (/). such as hyphens (-). MaxL. ● Essbase Spreadsheet Add-in for Excel.● Report scripts See Chapter 32. or brackets ([]) in substitution variable names used in MDX. or WHERE clauses in rules files for SQL data sources See Essbase SQL Interface Guide.

place quotation marks around 01 (“01”). one without the value enclosed in quotation marks and one with the value in quotation marks. Note: ❍ If a substitution variable value is numeric or a member name starting with a numeral or containing the special characters referred to above is to be used both in MDX and non-MDX situations. Report Scripts. use the qualified member name enclosed in double quotation marks. Formulas. such as in formulas in aggregate storage outlines. enclose a substitution variable value in quotation marks. do not enclose the value in quotation marks. different rules apply for how you enter the variable: ❍ ❍ ● ● ● Enclose the member-name value in brackets ([ ]) if it is used in MDX statements. or database level. different rules apply for how you enter the variable: ❍ If it is not used in MDX statements. The substitution variable value cannot exceed the limit specified in the section called “Names and Related Artifacts”on page 1011 To set a substitution variable value to a duplicate member name.[&CurrentQtr]”. a value for &Period could be “[2006]. use a tool: Tool Administration Services Topic Managing Substitution Variables Location Essbase Administration Services Online Help 112 Creating Applications and Databases . Filters. do not insert a substitution variable as a part of a qualified name. ➤ To set a substitution variable. If a substitution variable value is a member name that begins with a numeral or contains spaces or any of the special characters listed in “Using Dimension and Member Names in Calculation Scripts. If it is used in MDX statements only.● The substitution variable value may contain any character except a leading ampersand (&). and the value is numeric or a member name. Setting Substitution Variables You can set substitution variables on the Essbase Server at the server. if the variable name is Month and its corresponding value is 01 (corresponding to January). create two substitution variables. For example.[Qtr1]”. see “Rules for Setting Substitution Variable Names and Values” on page 111. When specifying use of a substitution variable. Before setting a substitution variable. application. it is invalid to specify “[2004]. Most of the time substitution variables are used with block storage databases. for example. Enclose the member-name value in quotation marks (“ ”) if it is not used in MDX statements. ● If a substitution variable value is numeric. they are not used in MDX statements. and Substitution Variable Values” on page 1079. for example.

Before updating a substitution variable. and security filters. All other uses of substitution variables are dynamically resolved when used. Deleting Substitution Variables You may need to delete a substitution variable that is no longer used. stop and restart the application. partition definitions. see “Rules for Setting Substitution Variable Names and Values” on page 111. use a tool: Tool Administration Services MaxL Topic Managing Substitution Variables alter system alter application alter database ESSCMD DELETEVARIABLE Essbase Technical Reference For More Information Essbase Administration Services Online Help Essbase Technical Reference Updating Substitution Variables You can modify or update existing substitution variables. use a tool: Tool Administration Services MaxL Topic Managing Substitution Variables alter system alter application alter database ESSCMD UPDATEVARIABLE Essbase Technical Reference For More Information Essbase Administration Services Online Help Essbase Technical Reference Using Substitution Variables 113 . ➤ To delete a substitution variable.Tool MaxL Topic alter system alter application alter database Location Essbase Technical Reference ESSCMD CREATEVARIABLE Essbase Technical Reference To ensure that a new substitution variable value is available in formulas. ➤ To update a substitution variable.

and a password. Creating Location Aliases You can create a location alias for a particular database.Copying Substitution Variables You can copy substitution variables to any Essbase Server. you can retrieve a data value from another database to include in a calculation on the current database. a username. After you create a location alias. use a tool: Tool Administration Services MaxL ESSCMD Topic Creating Location Aliases create location alias CREATELOCATION Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Editing or Deleting Location Aliases You can edit or delete location aliases that you previously created. ➤ To create a location alias. application. ➤ To copy a substitution variable. the location alias points to the database from which the value is to be retrieved. See the Essbase Technical Reference. you can use the alias to refer to that database. 114 Creating Applications and Databases . Using Location Aliases A location alias is a descriptor for a data source. a server. In this case. A location alias is set at the database level and specifies an alias. edit the location definition accordingly. see “Copying Substitution Variables” in the Essbase Administration Services Online Help. A location alias maps an alias name for a database to the location of that database. With this function. a database. If the location of the database changes. an application. or database to which you have appropriate access. Note: You can use location aliases only with the @XREF function. Set the location alias on the database on which the calculation script is run.

use a tool: Tool Administration Services MaxL Topic Editing or Deleting Location Aliases display location alias drop location alias ESSCMD LISTLOCATIONS DELETELOCATION Essbase Technical Reference Location Essbase Administration Services Online Help Essbase Technical Reference Using Location Aliases 115 .➤ To edit or delete a location alias.

116 Creating Applications and Databases .

. 120 Setting Data Storage Properties ..................... see “Dimensions and Members” on page 50....... “Understanding Multidimensional Databases.... “Aggregate Storage Applications.................................. This chapter explains how to create and manage an Essbase database outline...........” For information on setting properties in an outline....................... See Chapter 57.................. 120 Positioning Dimensions and Members............................................. and Outlines................................ For more information about outlines........... Note: The information in this chapter is designed for block storage databases. For basic information about outlines.................................... To learn how to use Process for Creating Outlines 117 ... 117 Creating and Editing Outlines ......................................................... “Comparison of Aggregate and Block Storage” and Chapter 58.. Some of the information is not relevant to aggregate storage databases.................................................... 122 Saving Outlines............ “Understanding Data Loading and Dimension Building”..... Databases..... see Chapter 9................................................................ Outline Editor displays the dimension hierarchy of an outline visually... 119 Adding Dimensions and Members to an Outline.... “Setting Dimension and Member Properties................................................ 123 The database outline defines the structure of the database.......................................... see Chapter 3..................................” You can also change outlines using data sources and rules files...........................................................................................................7 In This Chapter Creating and Changing Database Outlines Process for Creating Outlines ................ 118 Locking and Unlocking Outlines ......................... See Chapter 15.....................” Process for Creating Outlines This section provides an overview of creating outlines using Outline Editor.................................... All examples in this chapter are based on the Sample Basic database shipped with Essbase............ 120 Verifying Outlines.................

” 7 If necessary. See Chapter 9. See “Setting Data Storage Properties” on page 120. open the empty outline created by default when you create a database and add content manually. Create content using data sources and rules files. 2 Open the outline. “Understanding Data Loading and Dimension Building. Creating and Editing Outlines When a database is created. see “About Outline Editor” and “Customizing Outline Viewer and Outline Editor” in the Essbase Administration Services Online Help. Hyperion does not 118 Creating and Changing Database Outlines . Essbase creates an outline for that database automatically. The new database automatically contains a blank outline. See “Creating Applications and Databases” on page 109.otl) and is stored in the database directory on Essbase Server. See “Adding Dimensions and Members to an Outline” on page 120. See Figure 35 and “Saving Outlines” on page 123. (See Chapter 15. 5 Position dimensions and members in the outline. See “Positioning Dimensions and Members” on page 120.Outline Editor. ➤ To create an outline: 1 Create a database. The outline has the same name as the database (dbname. Copy an existing outline to the current database and change the existing outline. 4 Set each dimension as dense or sparse. See Chapter 10. 6 Set dimension and member properties. “Setting Dimension and Member Properties. (See “Opening and Editing Outlines” in the Essbase Administration Services Online Help). create attribute dimensions and associate them with the appropriate base dimensions. 3 Add dimensions and members to the outline. each save overwrites the changes of the other instance.”) ● ● Caution! If you open the same outline with two instances of the Administration Services Console using the same login ID.” 8 Verify and save the outline. See “Creating and Editing Outlines” on page 118. You can create content in the new outline in the following ways: ● In Outline Editor. “Working with Attributes.

➤ To create an outline or open an existing outline. an outline is always locked when it is opened in edit mode. Before you forcefully unlock a locked outline. When you attempt to edit a locked outline. Essbase does not allow other users to save over. you are given an option to view the outline in Outline Viewer. use a tool: Tool Administration Services MaxL ESSCMD Topic Locking and Unlocking Outlines create database as UNLOCKOBJECT Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Locking and Unlocking Outlines 119 . it can be difficult to keep track of what changes are saved or overwritten. ➤ To unlock an outline. If you have Administrator permissions. you can unlock a locked outline. Essbase unlocks the outline when the outline is closed. Note: Essbase uses a different process for locking and unlocking outlines than for other database artifacts. See “Locking and Unlocking Artifacts” on page 713. When an outline is locked. make sure that no one else is working with it. rename. delete. use a tool: Tool Administration Services MaxL ESSCMD Topic Opening and Editing Outlines create database CREATEDB Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference ➤ To copy an existing outline. use a tool: Tool Administration Services MaxL ESSCMD Topic Copying Outlines create database as COPYDB Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Locking and Unlocking Outlines In Outline Editor.recommend this practice. or edit the outline.

➤ To set data storage properties using Outline Editor. ➤ To add dimensions and members to an outline using Data Prep Editor. see “Updating an Outline Dynamically Using a Rules File” in the Essbase Administration Services Online Help. using Data Prep Editor Before naming dimensions and members. using Outline Editor With a data source and rules file. Set as sparse any standard dimensions with which you plan to associate attribute dimensions. See “Selection of Dense and Sparse Dimensions” on page 55. Setting Data Storage Properties When you create dimensions and save an outline. Essbase automatically sets the new dimensions in the outline as sparse. You can nest members inside of other members in a hierarchy. The following sections describe how to position dimensions and members in the outline: ● ● “Moving Dimensions and Members” on page 121 “Sorting Dimensions and Members” on page 121 120 Creating and Changing Database Outlines . Dimensions contain members. see “Naming Restrictions for Applications and Databases” on page 1077. see “Setting Dimensions as Dense or Sparse” in the Essbase Administration Services Online Help. You can change the dimension storage type according to the optimal configuration for the database. See “Dimensions and Members” on page 50. see “Adding Dimensions to Outlines” and “Adding Members to Dimensions” in the Essbase Administration Services Online Help. ➤ To add dimensions and members to an outline using Outline Editor. Positioning Dimensions and Members Dimensions are the highest level of organization in an outline.Adding Dimensions and Members to an Outline There are several ways to add dimensions and member hierarchies to an existing outline: ● ● Manually. ➤ To add dimensions and members dynamically (using a rules file) from Outline Editor. see “Creating a Dimension Build Rules File” in the Essbase Administration Services Online Help.

Otherwise. ● Moving dimensions and members can affect the performance of calculations and retrievals. Moving Dimensions and Members After you create dimensions and members. consider the following information: ● The positions of dimensions and members in an outline can affect performance. Before moving members and dimensions in an outline. the members are sorted by their values. In the text attribute dimension. Essbase prompts you to move them there. you can rearrange them within the outline. see “Moving Dimensions and Members” on page 121. something that Hyperion does not recommend. see “Manipulating Dimensions and Members in an Outline” in the Essbase Administration Services Online Help. For example. When you sort level 0 members of numeric attribute dimensions in outlines.data. because the characters are sorted left to right. Figure 35 Sorting Numeric Versus Text Attribute Dimension in Ascending Order Positioning Dimensions and Members 121 . Position attribute dimensions at the end of the outline. during outline verification. For a list of consequences of sorting dimensions and members. Figure 35 shows text and numeric versions of the Sizes attribute dimension after sorting the members in ascending order. See “Optimizing Outline Performance” on page 162. or move non-attribute dimensions or members. The members of the numeric attribute dimension are sequenced by the numeric values of the members. If you add. Sorting Dimensions and Members You can have Essbase arrange dimensions within an outline or members within a dimension in alphabetical order (A to Z) or reverse alphabetical order (Z to A). See “Designing an Outline to Optimize Performance” on page 83. the member 8 is before the other members. the member 8 is after the member 24. delete.Note: The relative locations of dimensions in an outline can affect calculation and retrieval performance times. See “Designing an Outline to Optimize Performance” on page 83. Essbase restructures the database and you must recalculate the data. ● ● ➤ To position dimensions and members using Outline Editor. ● Moving members could move a shared member before the actual member in the outline.

Essbase also performs the following conversions to appropriate numeric attribute dimension member names and displays them in the outline: 122 Creating and Changing Database Outlines . Level 0 Dynamic Calc members of standard dimensions have a formula. only the level 0 members of a dimension can be Hybrid Analysis-enabled. Essbase checks the following items: ● All member and alias names are valid. Label-only members have not been assigned formulas. See “Naming Restrictions for Applications and Databases” on page 1077. aliases. Two-Pass. because the dimension name is the level 0 member. or country. following all standard dimensions. Only one dimension is tagged as accounts. time. When verifying an outline. because the dimension name is the level 0 member. Shared members are valid as described in “Understanding the Rules for Shared Members” on page 140. the parent member must also be Dynamic Calc. The level 0 member name of a date attribute dimension must match the date format name setting (mm-dd-yyyy or dd-mm-yyyy). In a Hybrid Analysis outline. If a parent member has one child and if that child is a Dynamic Calc member. the parent member must also be Dynamic Calc. See “Understanding Attribute Types” on page 156. Members and aliases cannot have the same name as other members. or levels. Two-Pass member. generations. the dimension name must match the setting. currency type. Verifying Outlines You can verify an outline automatically when you save it or you can verify the outline manually at any time. Dynamic Calc members in sparse dimensions do not have more than 100 children. The two names of members of Boolean attribute dimensions are the same as the two Boolean attribute dimension member names defined for the outline. Attribute dimensions are located at the end of the outline. If a parent member has one child and if that child is a Dynamic Calc. ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● During outline verify. ➤ To sort members using Outline Editor.You cannot sort Boolean attribute dimensions. the dimension name must be a numeric value. The level 0 member name of a numeric attribute dimension is a numeric value. The currency category and currency name are valid for the currency outline. If the dimension has no members. Formulas for members are valid. see “Sorting Members” in the Essbase Administration Services Online Help. Level 0 members are not tagged as label only. If the dimension has no members.

For more information about adding or deleting members before saving an outline. see “Verifying Outlines” in the Essbase Administration Services Online Help. adding a dimension called Channel to the Sample Basic outline implies that all previous data in Sample Basic is associated with a particular channel or the sum of all channels. 1.1. see “Understanding Attribute Types” on page 156. see the following sections: ● ● ● “Saving an Outline with Added Standard Dimensions” on page 123 “Saving an Outline with One or More Deleted Standard Dimensions” on page 123 “Creating Sub-Databases Using Deleted Members” on page 124 Saving an Outline with Added Standard Dimensions If you add one or more new standard (non-attribute) dimensions. It strips out leading or trailing zeroes in member names. -1 becomes 1-. Essbase verifies the outline to make sure that it is correct. the data associated with only one member of each deleted dimension must be retained and associated with a member of one of the other dimensions. Essbase may restructure the outline. ● For more information about numeric attribute dimensions.1 becomes 0. for example. Saving Outlines 123 . if you change a member name from Market to Region. For example. and 00. for example. Each time that you save an outline. ➤ To verify an outline. Essbase saves outlines to the database directory on Essbase Server. For example. By default. ➤ To save an outline. Saving an Outline with One or More Deleted Standard Dimensions If you delete one or more standard (non-attribute) dimensions. If you are saving changes to an existing outline. removing a dimension called Market from the outline implies that all of the data that remains in the database after the restructure operation is associated with a single. Essbase moves data stored in reference to Market to Region. Saving Outlines You can save outlines to the Essbase Server or to a client computer or network. see “Saving Outlines” in the Essbase Administration Services Online Help. any data that existed previously in the database must be mapped to a member of each new dimension before the outline can be saved.0 becomes 1. specified member of the Market dimension. For example.● It moves minus signs in member names from the front to the end of the name.

Only one member can be kept when a dimension is deleted. 124 Creating and Changing Database Outlines . and specify the member to keep.If you delete an attribute dimension. Essbase deletes the associations to its base dimension. See “Saving an Outline with One or More Deleted Standard Dimensions” on page 123.” Creating Sub-Databases Using Deleted Members ➤ To create a sub-database: 1 Delete a dimension from an existing outline. “Working with Attributes. See Chapter 10. 2 Save the database using a different name.

...8 In This Chapter Creating and Working With Duplicate Member Outlines Creating Duplicate Member Names in Outlines ... and Aliases” on page 1078.. “Creating Applications and Databases” and in Chapter 7... 125 Restrictions for Duplicate Member Names and Aliases in Outlines ...... To use the information in these topics.. A qualified name format differentiates the duplicate member names. Essbase displays two or more members in the outline using the same name..............” Creating Duplicate Member Names in Outlines You can use duplicate names in an outline only if the outline that has the allow duplicate members option enabled... [New York].... you should be familiar with the database outline concepts described in Chapter 6... Figure 36 shows an example of a duplicate member outline in which the New York state member and the New York city member both appear in the outline as New York................................................................. 127 Syntax for Specifying Duplicate Member Names and Aliases .... 129 This chapter explains how to create and work with duplicate member names and aliases in Essbase database outlines.. The information in this chapter applies to aggregate storage databases and block storage databases........ Create the names in the usual way..... Essbase validates and saves the outline with the duplicate member names.... 127 Working With Duplicate Member Names ............. “Creating and Changing Database Outlines... When you save the outline....... See “Naming Restrictions for Dimensions................................. When you enable duplicate member names in an outline...................... Members.... Creating Duplicate Member Names in Outlines 125 . See “Syntax for Specifying Duplicate Member Names and Aliases” on page 127.... Figure 36 duplicate Member Name “New York” The qualified member names for the example in Figure 36 are [State].................................................................[New York] and [City].......................

Note: Duplicate member outline attribute dimensions do not have prefixes or suffixes attached that apply to attribute dimensions in unique outlines. parent. and levels as unique or duplicate to restrict the use of duplicate member names within a database. When you create a duplicate member outline. save it before proceeding with any other outline changes. When duplicate members are enabled in a dimension. or to convert a unique member name outline to a duplicate member name outline. in a duplicate member Boolean attribute dimension. generations. see “Naming Generations and Levels” in the Essbase Administration Services Online Help. you can tag particular dimensions. For example. ➤ To enable or disable duplicate member names in a dimension. Note: A duplicate member outline cannot be converted back to a unique member outline. see “Tagging a Dimension as Unique” in the Essbase Administration Services Online Help.➤ To create an outline that enables duplicate member names. If a member is assigned conflicting properties. ➤ To disable duplicate member names in a particular generation or level of a dimension. or ancestors 126 Creating and Working With Duplicate Member Outlines . This enables you to specify member name uniqueness at a more granular level in a duplicate member outline. You cannot convert an outline that has unsaved changes. grandparent. members do not include dimension. you can tag particular generations or levels within the dimension as unique. Note: After converting an outline to a duplicate member outline. the unique property takes precedence. Within a duplicate member outline. use a tool: Tool Administration Services Topic Creating Duplicate Member Name Outlines create database Location Essbase Administration Services Online Help MaxL Essbase Technical Reference Note: Save outline changes before converting it to a duplicate member name outline. by default all dimensions in the outline are tagged as duplicate.

Syntax for Specifying Duplicate Member Names and Aliases Even though duplicate member names appear in the outline. each non-shared member name uniquely identifies a member in the database. You can view the qualified member name for a duplicate member in the Outline Viewer Member Properties dialog box in Administration Services. or ]. dimension. A qualified name format differentiates the duplicate member names. [). the following additional restriction applies: an alias table that contains duplicate alias names is valid only with a duplicate member outline. Note: Member. the following must always be unique: ● ● ● Dimension names Generation names and level names Siblings under a parent member If you are using aliases. When using Administration Services editors.[ sequence of characters. See “Setting Prefix and Suffix Formats for Member Names of Attribute Dimensions” on page 163. Essbase will be unable to accurately query the data.affixed to the TRUE and FALSE members. However. You cannot mix member names and alias names in a qualified name. and alias names in duplicate member outlines cannot contain the character sequence of square brackets enclosing a period and/or spaces (for example. Restrictions for Duplicate Member Names and Aliases in Outlines 127 . you cannot create a member name “[New York]. Restrictions for Duplicate Member Names and Aliases in Outlines When creating duplicate member names and aliases in database outlines. ].[. A qualified member or alias name can be specified in any of the following formats: ● ● ● Fully qualified member name Member name qualified by differentiating ancestor Shortcut qualified member name Note: A qualified name must comprise all alias names or all member names. you can select the qualified member name form an outline tree. For example. A qualified name must be used to specify a duplicate member name. and you can save the outline.[Area 1]”. Outline verification does not display an error for member names that contain the ].

[DuplicateMember] For example: [Market].[Jan] [Year]@[Jan] [ParentMember]. spreadsheets. and MDX queries is optimal. Using the same syntax that Essbase uses when you reference members in scripts. or MDX queries. [DuplicateMember] [DimensionMember]@ [DuplicateMember] Example [Year]. Each name must be enclosed in square brackets ([]) and separated by a period (.).. You can also manually insert shortcut qualified names into scripts.Using Fully Qualified Member Names A fully qualified member name consists of the duplicate member or alias name and all ancestors up to and including the dimension name. spreadsheets. [DifferentiatingAncestor].[New York] Using Shortcut Qualified Member Names Essbase internally constructs shortcut qualified names for members in duplicate member outlines.[Ancestors..].[Jan] or [Product].[East].[DuplicateMember] For example: [State].[East].[State].[New York] [Market]. but are unique within a dimension Duplicate member names have a unique parent Qualified Name Syntax [DimensionMember]. These can be inserted into scripts using Administration Services by right clicking on the member and selecting Insert member name. [DimensionMember].[New York] [City]. Each name must be enclosed in square brackets([]) and separated by a period (. [DuplicateMember] [East]..[Ancestors..]. The top ancestor in the path will always be a unique member name.).[New York] Qualifying Members by Differentiating Ancestor A member name qualified by differentiating ancestor uses the member or alias name and all ancestors up to and including the ancestor that uniquely identifies the duplicate member or alias. Scenario Duplicate member names exist at generation 2 Duplicate member names exist in an outline. but not required. Essbase uses the following syntax to construct shortcut qualified names.[City].[New York] 128 Creating and Working With Duplicate Member Outlines .

[Qtr1]. Working With Duplicate Member Names 129 . or the API). Administration Services.]. but do not represent the same member. see the Hyperion Smart View for Office Online Help Essbase Spreadsheet Add-in for Excel..Scenario Duplicate member names exist at generation 3 Qualified Name Syntax [DimensionMember]. [DuplicateMember] [DimensionMember]@ [GenLevelName]| [DuplicateMember] Example [Products]. In Administration Services. See “Inserting Dimension and Member Names in MDX Scripts” in the Essbase Administration Services Online Help. For example. Note: If an alias name and member name are the same. [ParentMember].[Personal Electronics]. Working With Duplicate Member Names This topic describes the syntax for defining duplicate member names in Administration Services. see the Essbase Technical Reference.. type the qualified member name and enclose the qualified name in double quotation marks (" "). see the Essbase Spreadsheet Add-in for Excel Online Help API. if you use the member selection tool to insert a duplicate member name from the outline tree. and the member is unique at its generation or level In some scenarios. "[State]. searching by alias name is not supported in clients (for example Essbase Spreadsheet Add-in for Excel. [Televisions] Duplicate member names exist at a named generation or level. see the Essbase API Reference ● To use duplicate member names in MaxL and MDX. [DuplicateMember] [2006].[Jan]. To specify duplicate member names in: ● ● Smart View.[New York]" In MDX and MaxL qualified member names are not enclosed in quotation marks.[Ancestors. the differentiating ancestor method is used as a shortcut. If you type a duplicate member name directly into an editor. The Administration Services Data Preview feature does not support duplicate member outlines. the qualified member name is inserted automatically. [2006]@[Gen1]|[Jan] [DifferentiatingAncesto r].

130 Creating and Working With Duplicate Member Outlines .

........................................ The following sections describe the different dimension types: ● “Creating a Time Dimension” on page 132 Setting Dimension Types 131 .......... and Outlines..” Setting Dimension Types When you tag a dimension as a specific type.................................................................................................................................. For example...................... if you define a dimension as accounts......................... the dimension can access built-in functionality designed for that type............................................................................................................ “Aggregate Storage Applications..... 147 Creating Formulas..................................... all dimensions are tagged as none.................................... 147 Creating UDAs ......................... 147 Naming Generations and Levels..................................” you are ready to specify how the dimensions and members in the outline behave.......................................... For detailed information on the differences between aggregate and block storage......... see Chapter 58................... you can specify accounting measures for members in that dimension..... 148 Adding Comments .............. time and accounts............. 136 Calculating Members with Different Operators ............ 149 After you create and organize the outline.....” For information on creating aggregate storage applications.................................................... By default........... 137 Setting Aliases .. as described in Chapter 7.......................................................................... Note: Some information in this chapter is designed for block storage databases and is not relevant to aggregate storage databases.................. “Creating and Changing Database Outlines......................... “Comparison of Aggregate and Block Storage...................... Essbase calculates the two primary dimension types............................ 143 Setting Two-Pass Calculations ............. see Chapter 57..................... 131 Setting Member Consolidation .................................. Databases................ before other dimensions in the database............... This chapter describes dimension and member properties and how to set them............................................................................................ 137 Determining How Members Store Data Values..9 In This Chapter Setting Dimension and Member Properties Setting Dimension Types ................

Creating an Accounts Dimension Tag a dimension as accounts if it contains items that you want to measure. such as profit or inventory. For more information. for example. All members in the accounts dimension inherit the accounts property. see “Setting Two-Pass Calculations” on page 147.● ● ● ● “Creating an Accounts Dimension” on page 132 “Creating a Country Dimension” on page 135 “Creating Currency Partitions” on page 135 “Creating Attribute Dimensions” on page 136 ➤ To set a dimension type. ➤ To tag a dimension as time. In the Sample Basic database. You can create an outline that does not have a time dimension. Understand these rules when tagging a dimension as time: ● ● ● ● You can tag only one dimension in an outline as time. All members in the time dimension inherit the time property. The following sections describe built-in functionality for accounts dimensions: ● “Setting Time Balance Properties” on page 133 132 Setting Dimension and Member Properties . see “Setting the Dimension Type” in the Essbase Administration Services Online Help. see “Tagging a Time Dimension” in the Essbase Administration Services Online Help. The time dimension also enables several accounts dimension functions. You can add time members to dimensions that are not tagged as time. Understand these rules when tagging a dimension as accounts: ● ● ● ● You can tag only one dimension in an outline as accounts. You can specify that members of the accounts dimension are calculated on the second pass through an outline. the Year dimension is tagged as time. see “Tagging an Accounts Dimension” in the Essbase Administration Services Online Help. You can create an outline that does not have an accounts dimension. ➤ To tag a dimension as accounts. Creating a Time Dimension Tag a dimension as time if it contains members that describe how often you collect and update data. as are its descendants—all Qtr members and the months (such as Jan). such as first and last time balances.

However. For example. 60 Mar(+).● ● ● “Setting Skip Properties” on page 134 “Setting Variance Reporting Properties” on page 134 “Setting Essbase Currency Conversion Properties” on page 135 Setting Time Balance Properties If a member of the accounts dimension uses the time balance property. When you set the time balance property as none. as shown in the following example consolidation. that is. East. 50 Feb(+). For example. Cola. Essbase rolls up parents in the time dimension in the usual way—the value of the parent is based on the formulas and consolidation properties of its children. Tag OpeningInventory as first. Actual. For example. a parent in the time dimension is calculated based on the consolidation and formulas of its children. Cola. in the Sample Basic database. it affects how Essbase calculates the parent of that member in the time dimension. if you had 50 cases of Cola at the beginning of Jan. 50 Example of Time Balance as Last Set the time balance as last when you want the parent value to represent the value of the last member in the branch (often at the end of a time period). First). that is. ➤ To set time balance properties. for example Qtr1. to roll up differently. 70 Qtr1(+). assume that you have a member named OpeningInventory that represents the inventory at the beginning of the time period. see “Setting Time Balance Properties” in the Essbase Administration Services Online Help. Tag EndingInventory as last. Actual. Actual. Setting Dimension Types 133 . the EndingInventory for Qtr1 is the same as the EndingInventory for Mar. EndingInventory represents the inventory at the end of Mar. OpeningInventory represents the inventory at the beginning of Jan. Example of Time Balance as None None is the default value. East. the OpeningInventory for Qtr1 is the same as the OpeningInventory for Jan. Feb. First). For example. By default. Example of Time Balance as First Set the time balance as first when you want the parent value to represent the value of the first member in the branch (often at the beginning of a time period). East. East. If the time period was Qtr1. if you had 70 cases of Cola at the end of Mar. setting a time balance property causes parents. First). you also had 50 cases of Cola at the beginning of Qtr1. Jan(+). If the time period was Qtr1. you also had 70 cases of Cola at the end of Qtr1. assume that you have a member named EndingInventory that represents the inventory at the end of the time period. the Qtr1 member is the sum of its children (Jan. Cola. Cola. For example. Actual. as shown in the following example consolidation: OpeningInventory OpeningInventory OpeningInventory OpeningInventory (TB (TB (TB (TB First). and Mar).

the parent of that time period matches the last non-missing child. EndingInventory (Last). If the time period was Qtr1. 70 Mar. 60 Feb. Last). East. 70 Qtr1(+). Average). In the following example. Jan. Actual. Jan(+). EndingInventory (Last). Cola. Cola. East. Any member that represents an expense to the company requires an expense property. 50 Feb(+). Actual. assume that you have a member named AverageInventory that represents the average of the inventory for the time period. #MI Qtr1. East. East. Cola. set the skip property to tell Essbase what to do when it encounters missing values or values of 0. Cola. Jan(+). 62 Mar(+). East. East. Cola. Cola. Cola. East. EndingInventory is based on the value for Feb. and Mar. 70 Setting Variance Reporting Properties Variance reporting properties determine how Essbase calculates the difference between actual and budget data in a member with the @VAR or @VARPER function in its member formula. Cola. Actual. Cola. Cola. Actual. AverageInventory AverageInventory AverageInventory AverageInventory (TB (TB (TB (TB Average). or average. Actual. Actual. Actual. For example. East. East. Actual. Tag AverageInventory as average. If you mark a member as last with a skip property of missing or missing and zeros. 60 Feb(+). East. 60 Mar(+). Skips data that equals zero when calculating the parent value. Actual. The following table describes how each setting determines what Essbase does when it encounters a missing or zero value. East. East. Cola. 67 Qtr1(+). Last).EndingInventory EndingInventory EndingInventory EndingInventory (TB (TB (TB (TB Last). Skips #MISSING data when calculating the parent value. EndingInventory (Last). then AverageInventory represents the average of the inventory during Jan. because Mar does not have a value. 134 Setting Dimension and Member Properties . 70 Example of Time Balance as Average Set the time balance as average when you want the parent value to represent the average value of its children. as shown in the following example consolidation. Actual. Cola. Actual. Average). Skips both #MISSING data and data that equals zero when calculating the parent value. 63 Setting Skip Properties If you set the time balance as first. last. Setting None Missing Zeros Missing and Zeros Action Essbase Takes Does not skip data when calculating the parent value. Feb. EndingInventory (Last). Last). Average). Actual.

provinces. “Designing and Building Currency Conversion Applications. in the Interntl application and database shipped with Essbase. Setting Dimension Types 135 . see “Setting Variance Reporting Properties” in the Essbase Administration Services Online Help. See Chapter 12. and countries. see “Assigning Currency Categories to Accounts Members” in the Essbase Administration Services Online Help. Canada has three markets— Vancouver. you can set the currency name property.S. Toronto. Creating Currency Partitions Use currency partition members to separate local currency members from a base currency defined in the application. For example.” ➤ To set currency conversion properties. If the base currency for analysis is US dollars. By default. if budgeted expenses were $100. and Canada. and you actually spent $110. the variance is 10. you can specify the type of currency used in each member. such as sales. members are non-expense. the variance is -10.When you are budgeting expenses for a time period. see “Tagging a Country Dimension” in the Essbase Administration Services Online Help. The @VAR function calculates Budget – Actual. For example. Creating a Country Dimension Use country dimensions to track business activities in multiple countries. the country dimension should contain states. the variance is negative. and Montreal. If a dimension is tagged as country. if budgeted sales were $100. Canadian dollars.Budget. These properties are used only in currency databases on members of accounts dimensions. When actual sales are less than budget. for example. and you actually made $110 in sales. This dimension type is used for currency conversion applications. the actual sales should be higher than the budget.” ➤ To tag a dimension as country. Setting Essbase Currency Conversion Properties Currency conversion properties define categories of currency exchange rates. They use the same currency. such as Canadian dollars. ➤ To set variance reporting properties. When you are budgeting non-expense items. The @VAR function calculates Actual . “Designing and Building Currency Conversion Applications. the variance is negative. See Chapter 12. If you track business activity in the U. In a country dimension. the local currency members would contain values based on the currency type of the region. When actual expenses are greater than budget. The currency name property defines what type of currency this market region uses. For example. the actual expenses should be lower than the budget. for example.

for example. “Designing and Building Currency Conversion Applications. “Designing and Building Currency Conversion Applications. Table 10 Consolidation Operators Description Adds the member to the result of previous calculations performed on other members. and Mar figures are added and the result stored in their parent. Jan. meaning that members are added. new members are given the addition (+) operator. see “Creating a Currency Partition” in the Essbase Administration Services Online Help. Members of the Ounces attribute dimension categorize products based on their size in ounces. Multiplies the member by the result of previous calculations performed on other members. Note: Essbase does not use consolidation properties with members of attribute dimensions. “Working with Attributes. see Chapter 12. the Product dimension is associated with the Ounces attribute dimension.” ➤ To tag a dimension as attribute.This dimension type is used for currency conversion applications. Creating Attribute Dimensions Use attribute dimensions to report and aggregate data based on characteristics of standard dimensions. Review the rules for using attribute dimensions in Chapter 10. + is the default operator.” ➤ To tag a dimension as currency partition. Divides the member into the result of previous calculations performed on other members. In the Sample Basic database. Multiplies the member by -1 and then adds it to the sum of previous calculations performed on other members. Feb. Setting Member Consolidation Member consolidation properties determine how children roll up into their parents. For example. Operator + - * / 136 Setting Dimension and Member Properties . For information about how to create and use currency partitions. see “Tagging an Attribute Dimension” in the Essbase Administration Services Online Help. By default. Qtr1.” See Chapter 12. See “Calculating Attribute Data” on page 166 for an explanation of how the attribute dimensions works.

Essbase ignores Member7 in the consolidation. For example. Essbase calculates the data in top-down order. Calculating Members with Different Operators When siblings have different operators. Calculating Members with Different Operators 137 . Table 11 describes each storage property. ~ ^ ➤ To set member consolidation properties.67 Because Member7 is set to No Consolidation(~). Does not use the member in the consolidation to its parent. The following section describes how Essbase calculates the members listed below: Parent1 Member1 Member2 Member3 Member4 Member5 Member6 Member7 (+) (+) (-) (*) (%) (/) (~) 10 20 25 40 50 60 70 Essbase calculates Member1 through Member4 as follows: (((Member1 + Member2) + (-1)Member3) * Member4) = X (((10 + 20) + (-25)) * 40) = 200 If the result of this calculation is X. Member5 consolidates as follows: (X/Member5) * 100 = Y (200/50) * 100 = 400 If the result of the Member1 through Member4 calculation is Y. The result is multiplied by 100 to yield a percentage value. see “Setting Member Consolidation Properties” in the Essbase Administration Services Online Help. you can tell Essbase to only calculate the value for a member when a user requests it and then discard the data value. Member6 consolidates as follows: Y/Member6 = Z 400/60 = 66. Determining How Members Store Data Values You can determine how and when Essbase stores the data values for a member. Does not use the member in any consolidation in any dimension.Operator % Description Divides the member into the sum of previous calculations performed on other members.

Members tagged as Never share can only be explicitly shared.Table 11 Choosing Storage Properties When to Use Store the data value with the member. By default. see “Setting Member Storage Properties” in the Essbase Administration Services Online Help. Not calculate the data value until a user requests it. except that Essbase stores the data value for that member after the user views it. and then discard the data value. create the shared member with the same name and tag it as shared. Understanding Stored Members Stored members contain calculated values that are stored with the member in the database after calculation. See Chapter 25. that is. After the user views it. Essbase performs the same operation as for a Dynamic Calc member. Not calculate the data value until a user requests it. To explicitly share a member. You cannot change this setting. Not allow members to be shared implicitly. Share values between members. 138 Setting Dimension and Member Properties . the 100-20 member is stored under the 100 parent and shared under Diet parent. Essbase does not store the value for that member. Understanding Dynamic Calculation Members When a member is Dynamic Calc. ➤ To define a member as stored. members are set as stored. If you tag a member as Dynamic Calc and Store. and then store the data value. For More Information “Understanding Stored Members” on page 138 “Understanding Dynamic Calculation Members” on page 138 “Understanding Dynamic Calculation Members” on page 138 “Understanding Implied Sharing” on page 142 Storage Property Store Dynamic Calc and Store Dynamic Calc Never share Label only Create members for navigation only. members that contain no data values. in the Sample Basic database. “Understanding Label Only Members” on page 139 Shared member “Understanding Shared Members” on page 139 ➤ To set member storage properties. Essbase does not calculate the value for that member until a user requests it. see “Setting Member Storage Properties” in the Essbase Administration Services Online Help. “Dynamically Calculating Data Values. For example.” Essbase automatically tags members of attribute dimensions as Dynamic Calc.

➤ To tag a member as Dynamic Calc. see “Setting Member Storage Properties” in the Essbase Administration Services Online Help. in the Sample Basic database. Typically. If you tag as label only a base dimension member that has attributes associated with it. For example. Use them to group members or to ease navigation and reporting from the Essbase Spreadsheet Add-in for Excel. see “Setting Member Consolidation” on page 136. Using shared members lets you use members repeatedly throughout a dimension. there must be an actual non-shared member of the same name. See Chapter 8. to calculate a Diet Cola member in both the 100 and Diet parents. For more information about member consolidation. Storing the data value only once offers considerable space saving as well as processing efficiency. see “Setting Member Storage Properties” in the Essbase Administration Services Online Help.” Determining How Members Store Data Values 139 . Use these sections to learn more about shared members: ● ● ● “Understanding the Rules for Shared Members” on page 140 “Understanding Shared Member Retrieval During Drill-Down” on page 140 “Understanding Implied Sharing” on page 142 Note: Members with the same name may be duplicate members instead of shared members. Understanding Label Only Members Label only members have no data associated with them. ➤ To tag a member as label only. but it displays in multiple locations. The shared member stores a pointer to data contained in the other member and the data is only stored once. you should give label only members the “no consolidation” property. for example. Essbase removes the attribute associations and displays a warning message. You cannot associate attributes with label only members. Essbase stores the data value only once. The 100-20 member under Diet points to that value. Shared members are typically used to calculate the same member across multiple parents. Understanding Shared Members The data values associated with a shared member come from another member with the same name. the 100-20 member under 100 stores the data for that member. ➤ To tag a member as shared. “Creating and Working With Duplicate Member Outlines. To define a member as shared. see “Setting Member Storage Properties” in the Essbase Administration Services Online Help.

on which the shared member is based. both 100-20 members in the Sample Basic database are in the Product dimension. depending on their location in the spreadsheet. Aliases can be assigned to shared members. UDAs or formulas cannot be assigned to shared members. An actual member must be located in a dimension before its shared member. the values for those accounts properties are taken from the base member. Shared members cannot have children. is displayed in the Member Properties dialog box. Attributes cannot be associated with shared members. Understanding Shared Member Retrieval During Drill-Down Essbase retrieves shared members during drill-down. Essbase retrieves the stored member. The qualified name of the duplicate member. siblings must be unique. or a calculation may return unexpected results. Essbase retrieves from the bottom of a spreadsheet first. See “Understanding Attribute Calculation and Shared Members” on page 171. An unlimited number of shared members can have the same name. See “Defining Shared Members” in the Essbase Administration Services Online Help. Example of Shared Members from a Single Dimension If you create a test dimension with all shared members based on the members of the dimension East from the Sample Basic outline. ● ● ● ● ● ● ● ● ● Note: You cannot create a shared member and the member on which it is based under the same parent. You can create a shared member for a member with a duplicate member name. even if the accounts properties on the shared member are changed.Understanding the Rules for Shared Members Understand these rules when creating shared members: ● The shared members must be in the same dimension. Specify the duplicate member name for which you want to create the shared member. Complex relationships between real and shared members that will be part of an attribute calculation should be avoided. the outline would be similar to the following: 140 Setting Dimension and Member Properties . If accounts properties are assigned to shared members. Essbase follows three rules during this type of retrieval: ● ● ● Essbase retrieves stored members (not their shared member counterparts) by default. If the parent of a shared member is a sibling of the stored member counterpart of one of the shared members. In a duplicate member outline. For example.

however. Similarly. California inserted between Florida and Connecticut). Essbase retrieves shared members only between the nonsibling and the parent (in this case. you retrieve data with the children of test above it in the spreadsheet. Example of Retrieval with Crossed Generation Shared Members You can modify the Sample Basic outline to create a shared member whose stored member counterpart is a sibling to its own parent: Determining How Members Store Data Values 141 . all results are from stored members because Essbase retrieves stored members by default. Essbase retrieves the first three children as shared members. but the last two as stored members. Essbase retrieves the shared members: New York Massachusetts Florida Connecticut New Hampshire test If you move test above its last two children. between California and test). If. if you insert a member in the middle of the list above which was not a sibling of the shared members (for example.If you retrieve just the children of East.

If the parent has four children. the parent and the child contain the same data. not the shared member west: West New York Massachusetts Connecticut New Hampshire test Essbase retrieves the members in this order because test is a parent of west and a sibling of west’s stored member counterpart. the parent 500 has only one child. the parent and child that consolidates 142 Setting Dimension and Member Properties . Essbase assumes (or implies) a shared member relationship in the following situations: ● A parent has only one child. Essbase ignores the consolidation property on the child and stores the data only once —thus the parent has an implied shared relationship with the child. but three of them are marked as no consolidation. except it retrieves the stored member West. Some members are shared even if you do not explicitly set them as shared. 500 (+) 500-10 (+) ● A parent has only one child that consolidates to the parent. Understanding Implied Sharing The shared member property defines a shared data relationship explicitly.If you create a spreadsheet with shared members in this order. 500-10. These members are said to be implied shared members. Essbase retrieves all the shared members. In the following example. In this situation. West. so the parent shares the value of that child.

members in the Product dimension in the Sample Basic database are identified both by product codes. Essbase ignores the consolidation property on the child and stores the data only once—thus the parent has an implied shared relationship with the child. Aliases are stored in alias tables. The other children are marked as No Consolidate(~). so the parent implicitly shares the value of 500-10. See “Setting an Alias Table as Active” on page 145 for further information. setting up a separate alias table for each user language enables different users to view member names in their own language. but advertisers and executives may be familiar with it as The Best Cola. and by more descriptive aliases. When you view the outline or retrieve data. the aliases that you create are stored in the Default alias table. If you want to create more than one set of aliases for outline members. 500 (+) 500-10 (+) 500-20 (~) 500-30 (~) If you do not want a member to be shared implicitly. For example. For Unicode-mode applications. none of the Caffeine Essbase does not support aliases for Hybrid Analysis-enabled members. If you don’t create any other alias tables. such as Cola. You can set more than one alias for a member using alias tables. you could use different aliases for different kinds of reports—users may be familiar with 100-10 as Cola. Setting Aliases An alias is an alternate name for a member or shared member. When you create a database outline. Alias Tables Aliases are stored in one or more tables as part of a database outline. named set of alias names to member names.contain the same data. An alias table maps a specific. See “Understanding Shared Members” on page 139 for an explanation of how shared members work. mark the parent as Never Share so that the data is duplicated. you can use the alias table name to indicate which set of alias names you want to see. For example. Setting Aliases 143 . the parent 500 has only one child. Identifying which alias table contains the names that you want to see while viewing an outline is called making an alias table the active alias table. For additional information about the relevance of alias tables and Unicode. This list shows some products in the Sample Basic database that have two descriptive alias names: Product 100-10 100-20 100-30 Default Cola Diet Cola Caffeine Free Cola Long Names The Best Cola Diet Cola with Honey All the Cola. create an alias table for each set. Aliases can improve the readability of an outline or a report. and is not shared. 500-10. see “About the Essbase Implementation of Unicode” on page 659. Essbase creates an empty alias table named Default. In the following example. such as 100. that rolls up to it.

See “Naming Restrictions for Dimensions. While working with alias tables. See “Naming Restrictions for Dimensions. see Appendix A. Members. see “Defining a Rules File for Adding Aliases” in the Essbase Administration Services Online Help. and Aliases” on page 1078. “Limits”. see “Creating Aliases for Dimensions and Members” in the Essbase Administration Services Online Help. ➤ To import alias values from an alias table source file created in a pre-defined format.Creating Aliases You can provide an alias for any member. Name-length restrictions depend on the Unicode-related mode of the application. see “Alias Tables” on page 143. and Aliases” on page 1078. You can use any of the following methods to create aliases in an existing alias table: ➤ To manually assign an alias to a member while editing an outline. Alias names must follow the same rules as member names. The following restrictions apply to alias tables: ● ● You can create up to 10 alias tables for an outline. Creating and Managing Alias Tables Named alias tables enable you to display different aliases in different situations. you cannot change its name. Members. Once an alias table is created. The naming conventions for alias table names are the same as those for dimensions. ➤ To use dimension build and a data source to add aliases to an alias table. For general information about alias tables. ● ● 144 Setting Dimension and Member Properties . you can perform the following actions: ● ● ● ● ● ● “Creating a Alias Table” on page 144 “Setting an Alias Table as Active” on page 145 “Copying an Alias Table” on page 145 “Renaming an Alias Table” on page 145 “Clearing and Deleting Alias Tables” on page 146 “Importing and Exporting Alias Tables” on page 146 Creating a Alias Table An alias table contains a list of aliases to use for members in the outline. see “Importing and Exporting Alias Tables” on page 146.

➤ To view a list of alias tables in the outline and to set the current alias table. To add aliases to an alias table and assign them to members. Setting an Alias Table as Active The active alias table contains the aliases that Essbase currently displays in the outline.➤ To create an alias table. see “Creating Alias Tables” in the Essbase Administration Services Online Help. use a tool: Tool Administration Services MaxL ESSCMD Topic Renaming Alias Tables alter object RENAMEOBJECT Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Setting Aliases 145 . use a tool: Tool Administration Services Topic Setting the Active Alias Table for Outline Editor query database alter database ESSCMD LISTALIASES SETALIAS Essbase Technical Reference Location Essbase Administration Services Online Help MaxL Essbase Technical Reference Copying an Alias Table ➤ To copy alias tables. see “Creating Aliases” on page 144. A new alias table is empty. use a tool: Tool Administration Services MaxL ESSCMD Topic Copying Alias Tables alter object COPYOBJECT Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Renaming an Alias Table ➤ To rename an alias table.

Alias table import files should have the following structure: ● The first line in the file starts with $ALT_NAME. enclose the name in single quotation marks. Add one or two spaces followed by the name of the alias table. use a tool: Tool Administration Services Topic Importing Alias Tables Exporting Alias Tables MaxL ESSCMD alter database LOADALIAS UNLOADALIAS Essbase Technical Reference Essbase Technical Reference Location Essbase Administration Services Online Help 146 Setting Dimension and Member Properties . see “Deleting and Clearing Alias Tables” in the Essbase Administration Services Online Help. The first value must be the name of an existing outline member. The export file contains aliases and the corresponding member names—qualified member names for duplicate members. Alias table import files have the . To clear or delete alias tables. ● ● ● The following is an example of an alias table import file: $ALT_NAME 'Quarters' Qtr1 Quarter1 Jan January Feb February Mar March $END You can also export an alias table from the Essbase outline to a text file.alt extension. The last line of the file must be $END. If the alias table name contains a blank character. ➤ To import or export alias tables. the second value is the alias for the member. Importing and Exporting Alias Tables You can import a correctly formatted text file into Essbase as an alias table. Any member or alias name that contains a blank or underscore must be enclosed in double quotation marks. Each line between the first and the last lines contains two values that are separated by one or more spaces or tabs.Clearing and Deleting Alias Tables You can delete an alias table from the outline or you can clear all the aliases from an alias table without deleting the alias table itself.

Naming Generations and Levels You can create names for generations and levels in an outline. see “Dimension and Member Relationships” on page 52. ➤ To tag a member as two-pass. Essbase ignores it. The members that are calculated on the second pass through the outline are called two-pass calculations. Essbase must first calculate the outline and then recalculate the members that are dependent on the calculated values of other members. To obtain the correct values for these members. ➤ To add formulas to a dimension or member. see “Creating and Editing Formulas in Outlines” in the Essbase Administration Services Online Help. Essbase calculates outlines from the bottom up—first calculating the values for the children and then the values for the parent.Setting Two-Pass Calculations By default. it works only on the following members: ● ● ● Members of accounts dimensions Dynamic Calc members Dynamic Calc and Store members. which is a parent member based on its children. You cannot set formulas for attribute dimensions and their members. Setting Two-Pass Calculations 147 . see “Setting Two-Pass Calculation Properties” in the Essbase Administration Services Online Help. you might create a generation name called Cities for all cities in the outline. the values of the children may be based on the values of the parent or the values of other members in the outline. If two-pass calculation is assigned to other members. See Chapter 21. such as a word or phrase that describes the generation or level. however. For example. “Developing Formulas”. to calculate the ratio between Sales and Margin. For example. Essbase needs first to calculate Margin. For information about generations and levels. The formula determines how Essbase calculates the outline data. To ensure that the ratio is calculated based on a freshly calculated Margin figure. see “Using Bottom-Up Calculation” on page 885. This calculation produces the correct result. tag the Margin % ratio member as a two-pass calculation. including Sales. Sometimes. Essbase calculates the database once and then calculates the ratio member again. For more information on bottom-up calculations. Creating Formulas You can apply formulas to standard dimensions and members. Even though two-pass calculation is a property that you can give to any non-attribute member.

See “Comparing Attributes and UDAs” on page 159. See “Flipping Field Signs” on page 280. You cannot create a UDA on shared members. See Chapter 27. Members. When you name generations and levels. You can set the same UDA for different members. After you define a UDA. “Developing Calculation Scripts. A UDA applies to the specified member only. “Developing Calculation Scripts” for information about developing calculation scripts. ➤ To name generations and levels using Outline Editor. alias.Use generation and level names in calculation scripts or report scripts wherever you need to specify either a list of member names or generation or level numbers. Members. You cannot create a UDA on members of attribute dimensions. pivot. For example. See “Naming Restrictions for Dimensions. Creating UDAs You can create your own user-defined attributes (UDA) for members. follow the same naming rules as for members. you can query a member for its UDA in a calculation script. you might create a UDA called Debit. follow the same naming rules as for members. You can change the sign of the data as it is loaded into the database based on its UDA. or provide full crosstab. You can define only one name for each generation or level. See Chapter 27. Understand these rules when creating UDAs: ● ● ● ● You can define multiple UDAs per member. create attribute dimensions instead of UDAs. or generation name. and Aliases” on page 1078. level. you could limit a calculation in a calculation script to all members in a specific generation. Use UDAs in the following places: ● Calculation scripts.” Data loading. You cannot set the same UDA twice for one member. For example. selectively retrieve data based on attribute values. and Aliases” on page 1078. Descendants and ancestors of the member do not automatically receive the same UDA. and drill-down support in the spreadsheet. ● ● ● 148 Setting Dimension and Member Properties . A UDA name can be the same as a member. A UDA is a word or phrase about a member. See “Naming Restrictions for Dimensions. When you name UDAs. ● If you want to perform a calculation. you could multiply all members with the UDA Debit by -1 so that they display as either positive or negative (depending on how the data is currently stored). For example. see “Naming Generations and Levels” in the Essbase Administration Services Online Help.

A comment can be up to 255 characters long. Outline Editor displays comments to the right of the dimension or member in the following format: /* comment */ ➤ To add comments to a dimension or member. see “Setting Comments on Dimensions and Members” in the Essbase Administration Services Online Help. Adding Comments 149 . Adding Comments You can add comments to dimensions and members.➤ To add UDAs to a member. see “Working with UDAs” in the Essbase Administration Services Online Help.

150 Setting Dimension and Member Properties .

................................... 163 Calculating Attribute Data... “Developing Report Scripts” Process for Creating Attributes When working with attributes in Outline Editor perform the following tasks: Process for Creating Attributes 151 . 160 Building Attribute Dimensions ................................10 In This Chapter Working with Attributes Process for Creating Attributes...............................................” For information on creating aggregate storage applications................................................. Through attributes you can group and analyze members of dimensions based on their characteristics... Databases............................................................... Some of the information is not relevant to aggregate storage databases...... “Creating and Maintaining Partitions” Using attributes in Report Writer Chapter 32........... see Chapter 57................... 152 Understanding Attribute Dimensions......... see Chapter 58....” You can find other information about attributes in relevant sections of this book..................... “Aggregate Storage Applications....... “Designing Partitioned Applications” Chapter 14................................. 166 Attributes describe characteristics of data such as the size and color of products.......................................................... 162 Setting Member Names in Attribute Dimensions ................................................................ 153 Designing Attribute Dimensions ............................. and Outlines.......... Note: The information in this chapter is designed for block storage databases........................................ “Comparison of Aggregate and Block Storage..................... This chapter describes how to create and manage attributes in an Essbase Server outline....... Information Needed Defining attributes through dimension build More Information “Building Attribute Dimensions and Associating Attributes” on page 306 ● ● Using attributes in partitions Chapter 13....... For detailed information on the differences between aggregate and block storage........................................................................ 151 Understanding Attributes ..................................

1. Create a dimension. See “Adding Dimensions and Members to an Outline” on page 120. In the outline, position the attribute dimensions after all standard dimensions. 2. Tag the dimension as an attribute dimension and set attribute dimension type as text, numeric, Boolean, or date. See “Creating Attribute Dimensions” on page 136. 3. Add members to the attribute dimension. See “Adding Dimensions and Members to an Outline” on page 120. 4. Associate a base dimension with the attribute dimension. See “Understanding the Rules for Attribute Dimension Association” on page 155. 5. Associate members of the base dimension with members of the attribute dimension. See “Understanding the Rules for Attribute Member Association” on page 155. 6. If necessary, set up the attribute calculations. See “Calculating Attribute Data” on page 166.

Understanding Attributes
You can use the Essbase attribute feature to retrieve and analyze data not only from the perspective of dimensions, but also in terms of characteristics, or attributes, of those dimensions. For example, you can analyze product profitability based on size or packaging, and you can make more effective conclusions by incorporating into the analysis market attributes such as the population size of each market region. Such an analysis could tell you that decaffeinated drinks sold in cans in small (less than 6,000,000population) markets are less profitable than you anticipated. For more details, you can filter the analysis by specific attribute criteria, including minimum or maximum sales and profits of different products in similar market segments. Here are a few ways analysis by attribute provides depth and perspective, supporting betterinformed decisions:
● ●

You can select, aggregate, and report on data based on common features (attributes). By defining attributes as having a text, numeric, Boolean, or date type, you can filter (select) data using type-related functions such as AND, OR, and NOT operators and <, >, and = comparisons. You can use the numeric attribute type to group statistical values by attribute ranges; for example, population groupings such as <500,000, 500,000–1,000,000, and >1,000,000. Through the Attribute Calculations dimension automatically created by Essbase, you can view sums, counts, minimum or maximum values, and average values of attribute data. For example, when you enter Avg and Bottle into a spreadsheet, Essbase retrieves calculated values for average sales in bottles for all the column and row intersections on the sheet. You can perform calculations using numeric attribute values in calculation scripts and member formulas; for example, to determine profitability by ounce for products sized by the ounce. You can create crosstabs of attribute data for the same dimension, and you can pivot and drill down for detail data in spreadsheets.

152 Working with Attributes

An attribute crosstab is a report or spreadsheet showing data consolidations across attributes of the same dimension. The crosstab example below displays product packaging as columns and the product size in ounces as rows. At their intersections, you see the profit for each combination of package type and size. From this information, you can see which size-packaging combinations were most profitable in the Florida market.
Product Year Florida Profit Actual Bottle ========= 32 20 16 12 Ounces 946 791 714 241 2,692 Can ========= N/A N/A N/A 2,383 2,383 Pkg Type ========= 946 791 714 2,624 5,075

Understanding Attribute Dimensions
In the Sample Basic database, products have attributes that are characteristics of the products. For example, products have an attribute that describes their packaging. In the outline, you see these characteristics as two dimensions, the Products dimension, and the Pkg Type attribute dimension that is associated with it. An attribute dimension has the word Attribute next to its name in the outline. Figure 37 shows part of the Sample Basic outline featuring the Product dimension and three attribute dimensions, Caffeinated, Ounces, and Pkg Type.

Figure 37

Outline Showing Base and Attribute Dimensions

In the outline, to the right of the Product dimension, the terms Caffeinated, Ounces, and Pkg Type show that these attribute dimensions are associated with the Product dimension.
Understanding Attribute Dimensions 153

A standard dimension is any dimension that is not an attribute dimension. When an attribute dimension is associated with a standard dimension, the standard dimension is the base dimension for that attribute dimension. In the outline in Figure 37, the Product dimension is the base dimension for the Caffeinated, Ounces, and Pkg Type attribute dimensions.
Note:

Attribute dimensions and members are Dynamic Calc, so Essbase calculates attribute information at retrieval time. Attribute data is not stored in the database.

Understanding Members of Attribute Dimensions
Members of an attribute dimension are potential attributes of the members of the associated base dimension. After you associate a base dimension with an attribute dimension, you associate members of the base dimension with members of the associated attribute dimension. The Market dimension member Connecticut is associated with the 6000000 member of the Population attribute dimension. That makes 6000000 an attribute of Connecticut. In the outline, the information next to a base dimension member shows the attributes of that member. In Figure 37, next to product “100-10, Caffeinated:True, Ounces:12, Pkg Type:Can” shows that product 100-10 has three attributes—product 100-10 has caffeine, it is sold in 12ounce containers, and the containers are cans.

Understanding the Rules for Base and Attribute Dimensions and Members
There are several important rules regarding members of attribute dimensions and their base dimensions.
● ●

You can tag only sparse dimensions as attribute dimensions. Before you can save an outline to the server, each attribute dimension must be associated with a standard, sparse dimension as its base dimension. Attribute dimensions must be the last dimensions in the outline. Attribute dimensions have a type setting—text, numeric, Boolean, or date. Text is the default setting. Although assigned at the dimension level, the type applies only to the level 0 members of the dimension. For more information, see “Understanding Attribute Types” on page 156. If you remove the attribute tag from a dimension, Essbase removes prefixes or suffixes from its member names. Prefixes and suffixes are not visible in the outline. For more information, see “Setting Prefix and Suffix Formats for Member Names of Attribute Dimensions” on page 163. A base dimension member can have many attributes, but only one attribute from each particular attribute dimension. For example, product 100-10 can have size and packaging attributes, but only one size and only one type of packaging.

● ●

154 Working with Attributes

You cannot associate an attribute with an implied shared member the child of which is tagged as shared. Essbase does not support attributes for Hybrid Analysis-enabled members.

You can use attribute values in calculations in the following comparisons:
● ● ● ● ● ● ●

> (greater than) >= (greater than or equal to) < (less than) <= (less than or equal to) = = (equal to) <> or != (not equal to) IN

Understanding the Rules for Attribute Dimension Association
When you associate an attribute dimension with a standard dimension, the standard dimension is known as the base dimension for that attribute dimension.
● ● ●

An attribute dimension must be associated with a sparse standard dimension. A standard dimension can be a base dimension for more than one attribute dimension. An attribute dimension can be associated with only one base dimension. For example, you might have a Size attribute dimension with members Small, Medium, and Large. If you associate the Size attribute dimension with the Product dimension, you cannot also associate the Size attribute dimension with the Market dimension. Tracking size-related information for the Market dimension requires another attribute dimension with a different name, for example, MarketSize, with the MarketSize attribute dimension associated with the Market dimension.

Understanding the Rules for Attribute Member Association
When you associate a member of an attribute dimension with a member of a base dimension, follow these rules:

You cannot associate multiple members from the same attribute dimension with the same base dimension member. For example, the Bottle and Can package types cannot both be associated with the product 100-30. You can associate members from different attribute dimensions with the same member of a base dimension. For example, a decaffeinated cola product (100-30) sold in 16 ounce bottles has three attributes—Caffeinated:False; Ounces:16; and Pkg Type:Bottle. After attributes are associated with base dimension members, if you cut or copy and paste base dimension members to another location in the outline, the attribute associations are lost.

Understanding Attribute Dimensions 155

Essbase does not require that each member of a base dimension be associated with a member of an attribute dimension. All base dimension members associated with members of a particular attribute dimension must be at the same level. For example, in Figure 38, all Market dimension members that have Population attributes are at level 0. You cannot associate East, which is a level 1 member, with a Population attribute since the other members of the Market dimension that have Population attributes are level 0 members.

Figure 38

Association of Attributes with the Same Level Members of the Market Dimension

The level 0 members of attribute dimensions are the only members that you can associate with base dimension members. For example, in the Population attribute dimension, you can associate only level 0 members such as 3000000, 6000000, and 9000000, with members of the Market dimension. You cannot associate a level 1 member such as Small. The name of the level 0 member of an attribute dimension is the attribute value. The only members of attribute dimensions that have attribute values are level 0 members. You can use the higher-level members of attribute dimensions to select and group data. For example, you can use Small, the level 1 member of the Population attribute dimension, to retrieve sales in both the 3000000 and 6000000 population categories.

Understanding Attribute Types
Attribute dimensions have a text, numeric, Boolean, or date type that enables different functions for grouping, selecting, or calculating data. Although assigned at the dimension level, the attribute type applies only to level 0 members of the attribute dimension.

The default attribute type is text. Text attributes enable the basic attribute member selection and attribute comparisons in calculations. When you perform such comparisons, Essbase compares characters. For example, the package type Bottle is less than the package type Can because B precedes C in the alphabet. In Sample Basic, Pkg Type is an example of a text attribute dimension. The names of level 0 members of numeric attribute dimensions are numeric values. You can include the names (values) of numeric attribute dimension members in calculations. For

156 Working with Attributes

example, you can use the number of ounces specified in the Ounces attribute to calculate profit per ounce for each product. You can also associate numeric attributes with ranges of base dimension values; for example, to analyze product sales by market population groupings—states with 3,000,000 population or less in one group, states with a population between 3,000,001 and 6 million in another group, and so on. See “Setting Up Member Names Representing Ranges of Values” on page 165.

All Boolean attribute dimensions in a database contain only two members. The member names must match the settings for the database; for example, True and False. If there is more than one Boolean attribute dimension, specify a prefix or suffix member name format to ensure unique member names; for example, Caffeinated_True and Caffeinated_False. For a discussion of how to change Boolean names, see “Setting Boolean Attribute Member Names” on page 164. You can use date attributes to specify the date format—month-day-year or day-month-year —and to sequence information accordingly. For a discussion of how to change date formats, see “Changing the Member Names in Date Attribute Dimensions” on page 164. You can use date attributes in calculations. For example, you can compare dates in a calculation that selects product sales from markets established since 10-12-1999. Essbase supports date attributes from January 1, 1970 through January 1, 2038.

Comparing Attribute and Standard Dimensions
In general, attribute dimensions and their members are similar to standard dimensions and members. You can provide aliases and member comments for attributes. Attribute dimensions can include hierarchies and you can name generations and levels. You can perform the same spreadsheet operations on attribute dimensions and members as you can on standard dimensions and members; for example, to analyze data from different perspectives, you can retrieve, pivot, and drill down in the spreadsheet. Table 12 describes major differences between attribute and standard dimensions and their members.
Table 12

Differences Between Attribute and Standard Dimensions Attribute Dimensions Standard Dimensions Can be dense or sparse

Storage

Sparse. Their base dimensions must also be sparse. Dynamic Calc only, therefore not stored in the database. The outline does not display this property. Must be the last dimensions in the outline

Storage property

Can be Store Data, Dynamic Calc and Store, Dynamic Calc, Never Share, or Label Only Must be ahead of all attribute dimensions in the outline Can be defined along standard dimensions.

Position in outline

Partitions

Cannot be defined along attribute dimensions, but you can use attributes to define a partition on a base dimension.

Understanding Attribute Dimensions 157

Attribute Dimensions Formulas (on members) Shared members Two-pass calculation member property Two-pass calculation with run-time formula Cannot be associated Not allowed Not available If a member formula contains a run-time dependent function associated with an attribute member name, and the member with the formula is tagged as two-pass, calculation skips the member and issues a warning message. Run-time dependent functions include the following: @CURRMBR, @PARENT, @PARENTVAL, @SPARENTVAL, @MDPARENTVAL, @ANCEST, @ANCESTVAL, @SANCESTVAL, and @MDANCESTVAL. Order of calculation of members tagged twopass depends on order in outline. The last dimension is calculated last. Calculation skipped, warning message issued. Thus member intersection of two-pass tagged members and upper level members may return different results from calculation on standard dimensions. Calculations skip dense dimensions if they are on non-existing stored blocks. To identify nonexisting stored blocks, export the database or run query to find out whether block has any data. Not allowed For all members, calculated through the Attribute Calculations dimension members: Sum, Count, Min, Max, and Avg. Consolidation operators in the outline are ignored during attribute calculations. Available types include text, numeric, Boolean, and date. Must be associated with a base dimension List the base dimension data associated with the selected attribute. For example, drilling down on the attribute Glass displays sales for each product packaged in glass, where Product is the base dimension for the Pkg Type attribute dimension.

Standard Dimensions Can be associated Allowed Available Calculation is performed on standard members with run-time formulas and tagged two-pass.

Two-pass, multiple dimensions: Calculation order

Calculation result is not dependent on outline order for members tagged two-pass in more than one dimension. Available

Two-pass calculation with no member formula

Dense Dynamic Calc members in nonexisting stored blocks

Available

UDAs on members Consolidations

Allowed Consolidation operation indicated by assigning the desired consolidation symbol to each member

Member selection facilitated by Level 0 member typing Associations Spreadsheet drill-downs

All members treated as text.

N/A List lower or sibling levels of detail in the standard dimensions. For example, drilling down on QTR1 displays a list of products and their sales for that quarter.

158 Working with Attributes

Comparing Attributes and UDAs
Attributes and UDAs both enable analysis based on characteristics of the data. Attributes provide much more capability than UDAs. Table 13 compares them. Checkmarks indicate the feature supports the corresponding capability.
Table 13

Comparing Attributes and UDAs Attributes Feature UDAs Feature

Capability Data Storage You can associate with sparse dimensions. You can associate with dense dimensions. Data Retrieval You can group and retrieve consolidated totals by attribute or UDA value. For example, associate the value High Focus Item to various members of the Product dimension and use that term to retrieve totals and details for just those members. You can categorize attributes in a hierarchy and retrieve consolidated totals by higher levels in the attribute hierarchy; for example, if each product has a specific size attribute such as 8, 12, 16, or 32, and the sizes are categorized as small, medium, and large. You can view the total sales of small products. You can create crosstab views displaying aggregate totals of attributes associated with the same base dimension. You can use Boolean operators AND, OR, and NOT with attribute and UDA values to further refine a query. For example, you can select decaffeinated drinks from the 100 product group. Because attributes have a text, Boolean, date, or numeric type, you can use appropriate operators and functions to work with and display attribute data. For example, you can view sales totals of all products introduced after a specific date. You can group numeric attributes into ranges of values and let the dimension building process automatically associate the base member with the appropriate range. For example, you can group sales in various regions based on ranges of their populations

Simple

More difficult to implement, requiring additional calculation scripts or commands

More difficult to implement

You can show a crosstab of all values of each attribute dimension.

You can only retrieve totals based on specific UDA values.

Understanding Attribute Dimensions 159

Capability —less than 3 million, between 3 and 6 million, and so on. Through the Attribute Calculations dimension, you can view aggregations of attribute values as sums, counts, minimums, maximums, and averages. You can use an attribute in a calculation that defines a member. For example, you can use the weight of a product in ounces to define the profit per ounce member of the Measures dimension. You can retrieve specific base members using attribute-related information.

Attributes Feature

UDAs Feature

Powerful conditional and value-based selections Data Conversion Based on the value of a UDA, you can change the sign of the data as it is loaded into the database. For example, you can reverse the sign of all members with the UDA Debit. Calculation Scripts You can perform calculations on a member if its attribute or UDA value matches a specific value. For example, you can increase the price by 10% of all products with the attribute or UDA of Bottle. You can perform calculations on base members whose attribute value satisfies conditions that you specify. For example, you can calculate the Profit per Ounce of each base member.

Limited to text string matches only

Designing Attribute Dimensions
Essbase provides more than one way to design attribute information into a database. Most often, defining characteristics of the data through attribute dimensions and their members is the best approach. The following sections discuss when to use attribute dimensions, when to use other features, and how to optimize performance when using attributes.
● ● ●

“Using Attribute Dimensions” on page 161 “Using Alternative Design Approaches” on page 161 “Optimizing Outline Performance” on page 162

160 Working with Attributes

Using Attribute Dimensions
For the most flexibility and functionality, use attribute dimensions to define attribute data. Using attribute dimensions provides the following features:

Sophisticated, flexible data retrieval You can view attribute data only when you want to, you can create meaningful summaries through crosstabs, and using type-based comparisons, you can selectively view just the data you want to see.

Additional calculation functionality Not only can you perform calculations on the names of members of attribute dimensions to define members of standard dimensions, you can also access five different types of consolidations of attribute data—sums, counts, averages, minimums, and maximums.

Economy and simplicity Because attribute dimensions are sparse, Dynamic Calc, they are not stored as data. Compared to using shared members, outlines using attribute dimensions contain fewer members and are easier to read.

For more information about attribute features, see “Understanding Attributes” on page 152.

Using Alternative Design Approaches
In some situations, consider one of the following approaches:

UDAs. Although UDAs provide less flexibility than attributes, you can use them to group and retrieve data based on its characteristics. See “Comparing Attributes and UDAs” on page 159. Shared members. For example, to include a seasonal analysis in the Year dimension, repeat the months as shared members under the appropriate season; Winter: Jan (shared member), Feb (shared member), and so on. A major disadvantage of using shared members is that the outline becomes very large if the categories repeat a lot of members. Standard dimensions and members. Additional standard dimensions provide flexibility, but they add storage requirements and complexity to a database. For guidelines on evaluating the impact of additional dimensions, see “Analyzing and Planning” on page 69.

Table 14 describes situations where you might consider one of these alternative approaches for managing attribute data in a database.
Table 14

Considering Alternatives to Attribute Dimensions Alternative to Consider UDAs or shared members. Shared members or members of separate, standard dimensions.

Situation Analyze attributes of dense dimensions Perform batch calculation of data

Designing Attribute Dimensions 161

Situation Define the name of a member of an attribute dimension as a value that results from a formula Define attributes that vary over time

Alternative to Consider Shared members or members of separate, standard dimensions Members of separate, standard dimensions. For example, to track product maintenance costs over a period of time, the age of the product at the time of maintenance is important. However, using the attribute feature you could associate only one age with the product. You need multiple members in a separate dimension for each time period that you want to track. Batch calculation with shared members or members of separate, standard dimensions.

Minimize retrieval time with large numbers of basedimension members

Optimizing Outline Performance
Outline layout and content can affect attribute calculation and query performance. For general outline design guidelines, see “Designing an Outline to Optimize Performance” on page 83. To optimize attribute query performance, consider the following design tips:

Ensure that attribute dimensions are the only sparse Dynamic Calc dimensions in the outline. Locate sparse dimensions after dense dimensions in the outline. Place the most-queried dimensions at the beginning of the sparse dimensions and attribute dimensions at the end of the outline. In most situations, the base dimensions are the most queried dimensions.

For information on optimizing calculation of outlines containing attributes, see “Optimizing Calculation and Retrieval Performance” on page 169.

Building Attribute Dimensions
To build an attribute dimension, first tag the dimension as attribute and assign the dimension a type. Then associate the attribute dimension with a base dimension. Finally, associate each level 0 member of the attribute dimension with a member of the associated base dimension.

➤ To build an attribute dimension, see “Defining Attributes” in the Essbase Administration Services
Online Help.

➤ To view the dimension, attribute value and attribute type of a specific attribute member, use a
tool:
Tool Administration Services MaxL Topic Viewing Attribute Information in Outlines query database Location Essbase Administration Services Online Help Essbase Technical Reference

162 Working with Attributes

Tool ESSCMD

Topic GETATTRINFO

Location Essbase Technical Reference

Setting Member Names in Attribute Dimensions
When you use the attribute feature, Essbase establishes some default member names; for example, the system-defined True and False would preclude other member names of True and False. You can change these system-defined names for the database. Date attributes and numeric attributes can also be duplicated. To avoid duplicate name confusion, you can establish settings for qualifying member names in attribute dimensions The outline does not show the fully qualified attribute names, but you can see the full attribute names anywhere you select specific members, such as when you define partitions or select information to be retrieved. Define the member name settings before you define or build the attribute dimensions. Changing the settings after the attribute dimensions and members are defined could result in invalid member names. The following sections describe how to work with the names of members of attribute dimensions:

“Setting Prefix and Suffix Formats for Member Names of Attribute Dimensions” on page 163 “Setting Boolean Attribute Member Names” on page 164 “Changing the Member Names in Date Attribute Dimensions” on page 164 “Setting Up Member Names Representing Ranges of Values” on page 165 “Changing the Member Names of the Attribute Calculations Dimension” on page 166
Note:

● ● ● ●

If you partition on outlines containing attribute dimensions, the name format settings of members described in this section must be identical in the source and target outlines.

Setting Prefix and Suffix Formats for Member Names of Attribute Dimensions
The information in this section does not apply to duplicate member attribute dimensions. The names of members of Boolean, date, and numeric attribute dimensions are values. It is possible to encounter duplicate attribute values in different attribute dimensions.

Boolean example If you have more than one Boolean attribute dimension in an outline, the two members of each of those dimensions have the same names, by default, True and False.

Date example

Setting Member Names in Attribute Dimensions 163

If you have more than one date attribute dimension, some member names in both dimensions could be the same. For example, the date that a store opens in a certain market could be the same as the date a product was introduced.

Numeric example 12 can be the attribute value for the size of a product and 12 could also be the value for the number of packing units for a product. This example results in two members with the same name—12.

You can define unique names by attaching a prefix or suffix to member names in Boolean, date, and numeric attribute dimensions in the outline. As the prefix or suffix you can choose to affix the dimension, parent, grandparent, or all ancestors to the attribute name. For example, by setting member names of attribute dimensions to include the dimension name as the suffix, attached by an underscore, the member value 12 in the Ounces attribute dimension assumes the unique, full attribute member name, 12_Ounces. By default, Essbase assumes that no prefix or suffix is attached to the names of members of attribute dimensions. The convention that you select applies to the level 0 member names of all numeric, Boolean, and date attribute dimensions in the outline. You can define aliases for these names if you wish to display shorter names in retrievals.

➤ To define prefix and suffix formats, see “Defining a Prefix or Suffix Format for Members of
Attribute Dimensions” in the Essbase Administration Services Online Help.

Setting Boolean Attribute Member Names
When you set the dimension type of an attribute dimension as Boolean, Essbase automatically creates two level 0 members with the names specified for the Boolean attribute settings. The initial Boolean member names in a database are set as True and False. To change these default names, for example, to Yes and No, define the member names for Boolean attribute dimensions before you create Boolean attribute dimensions in the database. Before you can set an attribute dimension type as Boolean, you must delete all existing members in the dimension.

➤ To define the database setting for the names of members of Boolean attribute dimensions, see
“Setting Member Names for Boolean Attribute Dimensions” in the Essbase Administration Services Online Help.

Changing the Member Names in Date Attribute Dimensions
You can change the format of members of date attribute dimensions. For example, you can use the following date formats:

mm-dd-yyyy displays the month before the day; for example, October 18, 2004 is displayed as 10-18-2004.

164 Working with Attributes

dd-mm-yyyy displays the day before the month; for example, October 18, 1999 is displayed as 18-10-2004.

If you change the date member name format, the names of existing members of date attribute dimensions may be invalid. For example, if the 10-18-2004 member exists and you change the format to dd-mm-2004, outline verification will find this member invalid. If you change the date format, you must rebuild the date attribute dimensions.

➤ To change member names in date attribute dimensions, see “Setting the Member Name Format
of Date Attribute Dimensions” in the Essbase Administration Services Online Help.

Setting Up Member Names Representing Ranges of Values
Members of numeric attribute dimensions can represent single numeric values or ranges of values:

Single value example: the member 12 in the Ounces attribute dimension represents the single numeric value 12; you associate this attribute with all 12-ounce products. The outline includes a separate member for each size; for example, 16, 20, and 32. Range of values example: the Population attribute dimension, as shown:

Figure 39

Population Attribute Dimension and Members

In this outline, the members of the Population attribute dimension represent ranges of population values in the associated Market dimension. The 3000000 member represents populations from zero through 3,000,000; the 6000000 member represents populations from 3,000,001 through 6,000,000; and so on. Each range includes values greater than the name of the preceding member up to and including the member value itself. A setting for the outline establishes that each numeric member represents the top of its range. You can also define this outline setting so that members of numeric attribute dimensions are the bottoms of the ranges that they represent. For example, if numeric members are set to define the bottoms of the ranges, the 3000000 member represents populations from 3,000,000 through 5,999,999 and the 6000000 member represents populations from 6,000,000 through 8,999,999. When you build the base dimension, Essbase automatically associates members of the base dimension with the appropriate attribute range. For example, if numeric members represent the

Setting Member Names in Attribute Dimensions 165

tops of ranges, Essbase automatically associates the Connecticut market, with a population of 3,269,858, with the 6000000 member of the Population attribute dimension. In the dimension build rules file, specify the size of the range for each member of the numeric attribute dimension. In the above example, each attribute represents a range of 3,000,000.

➤ To define ranges in numeric attribute dimensions, see “Assigning Member Names to Ranges of
Values” in the Essbase Administration Services Online Help.
Note:

Numeric attribute dimension member names are recommended to contain no more than six decimal positions. Otherwise, because of precision adjustments, an outline may not pass verification.

Changing the Member Names of the Attribute Calculations Dimension
To avoid duplicating names in an outline, you may need to change the name of the Attribute Calculations dimension or its members. See “Understanding the Attribute Calculations Dimension” on page 167. Regardless of the name that you use for a member, its function remains the same. For example, the second (Count) member always counts, no matter what you name it.

➤ To change member names in the Attribute Calculations dimension, see “Changing Member
Names of Attribute Calculations Dimensions” in the Essbase Administration Services Online Help.

Calculating Attribute Data
Essbase calculates attribute data dynamically at retrieval time, using members from a systemdefined dimension created specifically by Essbase. Using this dimension, you can apply different calculation functions, such as a sum or an average, to the same attribute. You can also perform specific calculations on members of attribute dimensions; for example, to determine profitability by ounce for products sized by the ounce. The following information assumes that you understand the concepts of attribute dimensions and Essbase calculations, including dynamic calculations. See these topics:
● ● ● ● ●

“Understanding the Attribute Calculations Dimension” on page 167 “Understanding the Default Attribute Calculations Members” on page 168 “Viewing an Attribute Calculation Example” on page 168 “Accessing Attribute Calculations Members Using the Spreadsheet” on page 169 “Optimizing Calculation and Retrieval Performance” on page 169

166 Working with Attributes

● ●

“Using Attributes in Calculation Formulas” on page 170 “Understanding Attribute Calculation and Shared Members” on page 171

Understanding the Attribute Calculations Dimension
When you create the first attribute dimension in the outline, Essbase also creates the Attribute Calculations dimension comprising five members with the default names Sum, Count, Min (minimum), Max (maximum), and Avg (average). You can use these members in spreadsheets or in reports to dynamically calculate and report on attribute data, such as the average yearly sales of 12-ounce bottles of cola in the West. The Attribute Calculations dimension is not visible in the outline. You can see it wherever you select dimension members, such as in the Essbase Spreadsheet Add-in for Excel. The attribute calculation dimension has the following properties:

System-defined. When you create the first attribute dimension in an application, Essbase creates the Attribute Calculations dimension and its members (Sum, Count, Min, Max, and Avg). Each member represents a type of calculation to be performed for attributes. For a discussion of calculation types, see “Understanding the Default Attribute Calculations Members” on page 168. Label only. Like all label only dimensions, the Attribute Calculations dimension shares the value of its first child, Sum. For more information on the label only dimension property, see “Member Storage Properties” on page 82. Dynamic Calc. The data in the Attribute Calculations dimension is calculated when a user requests it and is then discarded. You cannot store calculated attribute data in a database. See Chapter 25, “Dynamically Calculating Data Values”. Not displayed in Outline Editor. The Attribute Calculations dimension is not displayed in Outline Editor. Members from this dimension can be viewed in spreadsheets and in reports.

There is no consolidation along attribute dimensions. You cannot tag members from attribute dimensions with consolidation symbols (for example, + or -) or with member formulas in order to calculate attribute data. As Dynamic Calc members, attribute calculations do not affect the batch calculation in terms of time or calculation order. To calculate attribute data at retrieval time, Essbase performs the following tasks: 1. Finds the base-dimension members that are associated with the specified attributedimension members present in the current query 2. Dynamically calculates the sum, count, minimum, maximum, or average for the attributemember combination for the current query 3. Displays the results in the spreadsheet or report 4. Discards the calculated values—that is, the values are not stored in the database
Note:

Essbase excludes #MISSING values when calculating attribute data.

Calculating Attribute Data 167

For example, as shown in Figure 40, a spreadsheet user specifies two members of attribute dimensions (Ounces_16 and Bottle) and an Attribute Calculations member (Avg) in a spreadsheet report. Upon retrieval, Essbase dynamically calculates the average sales values of all products associated with these attributes for the current member combination (Actual -> Sales > East -> Qtr1):

Figure 40

Retrieving an Attribute Calculations Member

For information on accessing calculated attribute data, see “Accessing Attribute Calculations Members Using the Spreadsheet” on page 169.

Understanding the Default Attribute Calculations Members
The Attribute Calculations dimension contains five members used to calculate and report attribute data. These members are as follows:

Sum calculates a sum, or total, of the values for a member with an attribute or combination of attributes. Count calculates the number of members with the specified attribute or combination of attributes, for which a data value exists. Count includes only those members that have data blocks in existence. To calculate a count of all members with certain attributes, regardless of whether or not they have data values, use the @COUNT function in combination with the @ATTRIBUTE function. For more information, see the Essbase Technical Reference. Avg calculates a mathematical mean, or average, of the non-missing values for an specified attribute or combination of attributes (Sum divided by Count). Min calculates the minimum data value for a specified attribute or combination of attributes. Max calculates the maximum data value for a specified attribute or combination of attributes.
Note:

● ●

Each of these calculations excludes #MISSING values. You can change these default member names, subject to the same naming conventions as standard members. For a discussion of Attribute Calculations member names, see “Changing the Member Names of the Attribute Calculations Dimension” on page 166.

Viewing an Attribute Calculation Example
As an example of how Essbase calculates attribute data, consider the following yearly sales data for the East:
168 Working with Attributes

Table 15

Sample Attribute Data Associated Attributes Ounces_12, Can Ounces_12, Can Ounces_12, Can Ounces_32, Bottle Ounces_32, Bottle Ounces_32, Bottle Sales Value for Attribute-Member Combination 23205 3068 1074 6398 3183 5664

Base-Dimension Member Cola Diet Cola Diet Cream Grape Orange Strawberry

A spreadsheet report showing calculated attribute data might look like the following illustration:

Figure 41

Sample Spreadsheet with Attribute Data

As shown in the figure above, you can retrieve multiple Attribute Calculations members for attributes. For example, you can calculate Sum, Count, Avg, Min, and Max for 32-ounce bottles and cans.

Accessing Attribute Calculations Members Using the Spreadsheet
You can access members from the Attribute Calculations dimension in Essbase Spreadsheet Add-in for Excel. From the spreadsheet, users can view Attribute Calculations dimension members using any of the following methods:
● ● ●

Entering members directly into a sheet Selecting members from the Query Designer Entering members as an EssCell parameter

For more information on accessing calculated attribute data from the spreadsheet, see the Essbase Spreadsheet Add-in for Excel User's Guide.

Optimizing Calculation and Retrieval Performance
To optimize attribute calculation and retrieval performance, consider the following considerations:
Calculating Attribute Data 169

The calculation order for attribute calculations is the same as the order for dynamic calculations. For an outline of calculation order, see “Calculation Order for Dynamic Calculation” on page 414. Since Essbase calculates attribute data dynamically at retrieval time, attribute calculations do not affect the performance of the overall (batch) database calculation. Tagging base-dimension members as Dynamic Calc may increase retrieval time. When a query includes the Sum member and an attribute-dimension member whose associated base-member is tagged as two-pass, retrieval time may be slow. To maximize attribute retrieval performance, use any of the following techniques:

● ●

Configure the outline using the tips in “Optimizing Outline Performance” on page 162. Drill down to the lowest level of base dimensions before retrieving data. For example, in Essbase Spreadsheet Add-in for Excel, turn on the Navigate Without Data feature, drill down to the lowest level of the base dimensions included in the report, and then retrieve data. When the members of a base dimension are associated with several attribute dimensions, consider grouping the members of the base dimension according to their attributes. For example, in the Sample Basic database, you could group all 8-ounce products. Grouping members by attribute may decrease retrieval time.

Using Attributes in Calculation Formulas
In addition to using the Attribute Calculations dimension to calculate attribute data, you can also use calculation formulas on members of standard or base dimensions to perform specific calculations on members of attribute dimensions; for example, to determine profitability by ounce for products sized by the ounce. You cannot associate formulas with members of attribute dimensions.
Note:

Some restrictions apply when using attributes in formulas associated with two-pass members. See the rows about two-pass calculations in Table 12 on page 157.

You can use the following functions to perform specific calculations on attributes:
Type of Calculation Generate a list of all base members with a specific attribute. For example, you can generate a list of members that have the Bottle attribute, and then increase the price for those members. Return the value of the level 0 attribute member that is associated with the base member being calculated.
● ●

Function to Use @ATTRIBUTE

@ATTRIBUTEVAL @ATTRIBUTEBVAL @ATTRIBUTESVAL

From a numeric or date attribute dimension (using @ATTRIBUTEVAL) From a Boolean attribute dimension (using @ATTRIBUTEBVAL)

170 Working with Attributes

Type of Calculation

Function to Use

From a text attribute dimension (using @ATTRIBUTESVAL)

For example, you can return the numeric value of a size attribute (for example, 12 for the member 12 under Ounces) for the base member being calculated (for example, Cola). Convert a date string to numbers for a calculation. For example, you can use @TODATE in combination with the @ATTRIBUTEVAL function to increase overhead costs for stores opened after a certain date. Generate a list of all base dimension members associated with attributes that satisfy the conditions that you specify. For example, you can generate a list of products that are greater than or equal to 20 ounces, and then increase the price for those products. @TODATE

@WITHATTR

Note:

For syntax information and examples for these functions, see the Essbase Technical Reference. For an additional example using @ATTRIBUTEVAL in a formula, see “Calculating an Attribute Formula” on page 368.

Understanding Attribute Calculation and Shared Members
Attribute calculations start at level 0 and stop at the first stored member. Therefore, if your outline has placed a stored member in between two shared members in a an outline hierarchy, the calculation results may not include the higher shared member. For example:
Member 1 (stored) Member A (stored) Member 2 (shared) Member B (stored) Member 1 (shared member whose stored member is Member 1 above)

In this example, when an attribute calculation is performed, the calculation starts with level 0 Member 2, and stops when it encounters the first stored member, Member A. Therefore, Member 1 would not be included in the calculation. Avoid mixing shared and stored members to avoid unexpected results with attribute calculation. For this example, if Member 2 were not shared, or Member 1 did not have a corresponding shared member elsewhere in the outline, calculation results would be as expected.

Calculating Attribute Data 171

172 Working with Attributes

11
In This Chapter

Linking Objects to Essbase Data

Understanding LROs ............................................................................................................. 173 Understanding LRO Types and Data Cells ..................................................................................... 174 Setting Up Permissions for LROs ............................................................................................... 175 Viewing and Deleting LROs...................................................................................................... 175 Exporting and Importing LROs .................................................................................................. 176 Limiting LRO File Sizes for Storage Conservation ............................................................................. 176

This chapter describes how you can link various kinds of data with any cell in an Essbase database, using a linked reporting object (LRO). This ability is similar to the file attachment features in an e-mail software package. An LRO provides improved support for planning and reporting applications and can enhance your data analysis capabilities.
Note:

The information in this chapter is not relevant to aggregate storage databases. See Chapter 57, “Comparison of Aggregate and Block Storage.”

Understanding LROs
LROs are objects (alternatively called artifacts) that you associate with specific data cells in an Essbase database. Users create linked objects through Essbase Spreadsheet Add-in for Excel by selecting a data cell and choosing a menu item. There is no limit to the number of objects you can link to a cell. The objects are stored on the Essbase Server where they are available to any user with the appropriate access permissions. Users retrieve and edit the objects through the Essbase Spreadsheet Add-in for Excel Linked Objects Browser feature, enabling them to view objects linked to the selected cell. For the maximum sizes of the types of linked objects described in Table 16, see Appendix A, “Limits.”
Table 16

Types of Linked Objects Description A text annotation

Object Type Cell note

Understanding LROs 173

Object Type File

Description An external file, such as a Microsoft Word document, an Excel spreadsheet, a scanned image, an audio clip, or an HTML file (for example, mypage.htm). An acronym for Uniform Resource Locator. A string that identifies the location of a resource on the World Wide Web, such as a document, image, downloadable file, service, electronic mailbox, or other resource. For example:
http://www.oracle.com ftp://ftp.oracle.com file:///D|/essbase/Docs/ en/esb_infomap.htm

URL

Linked partition

A set of data cells that you can link to in another Essbase database.

For example, a sales manager may attach cell notes to recently updated budget items. A finance manager might link a spreadsheet containing supporting data for this quarter’s results. A product manager might link bitmap images of new products. A sales manager may link the URL of a company’s Web site to quickly access the information on the Web site.

Understanding LRO Types and Data Cells
LROs are linked to data cells—not to the data contained in the cells. The link is based on a specific member combination in the database. Adding or removing links to a cell does not affect the cell contents. When a user links an object to a cell, Essbase stores in the object catalog information about the type of object, the name of the last user to modify the object, and the date the object was modified. How Essbase stores the LRO depends on the LRO type:

If the object is a cell note, the text is stored as part of the object description in the catalog entry. If the object is a file, the Essbase stores the contents of the file in the database directory on the Essbase Server, giving it a .lro extension. Essbase imposes no restrictions on the data formats of linked files and performs no file-type checking. It is up to the user’s client computer to render the file after retrieving it from the Essbase Server. If the object is a URL, Essbase stores the URL string as part of the object description in the catalog entry. Essbase does not check the syntax of the URL until the user tries to view it. At that time, Essbase does a preliminary syntax check; then the default Web browser checks for the existence of the URL. If the object is a linked partition, it is available through the Essbase Partitioning feature.

Before you perform any tasks related to LROs, be aware of these facts:

Essbase uses the database index to locate and retrieve linked objects. If you clear all data values from a database, the index is deleted and so are the links to linked objects. If you restructure a database, the index is preserved and so are the links to linked objects. Shared members share data values but do not share LROs. This is because LROs are linked to specific member combinations and shared members do not have identical member

174 Linking Objects to Essbase Data

combinations. To link a given object to shared members, link it to each shared member individually.

You cannot change the member combination associated with any linked object. To move an object to another member combination, first delete it, then use Essbase Spreadsheet Addin for Excel to re-link the object to the desired member combination.

Setting Up Permissions for LROs
Users who add, edit, and delete LROs through client interfaces need to have the appropriate security permissions in the active database. If the object is a linked partition, the user must also have the required permissions in the database containing the linked partition. Table 17 lists the permissions required for several different tasks.
Table 17

Permissions Required for LRO Tasks Permission Read-write Read Read-write Read-write Read Read-write

Task Add a linked object to a database View an existing linked object Edit an existing linked object Delete a linked object Export the LRO catalog to a file Import the LROs from the LRO-catalog file

To prevent users from linking files to data cells without changing user access to other data in a database, you can set the maximum file size for linked files to 1. Users can then create cell notes, link to a URL, or view linked partitions but can only attach very small files (under 1 kilobyte).

➤ To set the maximum LRO file size for an application, see “Limiting LRO File Sizes” in the Essbase
Administration Services Online Help.

Viewing and Deleting LROs
Users work with LROs on a cell-by-cell basis through Essbase Spreadsheet Add-in for Excel. That is, they select a cell and open the Linked Object Browser, which displays the objects linked to the selected cell. With Administration Services, you can view LROs and you can delete all LROs for the entire database. You can also view LROs based on selection criteria such as user name and last modification date. For example, you can purge all objects that are older than a certain date, or remove the objects belonging to a user who has left the company.

Setting Up Permissions for LROs 175

➤ To view a list of the linked objects for a database, use a tool:
Tool Administration Services MaxL ESSCMD Topic Managing LROs query database LISTLINKEDOBJECTS Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference

➤ To delete the linked objects for a database, use a tool:
Tool Administration Services MaxL ESSCMD Topic Managing LROs alter database PURGELINKEDOBJECTS Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference

Exporting and Importing LROs
To improve backup and data-migration capabilities, you can export and re-import LROs from data intersections in a database.

➤ To export and import linked objects for a database, use a tool:
Tool Administration Services Topic Exporting LROs Importing LROs MaxL export lro import lro Essbase Technical Reference Location Essbase Administration Services Online Help

Limiting LRO File Sizes for Storage Conservation
Because Essbase stores linked files in a repository on the server and, by default, the size is unlimited. Limiting the file size prevents users from taking up too much of the server resources by storing extremely large objects. You can set the maximum linked file size for each application. If a user attempts to link a file that is larger than the limit, an error message displays. To prevent users from attaching anything except very small files, enter 1. Setting the file size to 1 lets users link only cell notes, URLs, and files less than 1 kilobyte in size.

176 Linking Objects to Essbase Data

Note:

The maximum file size setting applies only to linked files and does not affect cell notes or URLs. The lengths of the cell note, URL string, and LRO descriptions are fixed. For the maximum sizes of these objects, see Appendix A, “Limits.”

➤ To limit the size of a linked object, use a tool:
Tool Administration Services MaxL ESSCMD Topic Limiting LRO File Sizes alter application SETAPPSTATE Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference

Limiting LRO File Sizes for Storage Conservation 177

178 Linking Objects to Essbase Data

12
In This Chapter

Designing and Building Currency Conversion Applications

About the Sample Currency Application ....................................................................................... 180 Structure of Currency Applications ............................................................................................. 180 Conversion Methods ............................................................................................................. 184 Building Currency Conversion Applications and Performing Conversions................................................... 185

The Essbase currency conversion feature enables you to translate financial data from one currency into another currency. Currency conversion facilitates comparisons among countries, and enables consolidation of financial data from locations that use different currencies. This feature can be licensed as an “add-on” to Essbase Server. For example, consider an organization that analyzes profitability data from the UK, reported in pounds, and from Japan, reported in yen. Comparing local currency profitability figures sideby-side in a spreadsheet is meaningless. To understand the relative contribution of each country, you need to convert pounds into yen, yen into pounds, or both figures into another currency. As another example, reporting total profitability for North America requires standardization of the local currency values that constitute the North America total. Assuming that the U.S., Mexico, and Canada consolidate into Total North America, the profitability total is meaningless if data is kept in local currencies. The Total North America sum is meaningful only if local currencies are converted to a common currency prior to consolidation. The Essbase installation includes the option to install the Sample currency application, which consists of two databases, Interntl and Xchgrate. If you do not have access to these databases, contact your Essbase administrator. For information about installing Sample currency applications, see the Hyperion Essbase - System 9 Installation Guide.
Note:

The information in this chapter is not relevant to aggregate storage databases. For detailed information on the differences between aggregate and block storage, see Chapter 57, “Comparison of Aggregate and Block Storage.”

179

About the Sample Currency Application
The Sample currency application builds on the business scenario introduced in Chapter 4, “Case Study: Designing a Single-Server, Multidimensional Database,” as the Beverage Company (TBC) expands its business outside the U.S. TBC adds the following markets:
● ●

Three locations in Canada: Toronto, Vancouver, and Montreal Four locations in Europe: the UK, Germany, Switzerland, and Sweden

In addition, TBC adds a new member, US, which is a consolidation of data from the U.S. regions: East, West, South, and Central. Data for each TBC market location is captured in local currency. U.S. dollar values are derived by applying exchange rates to local values. TBC needs to analyze actual data in two ways:
● ●

Actuals are converted at actual exchange rates. Actuals are converted at budget exchange rates to analyze variances due to exchange rates.

After all actuals are processed, budget data is converted with budget exchange rates. The TBC currency application consists of the main database (Interntl) and the currency database (Xchgrate). On Essbase Server, the databases are in the Sample application. If you do not have access to the databases, contact your Essbase administrator. For information about installing Sample currency applications, see the Hyperion Essbase - System 9 Installation Guide.

Structure of Currency Applications
In a business application requiring currency conversion, the main database is divided into at least two slices. One slice handles input of the local data, and another slice holds a copy of the input data converted to a common currency. Essbase holds the exchange rates required for currency conversion in a separate currency database. The currency database outline, which is automatically generated by Essbase from the main database after you assign the necessary tags, typically maps a given conversion ratio onto a section of the main database. After the currency database is generated, it can be edited just like any other Essbase database. The relationship between the main database and the currency database is illustrated in Figure 42.

180 Designing and Building Currency Conversion Applications

Figure 42

Currency Application Databases

Main Database
To enable Essbase to generate the currency database outline automatically, you modify dimensions and members in the main database outline. In the Sample currency application, the main database is Interntl. The main database outline can contain from 3 to n dimensions. At a minimum, the main database must contain the following dimensions:

A dimension tagged as time. Tagging a dimension as time generates a dimension in the currency database that is identical to the time dimension in the main database. In the Sample Interntl database, the dimension tagged as time is Year. A dimension tagged as accounts. Tagging a dimension as accounts and assigning currency categories to its members creates a dimension in the currency database that contains members for each of the individual currency categories. Category assignment enables the application of different exchange rates to various accounts or measures. In the Sample Interntl database, the dimension tagged as accounts is Measures. Each descendant of a member inherits the currency category tag of its ancestor. A member or sub-branch of members can also have its own category. For example, profit and loss (P&L) accounts may use exchange rates that differ from the rates used with balance sheet accounts. In addition, some accounts may not require conversion. For example, in the Sample Interntl database, members such as Margin% and Profit% require no conversion. You tag members not to be converted as No Conversion. The No Conversion tag is not inherited.

A market-related dimension tagged as country. Tagging a dimension as country and assigning currency names to individual countries creates a member in the currency database for each currency. In the Sample Interntl database, the Market dimension is tagged as country. The currency name for this dimension is USD (U.S. dollars), because all local currencies must be converted to USD, the company’s common currency. Because multiple members can have the same currency name, the number of currency names is typically less than the total number of members in the dimension. As shown in Table 18 on page 182, the Sample Interntl database uses only six currency names for the 15 members
Structure of Currency Applications 181

in the Market dimension. Each of the children of the member Europe use a different currency and, therefore, must be assigned an individual currency name. However, the US dimension and its four regional members all use the same currency. The same is true of the Canada member and its three city members. When the children of a given member share a single currency, you need to define a currency name for only the parent member.
Table 18

Interntl Database Currency Names Currency Name USD (U.S. dollar)

Dimensions and Members Market - Country US East West South Central Canada Toronto Vancouver Montreal Europe UK Germany Switzerland Sweden

CND (Canadian dollar)

GBP (British pound) EUR (Euro) CHF (Swiss franc) SEK (Swedish krona)

When preparing a main database outline for currency conversion, you can create an optional currency partition to tell Essbase which slice of the database holds local currency data and which slice of the database holds data to be converted. The dimension that you tag as currency partition contains members for both local currency values and converted values. Local currency data is converted to common currency data using currency conversion calculation scripts. In the Sample Interntl database, the Scenario dimension is the currency partition dimension. For instructions on how to use currency partition dimensions, see “Keeping Local and Converted Values” on page 187.
Note:

A currency conversion partition applies only to the Currency Conversion option. It is not related to the Partitioning option that enables data to be shared between databases by using a replicated, linked, or transparent partition.

The Essbase Spreadsheet Add-in for Excel User's Guide provides examples of ad hoc currency reporting capabilities. Report scripts enable the creation of reports that convert data when the

182 Designing and Building Currency Conversion Applications

Values by time period in the main database are usually converted to the exchange rates of their respective time period from the currency database (although you can convert data values against the exchange rate of any period). In the Sample currency application. Currency Database By assigning currency tags to members in the main database outline. Note: For a list of methods used to create the main database outline. The currency names define the country-to-exchange rate mapping when conversion occurs. with an optional fourth dimension: ● A dimension tagged as time. ● A dimension tagged as country. In the Sample Xchgrate database.report is displayed. A currency database always consists of the following three dimensions. This allows the currency database to track currency fluctuations over time and to accurately convert various time slices of the main database.Country USD CND GBP EUR CHF SEK ● A dimension tagged as accounts. which enables the application of various rates to members of the dimension tagged as accounts in the main database. you enable Essbase to generate the currency database automatically. The categories defined for the accounts dimension in the main database are used to form the members in the accounts Structure of Currency Applications 183 . the country dimension is CurName. see “Creating Main Database Outlines” on page 185. Each member of the time dimension in the main database must be defined in the currency database. In the Sample Xchgrate database. the currency database is Xchgrate. the dimension tagged as time is Year. which is typically the same as the dimension tagged as time in the main database. as discussed under “Converting Currencies in Report Scripts” on page 189. Each currency name defined in the main database must also exist in the currency database. which contains the names of currencies relevant to the markets (or countries) defined in the main database. CurName contains the following currency names: Table 19 Xchgrate Database Currency Names Alias Name US dollar Canadian dollar British pound Euro Swiss franc Swedish krona Dimension and Members CurName .

Most applications require data to be stored in both local and common currency (converted) values. To convert data between scenarios. which typically includes an optional currency type dimension. Essbase supports two conversion methods: ● Overwriting local values with converted values. load local values and recalculate the data each time you perform a conversion. In the Sample Xchgrate database. and forecast. Because this operation overwrites data. simply select which type of rate to use. Therefore. member names in this dimension are not required to match member names of the main database. budget. To use this method. 184 Designing and Building Currency Conversion Applications . such as actual. Conversion Methods Different currency applications have different conversion requirements. CurType includes actual and budget scenarios. Typically. as discussed under “Converting Currencies in Report Scripts” on page 189. as discussed in the Essbase Spreadsheet Add-in for Excel User's Guide. The currency conversion module enables performance of ad hoc conversions. This method is useful only for single (not an ongoing) conversions. and data modifications and recalculations are easier to control. This method permits reporting and analyzing local data. Some applications require only converted values to be stored in the main database. ● A currency database. ● Keeping local and converted values. see “Building Currency Conversion Applications and Performing Conversions” on page 185. Local values are entered and the conversion operation overwrites local values with common currency values. it may be necessary to convert Gross Profit and Net Profit using one category of rates. You perform ad hoc conversions by using Essbase Spreadsheet Add-in for Excel. Either of these two methods may require a currency conversion to be applied at report time. define a currency partition (see “Main Database” on page 181). which enables different scenarios for currency conversion. Note: For information about creating the currency database outline. while other accounts use a different set of rates. the currency type dimension is CurType. and the account categories included are P&L (Profit & Loss) and B/S (Balance Sheet).dimension of the currency database. Report time conversion enables analysis of various exchange rate scenarios without actually storing data in the database. or by using a report script. For example. the dimension tagged as accounts is CurCategory. an application has different exchange rates for different scenarios. The currency type dimension is created when you generate the currency outline and is not directly mapped to the main database. This method assumes that there is no requirement for reporting or analyzing local currencies. In the Sample Xchgrate database.

7. Convert currency values. modify dimensions and members to enable Essbase to generate the currency database outline automatically. troubleshoot currency conversion. 4. See “Preparing Main Database Outlines” on page 185. See “Linking Main and Currency Databases” on page 186. 2. See “Troubleshooting Currency Conversion” on page 192. If necessary. see “Main Database” on page 181. See “Creating Main Database Outlines” on page 185. and save the outline for use in the currency conversion application. See “Generating Currency Database Outlines” on page 186. you need to create or open an Essbase database outline. modify the outline as needed. Building Currency Conversion Applications and Performing Conversions 185 . Create or open the main database outline. Link the main and currency databases. See “Tracking Currency Conversions” on page 190. For more information. use the following process: 1. 3. Creating Main Database Outlines To create a main database outline. 6. Track currency conversions. 5. Generate the currency database outline. See “Converting Currency Values” on page 186. Prepare the main database outline for currency conversion.Building Currency Conversion Applications and Performing Conversions To build a currency conversion application and perform conversions. use a tool: Tool Administration Services MaxL ESSCMD Topic Opening and Editing Outlines create database CREATEDB Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Preparing Main Database Outlines After you create or open the main database outline. ➤ To create an outline or open an existing outline.

When you link the databases. data load. ➤ To link main and currency databases. The currency outline contains dimensions. you might convert data from a variety of currencies into USD (U. you convert data values from a local currency to a common.➤ To prepare a main database outline. local currencies by using the CCONV TOLOCALRATE command. The currency database outline is basically structured and ready to use after being generated but may require additions to make it complete. You can convert all or part of the main database using the rates defined in the currency database. members. see “Generating a Currency Database Outline” in the Essbase Administration Services Online Help. a calculation. ➤ To generate a currency database outline. Essbase does not display a warning message in this situation. ensure that the data being converted is not simultaneously being updated by other user activities (for example. Note: When running a currency conversion. see “Linking a Database to a Currency Database” in the Essbase Administration Services Online Help. Generating Currency Database Outlines After you verify and save the main database outline. 186 Designing and Building Currency Conversion Applications . you specify the conversion calculation method and the default currency type member. or currency conversion against the same currency partition). currency names. Essbase must recognize a link between the main and currency databases. converted currency by using the CCONV command in calculation scripts. or you can keep both local and converted values in the main database. and currency categories previously defined in the main database outline. Concurrent activity on the data being converted may produce incorrect results.S. You can convert the data values back to the original. you can generate the currency outline. Generating a currency outline does not automatically link a main database with a currency database. Converting Currency Values After you create a currency conversion application. Linking Main and Currency Databases To perform a currency conversion calculation. For example. depending on your tracking and reporting needs. dollars). You can overwrite local values with converted values. see “Preparing the Main Database Outline for Currency Conversion” in the Essbase Administration Services Online Help.

➤ To create a calculation script that copies local data to a converted partition and calculates the data: 1 Use the DATACOPY command to copy data from the local to the converted partition. you do not need to create a currency partition dimension in the main database. see the Essbase Technical Reference. To see sample currency conversion calculation scripts. CALC ALL. If required. CALC ALL. Thus. Use the CCONV command in a calculation script to convert all data in the database: The following calculation script converts the values in the database to USD: CCONV USD. you can specify a currency name that contains the required exchange rate. The currency partition dimension has two partitions. CALC ALL. The following calculation script converts the values in the database to USD. In the main database you need to define the members that store the local and the converted values. Overwriting Local Values with Converted Values If you want to overwrite local values. Keeping Local and Converted Values You can keep both local and converted values in a database.cfg file. Note: You cannot use the FIX command unless you are using a currency partition dimension and the CCTRACK setting is TRUE in the essbase. You define the members by creating a currency partition dimension (see “Main Database” on page 181). Essbase recalculates all converted blocks when you recalculate the database. using the exchange rate for Jan as defined in the currency database: CCONV Jan->USD. The CALC ALL command is required in the examples shown because the CCONV command only converts currencies. It does not consolidate or calculate members in the database.Note: When you convert currencies using the CCONV command. one for local values and one for converted values. The following calculation script uses the “Act xchg” rate to convert the converted values back to their original local currency values: CCONV TOLOCALRATE "Act xchg". Building Currency Conversion Applications and Performing Conversions 187 . the resulting data blocks are marked as dirty for the purposes of Intelligent Calculation.

and Actual @ Bud Xchg data values: /* Copy data from the local partition to the master partition (for converted values) */ DATACOPY Act TO Actual. The following calculation script converts the Actual and Budget values back to their original local currency values: 188 Designing and Building Currency Conversion Applications . Budget. Figure 43 shows the currency partition from the Sample Interntl database. ENDFIX * Convert the Budget data values using the "Bud xchg" rate */ FIX(Budget) CCONV "Bud xchg"->US$. Figure 43 Calculating Local and Converted Currency Conversions The following calculation script performs three currency conversions for Actual. Note: When using a currency partition dimension. you must FIX on a member of the dimension to use the CCONV command. The following example is based on the Sample Interntl database and the corresponding Sample Xchgrate currency database. ENDFIX /* Convert the "Actual @ Bud XChg" data values using the "Bud xchg" rate */ FIX("Actual @ Bud XChg") CCONV "Bud xchg"->US$. /* Convert the Actual data values using the "Act xchg" rate */ FIX(Actual) CCONV "Act xchg"->US$.2 Use the FIX command to calculate only the converted partition and use the CCONV command to convert the data. DATACOPY Bud TO Budget. CALC TWOPASS. 3 Use the CALC command to recalculate the database. ENDFIX /* Recalculate the database */ CALC ALL.

however. For the syntax and definitions of Report Writer commands. ENDFIX CALC ALL. the resulting data blocks are marked as dirty for the purposes of Intelligent Calculation. you cannot perform currency conversions in reports. To prevent meaningless consolidation. Thus. all children of US consolidate to US. because North America contains countries that use other currencies. meaningful total-level data is generated in the converted base rate partition. Note: Essbase cannot perform “on the fly” currency conversions across transparent databases. Note: When you convert currencies using the CCONV command. Calculating Databases If you execute a CALC ALL command to consolidate the database after running a conversion. Consolidation stops at the country level. Essbase recalculates all converted blocks when you recalculate the database. If you have two transparent partition databases that are calculated using different conversions. Converting Currencies in Report Scripts You can convert currencies in report scripts. ENDFIX FIX(Budget) CCONV TOLOCALRATE "Bud xchg". Illinois Sales Budget Jan Feb Mar ======== ======== ======== 3 3 3 2 2 2 #Missing #Missing #Missing 5 5 5 Currency: Jan->Peseta->Act xchg 100-10 100-20 100-30 100 Building Currency Conversion Applications and Performing Conversions 189 . For example. Therefore. but the local rate partition contains a meaningless consolidation of local currency values. The following Sample report contains first quarter Budget Sales for colas. all cities in the US use dollars as the unit of currency. using the CURRENCY command to set the output currency and the currency type. which restricts consolidations to parents with the same defined currency. use the calculation command SET UPTOLOCAL. using the January exchange rate for the Peseta currency. see the Essbase Technical Reference.FIX(Actual) CCONV TOLOCALRATE "Act xchg".

cfg file to control whether Essbase tracks the currency partitions that have been converted and the exchange rates that have been used for the conversions. Measures. Scenario) {SupCurHeading} Illinois Sales Budget <Column (Year) <children Qtr1 <Currency "Jan->Peseta->Act xchg" <Ichildren Colas ! {CurHeading} Illinois Sales Budget <Column (Year) <children Qtr1 ! Tracking Currency Conversions You can use the CCTRACK setting in the essbase. each of which can be either “converted” or “unconverted. For example. you must FIX on a single currency partition member.cfg file. The tracking is done at the currency partition level: a database with two partitions has two flags. When using a currency partition and when CCTRACK is set to TRUE (the default) in the essbase. local rate through use of the CCONV TOLOCALRATE command Prevents data inaccuracies due to accidental reconversion of data during a currency calculation. and marks as converted or unconverted all data associated with the currency partition member. the following example is valid: FIX(Actual) CCONV "Act xchg"->US$.Currency: Jan->Peseta->Act xchg Illinois Sales Budget Jan ======== 3 2 #Missing 5 Feb ======== 3 2 #Missing 5 Mar ======== 3 2 #Missing 5 100-10 100-20 100-30 100 Use the following script to create the Sample currency conversion report: <Page (Market.” Essbase does not store a flag for member combinations within a partition. Essbase tracks which currency partitions have been converted and which have not. You cannot FIX on multiple members as CCTRACK works at the currency partition member level. ● ● By default CCTRACK is turned on. Tracking currency conversions has the following advantages: ● Enables conversion to occur at report time through Essbase Spreadsheet Add-in for Excel or Report Writer Enables conversion of a converted currency back to its original. 190 Designing and Building Currency Conversion Applications . in the Sample Basic database.

Use the command after a data load to reset the exchange rate tables so they are ready for future currency conversion calculations. Reasons to Turn Off CCTRACK For increased efficiency when converting currency data between currency partitions. Similarly. resulting in inaccurate data. or currency conversion against the same currency partition). If the data has already been converted in the database. Updating data directly into the converted partition causes incorrect results. You can use this command at calculation time to provide increased flexibility and efficiency during currency conversion. Setting CCTRACK to False turns off the tracking system and has the following results: ❍ ● ● The CCONV command assumes that data is unconverted (is in local currency).cfg file. you may want to turn off CCTRACK. use the DATACOPY command to copy the entire currency partition that contains the updated data. the database would have both converted and unconverted data in the same currency partition. For example. Note: Always do a partial data load to the local partition and use the DATACOPY command to copy the entire currency partition to the converted partition before running the currency conversion. ensure that the data being converted is not simultaneously being updated by other user activities (for example. and then run the conversion on the currency partition. Concurrent activity Building Currency Conversion Applications and Performing Conversions 191 . You can use the command inside a FIX statement to clear the exchange rates for a currency partition. causing a data consistency issue. it is reconverted at report time. Methods for Turning Off CCTRACK You can turn off CCTRACK in three ways: ● Use the SET CCTRACKCALC ON|OFF command in a calculation script to turn off CCTRACK temporarily. data load.ENDFIX] In the Sample Basic database. Use the CLEARCCTRACK calculation command to clear the internal exchange rate tables created by CCTRACK. Note: ❍ ❍ When running a currency conversion. Set CCTRACK to FALSE in the essbase. if you were able to use a FIX command to convert the actual values for only the members Jan and Feb. The restrictions on using the FIX and DATACOPY commands in currency conversions do not apply. a calculation. If you accidentally run the CCONV command multiple times on the same data. you load data for the current month into the local partition. the currency report options assume that the data is unconverted (is in local currency). the resulting data is inaccurate.

192 Designing and Building Currency Conversion Applications . Troubleshooting Currency Conversion See “Troubleshooting Currency Conversion” in the Essbase Administration Services Online Help.on the data being converted may produce incorrect results. Essbase does not display a warning message in this situation.

.................. 194 Deciding Whether to Partition a Database ........ or computers.............. see Chapter 58............................................................ reliability........... 213 Case Studies for Designing Partitioned Databases .............. Process for Designing a Partitioned Database Here is the suggested process for designing a partitioned database........................................................... Process for Designing a Partitioned Database 193 ......................................................... See “Understanding Essbase Partitioning” on page 194................................. see Chapter 57.................................... processors. Hyperion strongly recommends that you read this chapter before creating partitions..... availability...........................” Caution! Design partitions carefully......... Learn about partitions....... Some of the information is not relevant to aggregate storage databases....................” For information on creating aggregate storage applications....... “Comparison of Aggregate and Block Storage.....13 In This Chapter Designing Partitioned Applications Process for Designing a Partitioned Database ............................. “Aggregate Storage Applications.. 214 An Essbase partitioned application can span multiple servers.... Partitioning applications can provide the following benefits: ● ● ● Improved scalability............ 200 Planning for Security for Partitioned Databases ............................................................... 198 Determining Which Data to Partition ......... and performance of databases Reduced database sizes More efficient use of resources Note: The information in this chapter is designed for block storage databases..... 200 Deciding Which Type of Partition to Use ........... A partition is the piece of a database that is shared with another database........ 1............. Databases................ and Outlines........ For detailed information on the differences between aggregate and block storage............ 193 Understanding Essbase Partitioning ...........................

Determine whether the database can benefit from partitioning. See “Planning for Security for Partitioned Databases” on page 213. 4. as illustrated in Figure 44.2. they can drill down to more detailed data. Decide on the type of partition. Understand the security issues related to partitions. Partitions contain the following parts. 5. Partitioning can provide the following benefits: ● Data synchronization across multiple databases. ● ● Based on user requirements. select one of the following partitioning strategies: ● Partition applications from the top down. Partition applications from the bottom up. Partitioning a base dimension according to its attributes enables the user to extract data based on the characteristics of a dimension such as flavor or size. Essbase tracks changes made to data values in a partition and provides tools for updating the data values in related partitions. ● Type of partition A flag indicating whether the partition is replicated. reliability. When users drill across to the new database. Bottom-up partitioning can improve the quality and accessibility of the data in databases. See “Deciding Which Type of Partition to Use” on page 200. Essbase tracks changes made to the outlines of partitioned databases and provides tools for updating related outlines. See “Deciding Whether to Partition a Database” on page 198. To achieve the best results with topdown partitioning. Identify the data to partition. 3. and performance of databases. or computers. create a separate application for each partitioned database. transparent. servers. or linked. Use top-down partitioning to split a database onto multiple processors. ● ● What Is a Partition? A partition is a piece of a database that is shared with another database. Outline synchronization across multiple databases. See “Determining Which Data to Partition” on page 200. 194 Designing Partitioned Applications . Top-down partitioning can improve the scalability. Partitioning is licensed separately from Essbase. Use bottom-up partitioning to manage the flow of data between multiple related databases. Partition databases according to attribute values associated with base dimensions (a base dimension is a standard dimension associated with one or more attribute dimensions). The Partitioning option must be licensed for every server that contains a database partition. Understanding Essbase Partitioning Essbase Partitioning is a collection of features that makes it easy to design and administer databases that span Essbase applications or servers. Ability for user navigation between databases with differing dimensionality.

and database name of the data target. application. ● Member mapping information A description of how the members in the data source map to members in the data target. This information is used for internal requests between the two databases to execute administrative and user operations. Figure 44 Parts of a Partition Data Sources and Data Targets Partitioned databases contain at least one data source. the primary site of the data. When you define a partition. the secondary site of the data. The login and password information for the data source and the data target. or subcubes. define multiple areas in a single partition. and at least one data target. you map cells in the data source to their counterparts in the data target: Understanding Essbase Partitioning 195 . ● Login and password. application. Essbase uses this information to determine how to put data into the data target if the data target and the data source use different names for some members and dimensions. A single database can serve as both the data source for one partition and the data target for another.● Data source information The server. shared between the data source and the data target. ● State of the partition Information about whether the partition is up-to-date and when the partition was last updated. This information determines which parts of the data source and data target are shared so that Essbase can put the proper data into the data target and keep the outlines for the shared areas synchronized. To share more than one non-contiguous portion of a database. ● Data target information The server. and database name of the data source. ● Shared areas A definition of one or more areas.

Different databases in one application. Different databases in different applications on different processors or computers. each with the same data source and a different data target. German). To share data among many databases. contain many replicated partitions that connect to other databases. you can only create one replicated partition between the Sampeast East database and the Samppart Company database. For example. German). create multiple partitions. The East or Company databases can. as long as each database uses the same language (for example. as long as each database uses the same language (for example. because you cannot reap the full benefits of partitioning databases unless each database is in a separate application. You can define partitions between the following databases: ● Different databases in different applications. This practice is not recommended. however. A single database can serve as the data source or data target for multiple partitions.Figure 45 Data Source and Data Target An Essbase database can contain many different partitions as well as data that is not shared with any other Essbase database. as shown in Figure 46: Figure 46 Data Shared at Multiple Targets 196 Designing Partitioned Applications . ● ● You can define only one partition of each type between the same two databases.

using a substitution variable reduces the size of the partition because you don’t have to include all months in the partition definition area just to access data from one month. The substitution variable name is displayed when you view the partition definition.Overlapping Partitions An overlapping partition occurs when similar data from two or more databases serve as the data source for a single data target in a partition. Mar. see “Using Substitution Variables” on page 110. use the “Use text editor” or “Use inline editing” editing option. &Month. Essbase resolves the substitution variable name to its value. The value can be changed at any time by the Database Manager. Because Boston is a member of the dimension East. Understanding Essbase Partitioning 197 . To specify a substitution variable in an area definition or in a mapping specification. In this example. For example. overlap. For more information about substitution variables and how to define them. each variable has a value assigned to it. you could define a substitution variable named Curmonth and change the substitution variable value to the member name for each month throughout the year to Jan. Sales from database 2 are mapped to IDESC East. This data overlap results in an overlapping partition: Figure 47 Overlapping Partitions An overlapping partition is allowed in linked partitions. for example. and so on. IDESC East. Insert an & at the beginning of the substitution variable name. For example. Substitution variables act as global placeholders for information that changes regularly. the data for Boston mapped to database 3 from database 1 and database 2. Sales in database 3. Sales and Boston. but is invalid in replicated and transparent partitions and generates an error message during validation. Essbase uses substitution values when you verify the partition. Substitution Variables in Partition Definitions Using substitution variables in partition definitions enables you to base the partition definition on different members at different times. When you perform any process that uses partitioned data. Feb. Sales from database 1 and Boston.

But you cannot partition the Caffeinated attribute dimension. see Chapter 10. For example. You can use the @ATTRIBUTE command and the @WITHATTR command to define partitions. replicated.2 server. Based on the previous example. Use attribute values to partition a database when you want to access members of a dimension according to their characteristics. ● ● “When to Partition a Database” on page 199 “When Not to Partition a Database” on page 199 198 Designing Partitioned Applications .Attributes in Partitions You can use attribute functions for partitioning on attribute values. Deciding Whether to Partition a Database Partitioning a database is not always the correct option.” Version and Encoding Considerations Both ends of a transparent. in the Sample Basic database. the target must also be in a Unicode-mode application. this partition is correct: Source @ATTRIBUTE(Caffeinated) Target @ATTRIBUTE(Caffeinated) Based on the previous example. and if the source of a replicated partition is in a Unicode-mode application. you can create a partition such as @ATTRIBUTE (Caffeinated). The following sections provide questions you can use to determine if partitioning the database is the best solution for you.2 server. for transparent and replicated (but not linked) partitions. the application mode of both ends of the partitions must be the same--either Unicode mode or non-Unicode mode. or linked partition must be on the same release level of Essbase Server.1. this partition is incorrect: Source Caffeinated Target Caffeinated For more information about these commands. “Working with Attributes. 100-10. If you create a partition that contains members associated with Can. But you can create a partition that contains all the members of the Product dimension that are associated with either or both members (Bottle and Can) of the Pkg Type dimension. For more information on attribute dimensions. In addition. namely. For example. refer to the section on calculation commands in the Essbase Technical Reference. if the source of a linked partition is on a Release 7. the target must also be on a Release 7.1. and 300-30. to extract data on all members of the Product dimension that are associated with the Caffeinated attribute dimension. you can access data only on Product members that are packaged in cans. For example. you cannot partition the Pkg Type attribute dimension. But you cannot partition an attribute dimension. 100-20.

Are users having to wait as other users access the database? Do you want to save disk space by giving users access to data stored in a remote location? Should you reduce network traffic by replicating data in several locations? Do you need to control database outlines from a central location? ● ● ● ● ● ● ● ● ● When Not to Partition a Database Sometimes. Review the following list of questions. If you answer yes to many of them. Using linked and transparent partitions exacerbate this problem. Partitioning a database can require additional disk space. because peak user load may differ between time zones. are you unable to purchase more disk space or allow more network traffic? Do you perform complex allocations where unit level values are derived from total values? Are you required to keep all databases online at all times? Keeping databases online can be a problem if you have databases in several time zones. ● Should the data be closer to the people who are using it? Is the network being stressed because users are accessing data that is far away? Would a single failure be catastrophic? If everyone is using a single database for missioncritical purposes. but using replicated partitions might help. you may wish to partition databases. If you answer yes to many of them.When to Partition a Database Review the following list of questions. and administrative overhead. ● Do you have resource concerns? For example. network bandwidth. Are the databases in different languages? Essbase can only partition databases if both databases use the same language. you may not want to partition a database. it does not make sense to partition a centralized database. such as German. or answer yes to some that are very important to you. ● ● ● Deciding Whether to Partition a Database 199 . or answer yes to some that are very important to you. disconnected databases storing related information? Does the related information come from different sources? Are you having trouble synchronizing it? Will you add many new organizational units? Would they benefit from having their own databases? Partitioned databases help you grow incrementally. what happens if the database goes down? Does it take too long to perform calculations after new data is loaded? Can you improve performance by spreading the calculations across multiple processors or computers? Do users want to see the data in different application contexts? Would you like to control how they navigate between databases? Do you have separate.

The data is. Note: You cannot partition attribute dimensions. Are some parts of the database accessed more frequently than others? What data can you share among multiple sites? How granular does the data need to be at each location? How frequently is the data accessed. Owning the data means that this is the database where the data is updated and where most of the detail data is stored. A linked partition sends users from a cell in one database to a cell in another database. Deciding Which Type of Partition to Use Essbase supports the following types of partitions: ● ● A replicated partition is a copy of a portion of the data source that is stored in the data target. find out the following information about the data in the database: ● Which database should be the data source and which the data target? The database that “owns” the data should be the data source. For examples. in another Essbase database. see “Case Studies for Designing Partitioned Databases” on page 214. or on another Essbase Server.Determining Which Data to Partition When designing a partitioned database. Linked partitions give users a different perspective on the data. updated. A transparent partition allow users to access data from the data source as though it were stored in the data target. which can be in another application. ● Replicated Partitions A replicated partition is a copy of a portion of the data source that is stored in the data target. or calculated? What are the available resources? How much disk space is available? CPUs? Network resources? How much data needs to be transferred over the network? How long does that take? Where is the data stored? Is it in one location or in more than one location? Where is the data accessed? Is it in one location or in more than one location? Is there information in separate databases that should be accessed from a central location? How closely are groups of data related? ● ● ● ● ● ● ● ● ● The answers to these questions determine which data to include in each partition. 200 Designing Partitioned Applications . Some users can then access the data in the data source while others access it in the data target. however. See “Attributes in Partitions” on page 198. stored at the data source.

Decrease calculation times. the DBA at The Beverage Company (TBC) created a replicated partition between the East database and the Company database containing Actual. By default. see “Case Study 1: Partitioning an Existing Database” on page 214. Decrease query response times. the DBA can select a setting to prevent the data in the replicated portion of the data target from being updated. Variance. In other words. You must tell Essbase how each dimension and member in the data source maps to each dimension and member in the data target.In the Samppart and Sampeast applications shipped with Essbase. Essbase overwrites their changes when the DBA updates the replicated partition. and Variance%. none of the areas that you use as a replicated partition target can come from a transparent partition source: Deciding Which Type of Partition to Use 201 . Because they do not have to retrieve this data live from the corporate headquarters. ● You cannot create a replicated partition on top of a transparent partition. When a replicated partition is defined. If users change the data at the data target. their response times are faster and they have more control over the down times and administration of the local data. Use a replicated partition when you want to achieve any of the following goals: ● ● ● ● Decrease network activity. Changes made to replicated data in the data target do not flow back to the data source. For a more complete description of the sample partitioned databases provided with Essbase. Users in the eastern region now budget store their data locally. This setting takes precedence over access provided by security filters and is also honored by batch operations such as dataload and calculation. The data source and data target outlines for the non-shared areas do not have to be mappable. For directions on how to set a partition so that it can be updated. Changes to the data in a replicated partition flow from the data source to the data target. a target of a replicated partition cannot be updated. for example. Rules for Replicated Partitions Replicated partitions must follow these rules: ● You must be able to map the shared replicated areas of the data source and data target outlines even though the shared areas do not have to be identical. see the Essbase Administration Services Online Help. Make it easier to recover from system failures. Budget.

Because only the relevant data is kept at each site. instead of accessing a larger company database containing budget information for all regions. ● You cannot use attribute members to define a replicated partition. ● ● ● ● 202 Designing Partitioned Applications . Because the data is in more than one place. Advantages and Disadvantages of Replicated Partitions Replicated partitions can solve many database problems. if the Samppart Company database contains a replicated partition from the Sampeast East database. associated with the Market dimension. only the users connected to that database are unable to access the information. Advantages of Replicated Partitions ● Replicated partitions can decrease network activity. you can use the WITHATTR command to replicate attribute data. an attempt to map attributes in replicated partitions results in an error message. others at the data target. in the data target. or Rural because a replicated partition contains dynamic data. If you want to replicate cells from more than one database. For example. Some users access the data at the data source. you can replicate the cells in the Sampeast East database into a third database. It is still available at and can be retrieved from the other sites. The data is more easily accessible to all users. You cannot define a partition on Urban. However. Failures are not as catastrophic. Decreased network activity results in improved retrieval times for the users. The cells in a data target can be the data source for a different replicated partition. DBAs can bring down the Company database without affecting users in the eastern region. the cells in one partition must come from just one database. For example. Hence. because users in the eastern region are accessing their own replicated data instead of the Company database. Local DBAs can control the down time of their local databases. and Rural. such as the Sampwest West database. users in the eastern region can replicate just the eastern budget information. because the data is now stored closer to the end users. but replicated partitions are not always the ideal partition type. if a single database fails. the Market Type attribute dimension members are Urban. For example. create a different partition for each data source. Suburban. For example.Figure 48 Invalid Replicated Partition ● The cells in the data target of a replicated partition cannot come from two different data sources. not stored data. Suburban. databases can be smaller.

Instead. Essbase does not load or replicate into Dynamic Calc and Dynamic Calc and Store members. East. replicate it from the data source. ❍ ● Partitioning along a dense dimension takes more time than partitioning along a sparse dimension. because Essbase must probe the outline to find dynamically calculated members and their children to determine how to perform the calculation. When Essbase replicates data partitioned along a dense dimension. Essbase must access every block in the database and then create each block at the data target during the replication operation. try to replicate the lowest practical level of each dimension and perform the calculations on the data target after you complete the replication. Since the DBA must manually refresh data regularly. For example. you cannot calculate derived data at the data source if the data meets any of the following criteria: ❍ ❍ ❍ Requires data outside the replicated area to be calculated. such as a laptop. if the Market dimension were dense and you replicated the data in the East member. South. calculate the values for Market and the upper level values in the other dimensions at the data target. it may not up-to-the-minute. For example. and Central and the level 0 members of the other dimensions. West. Performance Considerations for Replicated Partitions To improve the performance of replicated partitions. it must access every block in the data source and then create each block in the data target during the replication operation. See “Populating or Updating Replicated Partitions” on page 234 to replicate only the data values that have changed instead of the entire partition. Essbase avoids sending replicated data for both dynamic dense and dynamic sparse members on the replication target. In that case. Dynamic Calc and Dynamic Calc and Store members do not contain any data until a user requests the data at run time.Disadvantages of Replicated Partitions ● ● You need more disk space. Is being replicated onto a computer with little processing power. consider the following when replicating data. Sometimes you cannot calculate derived data at the data target. ● Do not replicate members that are dynamically calculated in the data source to greatly reduce replication time. Do not replicate derived data from the data source to greatly reduce replication time. Requires calculation scripts from which you cannot extract just the portion to be calculated at the data target. since this data is not stored on the data target. For example. ● Deciding Which Type of Partition to Use 203 . You cannot replicate data into a member that is dynamically calculated at the data target. you are storing data in two or more locations. to replicate the database along the Market dimension: ❍ ● Define the shared area as the lowest level members of the Market dimension that you care about. After you complete the replication. for example.

as long as user2 is accessing the same source database. This process means that other users at both the data source and the data target have immediate access to those updates. user2 also uses the user name declared in the partition definition (partition user) to access the source database. This access causes the use of an additional port because different users (user1 and partition user) are connecting to the application. 204 Designing Partitioned Applications . If a user defines several replicated partitions on one server using the same user name. Note: Because of the short-term nature of replication.Replicated Partitions and Port Usage One port is used for every unique user and computer combination. Figure 49 Transparent Partitions Because the data is retrieved directly from the data source. users see the latest version of the data. replicated partitions and ports are rarely a problem. user1 is using the user name declared in the partition definition (partition user) to access the data from the source database. their updates are written back to the data source. then only one port is occupied. Transparent Partitions A transparent partition allows users to manipulate data that is stored remotely as if it were part of the local database. The remote data is retrieved from the data source each time that users at the data target request it. Users do not need to know where the data is stored. When they update the data. Because the partition user is already connected to the source database. In a replicated partition. If a second user (user2) connects to the target database and drills down to access source data. when a user (user1) drills into an area in the target that accesses source data. an additional port is not needed for the partition user. because they see it as part of their local database.

or Rural. the Market Type attribute dimension has members Urban. Use a transparent partition when you want to achieve the following goals: ● ● ● Show users the latest version of the data. users at the data source may notice slower performance as more users access the source data and users at the data target may notice slower performance as more users access the source data. you cannot create a transparent partition on top of more than one other partition. For a more complete description of a transparent partition based on the Sample Basic database. see “Case Study 1: Partitioning an Existing Database” on page 214. the DBA at TBC can use a transparent partition to calculate each member of the Scenario dimension on a separate computer. This process reduces the elapsed time for the calculation. In other words. You cannot define a partition on Urban. Deciding Which Type of Partition to Use 205 . but you must be able to map the dimensions in them. and Rural. you can create a transparent partition target using a replicated partition source: ● ● ● Figure 50 Valid Transparent Partition ● As illustrated in Figure 51. For example. while still providing users with the same view of the data. Suburban. The data source and data target outlines for the non-shared areas do not have to be mappable. users can get incorrect results for some retrievals. you cannot create a transparent partition target from multiple sources because each cell in a database must be retrieved from only one location —either the local disk or a remote disk. Otherwise. For example. but product 100-10-1010 is not associated with Grape on the target. but attribute associations should be identical.With a transparent partition. Allow users at the data target to update data. if product 100-10-1010 is associated with the Grape Flavor attribute on the source. Rules for Transparent Partitions ● The shared transparent areas of the data source and data target outlines do not have to be identical. the total of sales for all Grape flavors in New York is incorrect. You can create a transparent partition on top of a replicated partition. associated with the Market dimension. In other words. You cannot use attribute dimensions or members to define a transparent partition. Decrease disk space. You must tell Essbase how each dimension and member in the data source maps to each dimension and member in the data target. Suburban. For example.

Advantages of Transparent Partitions ● ● ● You need less disk space. The distribution of the data is invisible to the end user and the end user’s tools. You can load the data from either the data source or the data target. Essbase archives just the data target and does not archive the data source. You can perform some administrative operations only on local data. For example. The data accessed from the data target is always the latest version. retrieval time may be slower. Individual databases are smaller. Because more users are accessing the data source. ● ● ● Disadvantages of Transparent Partitions ● Transparent partitions increase network activity. If the data source fails. The following administrative operations work only on local data: ❍ ● ● ● CLEARDATA calculation command 206 Designing Partitioned Applications . Therefore.Figure 51 Invalid Transparent Partition ● Carefully consider any formulas you assign to members in the data source and data target. Increased network activity results in slower retrieval times for users. Advantages and Disadvantages of Transparent Partitions Transparent partitions can solve many database problems. Essbase makes those changes at the data target. because you are storing the data in one database. because Essbase transfers the data at the data source across the network to the data target. For a discussion on using Dynamic Time Series members in transparent partitions. if you archive the data target. the network and data source must be available whenever users at the data source or the data target need them. so they can be calculated more quickly. When the user updates the data at the data source. but transparent partitions are not always the ideal partition type. see “Using Dynamic Time Series Members in Transparent Partitions” on page 433. users at both the data source and the data target are affected.

For a tip on improving performance of transparent calculations. and then perform a CALC ALL command at the top level using the new values for each partition. ● Formulas assigned to members in the data source may produce calculated results that are inconsistent with formulas or consolidations defined in the data target. To improve performance. Essbase does not recalculate the values of transparent dependents because the outlines for the data source and the data target may be so different that such a calculation is accurate. Essbase performs the calculation using the current values of the local data and transparent dependents. For example. you would assume that East was a level 0 member. however. and vice versa. If a database is partitioned only along a dense dimension at the target. consider including one or more sparse dimensions in the area definition so that the number of blocks required is limited to combinations with the sparse members.❍ ❍ ❍ ❍ ❍ ● DATACOPY calculation command EXPORT command VALIDATE command BEGINARCHIVE and ENDARCHIVE commands Restructure operations in Administration Services When you perform a calculation on a transparent partition. first calculate East in the data source and then calculate the data target. To perform an accurate calculation. To calculate all partitions. Basing transparent partitions on the attribute values of a dimension can increase retrieval time. consider the following facts when creating the partition: ● Partitioning along dense dimensions in a transparent partition can greatly slow performance. The slow performance results because dense dimensions are used to determine the structure and contents of data blocks. Any calculations at the data target. suppose that the data target outline contained a Market dimension with East. partitioning at a level higher than the level that is associated with attributes improves retrieval time. West. consider using replicated or linked partitions instead. Essbase does not recalculate the values of transparent dependents. In the data source. because attributes are associated with sparse dimensions. therefore. South. If these disadvantages are too serious. would not know this information and could not reflect any changes made to New York and New Jersey in the data source. East is derived by adding New York and New Jersey. Performance Considerations for Transparent Partitions To improve the performance of transparent partitions. and Central members and the data source outline contained an East dimension with New York and New Jersey members. however. in the Product dimension of the Sample Basic database. 200-10. Essbase must compose data blocks by performing network calls for the remote data in the transparent partition in addition to the disk I/O for the local portion of the block. If you tried to calculate the data target outline. see “Calculating Transparent Partitions” on page 208. if children 100-10. For example. issue a CALC ALL command for each individual partition. ● Deciding Which Type of Partition to Use 207 . In such cases.

Partitioning base dimensions can greatly slow performance. Retrieval time is slower because users access the data over the network. When calculating local data that depends on remote data. For information on estimating the size of the calculator cache. 208 Designing Partitioned Applications . Increasing the amount of memory assigned to the calculator cache greatly improves calculation performance with transparent partitions.and 300-10 (level 0) are associated with attributes. For information on the calculator cache. see “Performance Considerations for Transparent Partition Calculations” on page 208. For a comparison of top-down and bottom-up calculations. 200. load data into the data source locally. Using the calculator cache on the target database reduces the number of blocks that are requested from the data source during calculation. see “Sizing the Calculator Cache” on page 834. Essbase performs the calculation using the current values of the local data and transparent dependents. you can use the SET REMOTECALC OFF calculation command in the calculation script to stop retrieval efforts from the source partition. For complete information on bottom-up calculations. Essbase performs a bottom-up calculation. see “Using Bottom-Up Calculation” on page 885. see “Sizing the Calculator Cache” on page 834. The bottom-up calculation can be done only if the calculator cache on the target database is used properly. reduces the amount of network traffic that is generated by transferring blocks across the network. Performance Considerations for Transparent Partition Calculations Calculating data on the data target can greatly slow performance when the data target must retrieve each dependent data block across the network. When the data target contains no top-down member formulas. it can always perform a bottom-up calculation. If possible. then partition their parents 100. Reducing the blocks requested. ● ● ● Calculating Transparent Partitions When you perform a calculation on a transparent partition. in turn. When Essbase performs the calculation on the data source. For calculation-related performance considerations. Performance with transparent calculations may also slow if Essbase must perform a top-down calculation on any portion of the data target that contains top-down member formulas. See the Essbase Technical Reference for details. and 300 (level 1) for better retrieval performance. and then perform the calculation. see “Using Bottom-Up Calculation” on page 885. ● Loading data into the data source from the data target can greatly slow performance. When a calculation is started. Consider using these calculation alternatives: ● If you are absolutely sure that a target partition calculation script does not involve access to remote data. which is much faster. Essbase can perform a bottom-up calculation on the data target. a message in the application log indicates whether or not the calculator cache is enabled or disabled on the target database.

then only one port is occupied. an Deciding Which Type of Partition to Use 209 . This process causes the use of an additional port because different users (user1 and partition user) are connecting to the application. Make sure that any formulas you assign to members in the data source and data target produce the desired results. If any of these members on the data source contain member formulas. assigning a complex formula to New York or New Jersey (both children of East) forces Essbase to use the top-down calculation method. if a partition definition includes @IDESC(East). ● ● Transparent Partitions and Member Formulas If the data target and data source outlines are identical except for different member formulas. using the same user name. when a user (user1) drills into an area in the target that accesses source data. in the Sample Basic database. Because the partition user is already connected to the source database.● Dynamic Calc or Dynamic Calc and Store members as parents of the transparent data so that the data is calculated on the fly when it is retrieved. On the data target. Keeping a partition fully within the calculator cache means that any sparse members in the partition definition must be contained within the calculator cache. suppose that the data source and data target outlines both contain a Market dimension with North and South members. In a transparent partition. For example. ● Other performance strategies include the following: ● Keep the partition fully within the calculator cache area (see “Sizing the Calculator Cache” on page 834). see “ Bottom-Up and Top-Down Calculation” on page 885. Transparent Partitions and Port Usage One port is used for every unique user and machine combination. Essbase performs the calculation only when users request it. A replicated layer between the low-level transparent data and high-level local data. and children of North and South. all descendants of East must be within the calculator cache. user1 is using the user name declared in the partition definition (partition user) to access the data from the source database. and assign a sufficient amount of memory to it. If a user defines several transparent partitions on one server. Do not use complex formulas on any members that define the partition. Enable the calculator cache. For example. in Sample Basic. user2 also uses the user name declared in the partition definition (partition user) to access the source database. thus affecting the calculated value of Market on the data target. Market is calculated from the data for the North and South members (and their children) on the data source. these formulas are calculated. This process reduces the batch processing time for batch calculation. For more information. make sure that the partition definition produces the desired calculation results. where these formulas may not exist. These results may be different from how the Market member are calculated from the North and South members on the data target. For example. If a second user (user2) connects to the target database and drills down to access source data.

Figure 52 Linked Partition There are no performance considerations for linked partitions. The DBA can link individual business unit databases to the corporate database. Linked Partitions A linked partition connects two different databases with a data cell. A user in such a scenario can perform these tasks: ● ● ● View the general profit and sales at the corporate level in a spreadsheet at the data target. For an example of creating a linked partition. For example. Some data. This action opens a new spreadsheet. To prevent users from seeing privileged data. Unlike replicated or transparent partitions. exists in each business unit. they might have several business units. The database that you link to can contain very different dimensions than the database from which you connected. 210 Designing Partitioned Applications . such as profit and sales. TBC can store profit and sales in a centralized database so that the profit and sales for the entire company are available at a glance. and view the data there.additional port is not needed for the partition user. data is not physically transferred from the source to the target. if TBC grew into a large company. You can then drill down into these dimensions. Drill across to individual business units. Drill down in the new spreadsheet to more detailed data. a new sheet opens displaying the dimensions in the second database. When the end user clicks the linked cell in the data target. establish security filters on both the data source and the data target. see “Planning for Security for Partitioned Databases” on page 213. for example. With linked partitions. such as east. the data source. a data cell or range of cells on the target provides a link point to a cell or range of cells on the source. If you are using Essbase Spreadsheet Add-in for Excel. linked partitions do not restrict you to viewing data in the same dimensionality as the target database. beyond optimizing the performance of each linked database. as long as user2 is accessing the same source database. Instead. you drill across to a second database. see “Case Study 3: Linking Two Databases” on page 217. For directions on establishing security filters.

Performance may improve. that is. A single data cell can allow the user to navigate to more than one database. and the spreadsheet that opens when the user drills across is connected to the data source. Use a linked partition when you want to connect databases with different dimensionality. the Total Profit cell in the Accounting database can link to the Profit cells in the databases of each business unit. where users move from the data target to the data source. the spreadsheet that the user first views is connected to the data target. For example. see “Drill Across and Linked Partitions” on page 212. This section describes the advantages and disadvantages of using a linked partition. because less of the outline is shared. not through a data target. For information on creating accounts. Deciding Which Type of Partition to Use 211 . because Essbase accesses the database directly. This setup is the opposite of replicated and transparent databases. You do not have to keep the data source and data target outlines closely synchronized. Advantages of Linked Partitions ● You can view data in a different context. Advantages and Disadvantages of Linked Partitions Linked partitions allow users to navigate to databases that contain different dimensions. ● ● ● Disadvantages of Linked Partitions You must create an account for users on each database or default access to the destination database (such as through a guest account). but linked partitions are not always the ideal partition type.Figure 53 Source and Target for Linked Partition For linked partitions. you can navigate between databases containing many different dimensions.

use the guest account login and password as the default login when creating the linked partition. Essbase looks for the linked partition default user name and password. Checks to see if you have specified a default account on the data target when you created the partition.Drill Across and Linked Partitions When a user clicks on a linked cell in a linked partition. Essbase logs the user in using that account. if users access data through a data source named Company and a data target named East. Opens a login window prompting the user to enter a new login and password. Essbase logs the user in using that account. If these defaults are not specified. ● When a user drills across on data to a data target. Choosing a Partition Type The following table should help you choose which type of partition to use. Once you have created the account. a spreadsheet opens and displays the linked database. This process is called drill across. Port usage varies depending on the number of different user names being used to access the various source and target databases (and whether those databases are contained within the same or different servers). If so. 3. user1 is requested to enter login information to access the source database. If user1 does not have access to the source database. create a guest account for the East database with the appropriate permissions. Essbase logs the user in using that account. if Mary accesses data in a Company database and an East database. create an account with the same login and password for Mary on both the Company and East databases. See “Managing Users and Groups in Native Security Mode” on page 625. For example. Once the user enters a valid login and password. Checks to see if the user has an account on the data target with the same name and password. If you did. Linked Partitions and Port Usage When accessing a linked partition. Feature Up-to-the-minute data Reduced network traffic Reduced disk space Increased calculation speed Replicated Transparent x Linked x x x x x x 212 Designing Partitioned Applications . Essbase logs the user into the data target using the following steps: 1. Create a default account that users can use when accessing target databases. 2. To facilitate drill across access you can use the following strategies: ● Create accounts for each user on each database. Essbase tries to use the end user’s (user1) login information to connect to the source database. For example.

This setting overrides user filters that allow users to update data. Users accessing linked databases may need to connect to two or more databases. Create accounts for users at the data target. or linked partitions may need to view data stored in two or more databases. create accounts for users at the data source. Create read and write filters at the data target to determine what end users can view and update. “User Management and Security. See “Managing Users and Groups in Native Security Mode” on page 625. If you are creating a linked partition. If you are creating a replicated partition. Process for Setting up End User Security Create the required end users with the correct filters. 4. 2. Planning for Security for Partitioned Databases 213 . See Chapter 37. See the Essbase Administration Services Online Help.Feature Smaller databases Improved query speed Invisible to end users Access to databases with different dimensionality Easier to recover Less synchronization required Ability to query data based on its attributes Ability to use front-end tools that are not Distributed OLAP-aware Easy to perform frequent updates and calculations Ability to update data at the data target View data in a different context Perform batch updates and simple aggregations Replicated Transparent x Linked x x x x x x x x x x x x x x x x x Planning for Security for Partitioned Databases Users accessing replicated. The following sections describe how to set up security so that users do not view or change inappropriate data. 1. determine whether users can make changes to a replicated partition at the data target. See “Drill Across and Linked Partitions” on page 212.” 3. transparent.

You can create filters on the administrative account in addition to filters on the end users. When end users update data at the data target. Create an administrative account at both the data source and the data target.Process for Setting up Administrator Security The administrative account performs all read and write operations requested by the data target for the data source. One day. The networks to the eastern region could not handle the large flow of data. 1. started out with a centralized database. For transparent partitions. Essbase uses this account to log onto the data source to retrieve data and to perform outline synchronization operations. “User Management and Security”. For example. ● For replicated partitions. the fictional soft drink company upon which the Sample Basic database is based. the network went down and users at the eastern region could not access the data at all. Create the required administrative users with the correct filters. Filters on the administrative account can ensure that no one at the data target can view or update inappropriate data. See “Setting the User Name and Password” on page 221. the administrator at the corporate database can restrict write access on certain cells to avoid relying on administrators in the various regions to set up security correctly for each end user. set up read filters at the data source to determine which data Essbase reads when replicating and set up write filters at the data target to determine which data Essbase writes to when replicating. ● Case Studies for Designing Partitioned Databases The following sections describe examples of partitioning a database: ● ● ● “Case Study 1: Partitioning an Existing Database” on page 214 “Case Study 2: Connecting Existing Related Databases” on page 216 “Case Study 3: Linking Two Databases” on page 217 Case Study 1: Partitioning an Existing Database Assume that TBC. the administrative account retrieves the data. when end users request data at the data target. 2. the administrative account logs into the data source and updates the data there. however. Users were constantly waiting for data that they needed to make decisions. For example. See Chapter 37. this solution was no longer feasible. set up read filters at the data source to determine which data Essbase retrieves for end users and set up write filters at the data source to determine which data Essbase updates for end users. As the eastern region grew. 214 Designing Partitioned Applications . Create read and write filters to determine what administrators can view and update.

and Scenario.Everyone agreed that the eastern region needed to access its own data directly. This example is based on the Samppart application. ● 3 Decide on the type of partition to use. The arrows indicate flow from the data source to the data target. So. but the eastern region budget moves to the eastern region’s database. The Company database is the data source for the Corp_Budget member and the data target for the East and the East Actual members. use transparent because the data target (Company) needs up-to-the-minute data. For Eastern Region and Actual. ● For East. Case Studies for Designing Partitioned Databases 215 . The East database is the data source for its East and Actual members and the data target for the Corp_Budget member. ➤ To create a partition based on this example: 1 Determine which data to partition. ● 2 Choose the data source and the data target. assume that TBC decided to ask you to partition their large centralized database into two smaller databases—Company and East. which contains the Company database. without going through the company database. it is the source. TBC decided to change where budgeting information was stored. which contains the East database. Partition the database along the Actual and Corp_Budget members of the Scenario dimension. East is the source and Company is the target. and the Sampeast application. In addition. The following illustration shows a subset of the partitioned databases. Measures. The corporate budget stays at company headquarters. because the company owns the corporate budget. ● For Corp_Budget. ● Partition the database along the East member of the Market dimension to give the eastern region more control over the contents of its database. The Sample Basic database contains five standard dimensions—Year. Both are shipped with Essbase. Market. Product. use Company as source and East as Target. because the eastern region needs to update its market and actual information.

216 Designing Partitioned Applications . and Central) and promote East. users and DBAs see the following benefits: ● Faster response times. for the following reasons: ● ● ● ● So many users access it that performance is slow.● For Corp_Budget. you can reap the following benefits: ● ● Leverage work that has already been completed. Higher quality data. Creating the new East database by cutting the Company outline and pasting it into the East outline. and outlines. DBAs can control the down time of their local databases. use replication because the data target (Company) does not need up-tothe-minute data. Users viewing the Sample Basic database want to share data with and navigate to those other databases and you. It is impractical to combine all of the databases into one database. For East Actual. report scripts. ● ● Creating the new Sampeast application. By connecting the databases instead. Synchronize the data. because the corporate budget and eastern budget are now synchronized. Creating the partitions. because it is centrally managed. ● 4 Finally. Loading data into the new partitions. Then delete the extra members (that is. So you decide to connect multiple databases. because so much of the data is unrelated. making them easier to maintain. You cannot find a down time to administer the database. West. the DBA. create the partitioned databases by performing the following tasks. Payroll. calculation scripts. South. such as Inventory. they use the same data. The database is very sparse. and Sales. rules files. Access to more data—now users can connect to both the eastern and corporate budgets. want to synchronize related data. ● ● ● Case Study 2: Connecting Existing Related Databases Assume that TBC has several databases. because they are competing with fewer users for the data and they are accessing the data locally. Note: This example is not shipped with Essbase. No one has control over their own data. use transparent because the data target (East) needs up-to-the minute data. ● ● ● After the corporate database is partitioned. Marketing. If necessary. editing existing data sources.

Marketing. connect the Inventory database. Number_Shipped. Channel. Access to more data—now users can link to new databases. She decides instead to allow her users to link to the TBC Demo database which already contains this information. Perform the tasks in 1 through 3 for each database. Choose the data source and the data target. Connect the Payroll.1. they use the same data. but TBC Demo has two additional dimensions. the fictional soft drink company. Determine which data to connect. making them easier to maintain. Marketing. create the partitioned databases by performing the following tasks: ● ● ● Editing existing data sources. Case Studies for Designing Partitioned Databases 217 . she is reluctant to do so. First. loading data into the new partitions Now that the Sample Basic database is partitioned. since she does not own the data for channel information. Case Study 3: Linking Two Databases Assume that TBC. calculation scripts. and Sales databases in the Sample Basic database. because the databases are now synchronized. But. ● Replicate the Opening_Inventory and Ending_Inventory members from the Measures dimension of the Inventory database into the Measures dimension of the Sample Basic database. which describes where a product is sold. 5. users and DBAs see the following benefits: ● ● ● DBAs can control the down time of their local databases. and outlines Creating the partitions If necessary. 4. report scripts. Both databases have similar outlines. Finally. Create a partition containing data from the Payroll. In the case of the Opening_Inventory and Ending_Inventory members. Add a link to the Inventory database so that users can view these more detailed measures if they need to. and Number_Returned members in the Measures dimension of the Inventory database to the Sample Basic database. which describes how the product is packaged. Use a replicated partition for the Opening_Inventory and Ending_Inventory members because the network connection is slow. Do not replicate the Number_On_Hand. has two main databases—the Sample Basic database and TBC Demo. Higher quality data. and Sales databases. 3. rules files. the Inventory database is the data source and the Sample Basic database is the data target. Decide on the type of partition to use. and Package. ● ● ● 2. that is. The DBA for the Sample Basic database notices that more and more users are requesting that she add channel information to the Sample Basic database.

Users can then drill across to TBC Demo and view the Channel and Package information. because users move to TBC Demo. it is considered the data target. Channel and Product. see “Mapping Data Cubes with Extra Dimensions” on page 223. ● After the databases are linked.Note: This example is not shipped with Essbase. Because users start at the Sample Basic database. all she needs to do is check the link periodically to make sure that it still works. For more information. 218 Designing Partitioned Applications . 3. Use a linked partition because the databases have different dimensionality. Likewise. to void in the Sample Basic database. Perform the following steps: 1. The DBA decides to link the Product dimension of the Sample Basic database to the Product dimension of TBC Demo. where users move from the data target to the data source. see “Granting Permissions to Users and Groups in Native Security Mode” on page 622. users and DBAs see the following benefits: ● ● Users have access to more data than before. For directions on how to assign accounts to linked partitions. Determine which data to link. 4. Remember to map the extra dimensions from TBC Demo. Finally. Choose the data source and the data target. Set up a guest account on TBC Demo that gives the users who connect from the Sample Basic database permissions to access the Channel and Package dimensions. create the partition: ● Establish a link from the Product member of the Sample Basic database to the Product dimension of the TBC Demo database. see “Choosing a Partition Type” on page 220 and “Choosing a Partition Type” on page 220. it is considered the data source. 2. Decide on the type of partition to use. The DBA for the Sample Basic database does not need to maintain the TBC Demo database. Note: This setup is the opposite of replicated and transparent databases. For a general discussion on creating accounts.

. Set up the data source and the data target.. See “Choosing a Partition Type” on page 220... Note: The information in this chapter is designed for block storage databases.. 2....... 230 When you build a new partition.....................14 In This Chapter Creating and Maintaining Partitions Process for Creating Partitions..... each database in the partition uses a partition definition file to record all information about the partition..... “Comparison of Aggregate and Block Storage. including specifying the network location of each........ 3. Hyperion strongly recommends that you read Chapter 13................... Some of the information is not relevant to aggregate storage databases.......... Define the area of the database to partition............. For detailed information on the differences between aggregate and block storage...... and how to maintain existing partitions.... “Designing Partitioned Applications.....................” This chapter describes how to create replicated... Process for Creating Partitions 1........” before creating partitions. See “Setting up the Data Source and the Data Target” on page 220.... 4... Caution! Design partitions carefully.. see Chapter 57.. or linked... or linked partitions... Set the partition type as replicated......... See “Defining a Partition Area” on page 222.......... 219 Process for Maintaining Partitions. Set up the administrative account to use to connect the data source and the data target partitions.. transparent.............. transparent.. See “Setting the User Name and Password” on page 221.. Process for Creating Partitions 219 .......... Partition creation requires Database Manager permissions or higher... such as its data source and data target and the areas to share..............

see “Specifying the Partition Type and Settings” in the Essbase Administration Services Online Help. For detailed information. populate the partition. see “Transparent Partitions” on page 204. See “Validating Partitions” on page 229. However. Save the partition. see “Linked Partitions” on page 210. If the partition is replicated. the target application and database. 220 Creating and Maintaining Partitions . and the location of each.” Choosing a Partition Type When you create a partition. A transparent partition allows users to access data from the data source as though it were stored in the data target. Setting up the Data Source and the Data Target Define the data source and data target. including specifying the source application and database. See Chapter 15. 7. ● ● ➤ To choose a partition type. “Understanding Data Loading and Dimension Building” and Chapter 20. 2 Specify the locations of the data source and data target Specify the source Essbase Server and the target Essbase Server. 8. the data is stored at the data source. which can be in another application or in another Essbase database or on another Essbase Server. Validate the partition. For detailed information. “Calculating Essbase Databases. see “Replicated Partitions” on page 200. See “Specifying Connection Information for Partitions” in the Essbase Administration Services Online Help. Loading and calculating the partition may require you to change existing rules files and calculation scripts.5. For detailed information. See “Populating or Updating Replicated Partitions” on page 234. See “Mapping Members” on page 222. map the members in the data source to the members in the data target. If necessary. See “Specifying Connection Information for Partitions” in the Essbase Administration Services Online Help. Load and calculate the new database that contains the partition. 6. Specify the names of the application and database of data source and on the data target. A linked partition gives users a different perspective on the data. 9. A linked partition sends users from a cell in one database to a cell in another database. See “Saving Partitions” on page 230. ➤ To set up the data source and the data target: 1 Specify the data source and data target. choose one of the following types: ● A replicated partition is a copy of a portion of the data source that is stored in the data target.

234.23. specify the outline to which you can make changes.1.domainname abcdefg.234.hijk. if you want to use an alias abcdefg. See “Specifying Connection Information for Partitions” in the Essbase Administration Services Online Help. see “Planning for Security for Partitioned Databases” on page 213. the host file entries should be: 172. Otherwise. for a system with hostname hostname. make sure that the aliases are propagated to all computers on your system.456 hostname. For example.123 and lmnopqrs. To synchronize database outlines for all partition types. if you want to use multiple aliases.hijk.123 In case of multiple aliases. To propagate an alias to all the computers on your system.hijk.234. The user name and password must be identical on both the data source and the data target. all changes made on the data source outline overwrite the data target outline when you synchronize the outlines. 4 If desired. Local security filters apply to prevent end users from seeing privileged data. You can.456 abcdefg.hijk. Process for Creating Partitions 221 . use the full server name. 3 If desired. For example. enter a note to describe the data source or data target. edit the /etc/hosts file on UNIX systems.123 lmnopqrs.1.456.tuvw.tuvw.1 hostname. or %WINDIR%/system32/drivers/etc/hosts file on Windows systems. By default.1 172.234. Essbase uses this user name and password: ● To transfer data between the data source and the data target for replicated and transparent partitions. domainname abcdefg.234. see “Synchronizing Outlines” on page 230.domainname having IP address 172.123 for a system with hostname hostname.23.23. adding an entry with the IP address.23.domainname having IP address 172.tuvw. append the aliases following the hostname. the host file entry should be: 172. followed by the host name. abcdefg.If you want to use network aliases for the data source or data target names.1 hostname. ● For more information.23. Note: Do not use localhost as an alias to specify source and target server names. domainname lmnopqrs. followed by the alias. however. For more information. Setting the User Name and Password You must specify a user name and password for Essbase to use when it communicates between the data source and the data target. specify that changes made to the data target outline overwrite the data source outline when you synchronize the outlines.123 Note: Root or admin privileges are required to edit the hosts file.hijk.

A partition is composed of one or more areas. and “Testing Partitions” on page 230. as described in “Validating Partitions” on page 229. make sure that both the data source and data target contain the same number of cells. if the area covers 18 cells in the data source. see “Substitution Variables in Partition Definitions” on page 197. For more information on partition areas. Although Essbase validates the aliases. For more information. see “Specifying Connection Information for Partitions” in the Essbase Administration Services Online Help. Defining a Partition Area You can define or edit the areas of the data source to share with the data target in a partition. An area is a subcube within a database. (When you type a duplicate member name. see “Determining Which Data to Partition” on page 200. If Essbase cannot map automatically.[New York]” 222 Creating and Maintaining Partitions . When you define a replicated area. For example. This verifies that the two partitions have the same shape. You can use substitution variables in a partition area definition. see “Defining Areas in Partitions” in the Essbase Administration Services Online Help. The cell count does not include the cells of attribute dimensions. an area could be all Measures at the lowest level for Actual data in the Eastern region. ➤ To define a partition area. If the data source and the data target contain the same number of members and use the same member names. save. Mapping Members To create a partition. Hyperion recommends that data source member names and data target member names are the same to reduce the maintenance requirements for the partition. Map data source members to data target members in any of the following ways: ● Enter or select member names manually. For example. “[State]. you must map manually. You need only validate. Essbase must be able to map all shared data source members to data target members. Note: Use member names instead of their aliases to create area definitions. the partitions will not work. “Saving Partitions” on page 230. especially when the partition is based on member attributes.➤ To set the user name and password for the data source and the data target. the data target should contain an area covering 18 cells into which to put those values. Essbase automatically maps the members. Using substitution variables provides flexibility to manage sharing different data at different times. and test the partitions. type the qualified member name and enclose it in double quotation marks (“ “). for example.

see “Substitution Variables in Partition Definitions” on page 197. The following example illustrates a case where there are more dimensions in the data source outline than in the data target outline: Process for Creating Partitions 223 . if the data value for Cola. you must map the data source members to the data target members. East is 15 in the data source. Note: You can use substitution variables for member names in mapping specifications. all references to East_Region in the data target point to East in the data source. Then. the first two member names are identical. map East to East_Region.● ● Import the member mappings from an external data file. In the following example. the data value for Cola. For example. For more information. The following sections provide details about mapping members: ● ● ● ● ● ● “Mapping Members with Different Names” on page 223 “Mapping Data Cubes with Extra Dimensions” on page 223 “Mapping Shared Members” on page 225 “Importing Member Mappings” on page 225 “Mapping Attributes Associated with Members” on page 226 “Creating Advanced Area-Specific Mappings” on page 227 Mapping Members with Different Names If the data source outline and data target outline contain different members or if the members have different names in each outline. To map members. East_Region is 15 in the data target. but the third member name is different: Source Product Cola Year 1998 Market East Target Product Cola Year 1998 Market East_Region Because you know that East in the data source corresponds to East_Region in the data target. 1998. 1998. see “Defining Global Mappings in Partitions” in the Essbase Administration Services Online Help. Create area-specific mappings. Mapping Data Cubes with Extra Dimensions The number of dimensions in the data source and data target may vary.

you can map it to Void in the data target. In the above example. define the areas of the data source to share with the data target: Source @DESCENDANTS(Market). manually entering “Void” may cause errors.Source Product Cola Market East Year 1999 1998 1997 Target Product Cola Market East If you want to map member 1997 of the Year dimension from the data source to the data target. 1998. If you map member 1997 from the data source to the data target. the Year dimension contains three members: 1999. Product and Market data for 1998 and 1999 will not be extracted. Note: When you map a member from an extra dimension. The following example illustrates a case where the data target includes more dimensions than the data source: Source Product Cola Target Product Cola Market East 224 Creating and Maintaining Partitions . the partition results reflect Product and Market data only for 1997. you will receive an error message when you attempt to validate the partition. and 1997. If you do not include at least one member from the extra dimension in the area definition. 1997 Target @DESCENDANTS(Market) You can then map the data source member to Void in the data target: Source Target 1997 Void “Void” is displayed automatically. But first. the partition results reflect data only for the mapped member.

East You can then map member East from the Market dimension of the data target to Void in the data source: Source Target Void East If member East from the Market dimension in the data target is not included in the target areas definition. from the data source.Source Year 1997 Target Year 1997 In such cases. Mapping Shared Members When you create a replicated or transparent partition using a shared member. Data source members column—lists the member names in the data source. use the real member names in the mapping. Member names containing spaces must be in quotes. you will receive an error message when you attempt to validate the partition. Process for Creating Partitions 225 ● . Mapping files must have a .txt extention. Importing Member Mappings You can import member mappings from a text file. first define the shared areas of the data source and the data target: Source @IDESCENDANTS(Product) Target @IDESCENDANTS(Product). not the shared one. Member names containing spaces must be in quotes. Essbase maps the real member. A sample member file must contain all of the following (except extra columns): Figure 54 Member Mapping Import File ● Data target members column—lists the member names in the data target.

and child 200-30 is associated with No of the With_Caffeine attribute dimension. Separators—separate the columns. see “Attributes in Partitions” on page 198. and child 100-30 is associated with member FALSE of the Caffeinated attribute dimension. Extra column—the file can contain extra columns that do not contain member names. The data target outline has a Product dimension with a member 200 (Cola). You must associate caffeinated cola from the data source to caffeinated cola in the data target. map attributes in transparent and linked partitions. For more information. Mapping Attributes Associated with Members You must accurately map attribute dimensions and members from the data source to the data target to ensure that the partition is valid.● Non-member column—missing members. In the following example. First define the areas to be shared from the data source to the data target: Source Target @DESCENDANTS(100) @DESCENDANTS(East) @DESCENDANTS(200) @DESCENDANTS(East) Then map the attributes: Source 100-10 100–20 100–30 Caffeinated Caffeinated_True Caffeinated_False Target 200-10 200–20 200–30 With Caffeine With_Caffeine_True With_Caffeine_False If you map attribute Caffeinated_True to attribute With_Caffeine_No. Note: You cannot map members of attributes dimension in replicated partitions. Children 200-10 and 200-20 are associated with member Yes of the With_Caffeine attribute dimension. Separators can be tabs or spaces. Children 100-10 and 100-20 are associated with member TRUE of the Caffeinated attribute dimension. however. Use when you are mapping an extra member in the data source to Void in the data target or vice versa. see “Importing Member Mappings for Partitions” in the Essbase Administration Services Online Help. For information on using attributes in partitions. you receive an error message during validation. the outline for the data source contains a Product dimension with a member 100 (Cola). ● ● ➤ To import member mappings. 226 Creating and Maintaining Partitions . You can. refer to “Rules for Replicated Partitions” on page 201.

Since Essbase cannot determine how to map multiple members in the data source to a single member in the data target. ➤ To create area-specific mappings. Map the Caffeinated attribute dimension in the data source to Void in the data target. “Working with Attributes. ● For a comprehensive discussion of attributes. you may need to use area-specific mapping. or vice versa. If. see “Attributes in Partitions” on page 198. see Chapter 10. Example 1: Advanced Area-Specific Mapping The data source and data target contain the following dimensions and members: Source Product Cola Target Product Cola Process for Creating Partitions 227 . Use area-to-area mapping when you want to: ● ● Map data differently depending on where it is coming from. Then use that rule in the context of areaspecific mapping to map the members.” For a general discussion of attributes in partitions. Map more than one member in the data source to a single member in the data target. you must logically determine how to divide your data until you can apply one mapping rule to that subset of the data. You can then map the attributes from the data source to the data target. you don’t need to perform advanced area-specific mapping. Creating Advanced Area-Specific Mappings If you can map all of the members in your data source to their counterparts in the data target using standard member mapping. see “Defining Area-Specific Member Mappings in Partitions (Optional)” in the Essbase Administration Services Online Help. you have the following choices: ● Create the Caffeinated attribute dimension and its members in the outline of the data target and associate them with the Product dimension.There can be instances where an attribute dimension or an attribute member exists in the outline of the data source but not in the outline of the data target. however. For example: Source Caffeinated True False Target In such cases. you need to control how Essbase maps members at a more granular level. Area-specific mapping maps members in one area to members in another area only in the context of a particular area map.

not member combinations. Actual in the data target and 1999 in the data source should correspond to 1999. Actual) and then create area-specific mapping rules for that area. you must also map these members to Void in the data target. Instead. for example. for example. Actual in the data target should be 15. Budget in the data target. So. This strategy works.Source Market East Year 1998 1999 Target Market East Year 1998 1999 Scenario Actual Budget The data source does not have a Scenario dimension. So. Because mapping works on members. 1998. you cannot simply map 1998 to 1998. 228 Creating and Maintaining Partitions . Example 2: Advanced Area-Specific Mapping You can also use advanced area-specific mapping if the data source and data target are structured very differently but contain the same kind of information. the data value for Cola. Define the area (1998 and 1998. for example. if the data value for Cola. East. it assumes that past data is actual data and future data is forecast. if your data source and data target contain the following dimensions and members: Source Market NY CA Target Customer_Planning NY_Actual NY_Budget CA_Actual CA_Budget Scenario Actual Budget You know that NY and Actual in the data source should correspond to NY_Actual in the data target and NY and Budget in the data source should correspond to NY_Budget in the data target. Actual. You know that 1998 in the data source should correspond to 1998. East. the data value for NY_Budget in the data target should be 28. 1998 in the data source is 15. data. or budget. if the data value for NY. Budget in the data source is 28. Because the data source does not have Actual and Budget members.

For replicated and transparent partitions. When you save a partition. use a tool: Tool Administration Services ESSCMD MaxL Topic Validating Partitions VALIDATEPARTITIONDEFFILE create partition Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Process for Creating Partitions 229 . All connection information is correct. save the partition. and NY_Actual) and then create areaspecific mapping rules for that area. it checks on the Essbase Server for the data source and the data target to ensure that: ● ● ● The area definition is valid (contains no syntax errors). you cannot simply map NY. If necessary. When Essbase validates a partition definition. For replicated and transparent partitions.Because mapping works on members. Define the area (NY and Actual. on both the data source server and the data target server. validate it to ensure that it is accurate before you use it. and a replication target does not overlap with a transparent target. ● ● ● ● ● After you validate. After you validate. database names. a transparent target does not overlap with a transparent target. save the partition definition. user names. the partition definition is saved to two different . the default user name and password that you provide are correct. not member combinations. Essbase does not display an error message when results are incomplete. that is. For replicated and transparent partitions. and password information. a replication target does not overlap with a replication target. Validating Partitions When you create a partition.DDB files. you can edit an existing partition. You must validate a transparent partition that is based on attribute values to ensure that the results are complete. Actual to NY_Actual. you must also map these members to Void in the data target so that the dimensionality is complete when going from the data source to the data target. The specified data source members are valid and map to valid members in the data target. the cell count for the partition is the same on the data source and the data target. the area dimensionality matches the data source and the data target. application names. For linked partitions. Database Manager permissions or higher are required. ➤ To validate a partition. the server names. Because the data target does not have NY and CA members. a replication target does not overlap with a transparent target.

5. The partition definition is stored in a single . Essbase must be able to map each dimension and member in the data source outline to the appropriate dimension and member in the data target outline. 4. Troubleshoot partitions. See “Viewing Partition Information” on page 236. 1. ● Note: Although you can save a partition with mapping errors. 6.Saving Partitions After you validate the partition definition. operations using that partition will fail until the mapping errors are fixed. See “Testing Partitions” on page 230. 230 Creating and Maintaining Partitions . 2. The partition definition is stored in two . Synchronize the outlines of the data target and the data source. Test the partition. See “Troubleshooting Partitions” on page 236. Testing Partitions To test a partition: ● View data targets using the Essbase Spreadsheet Add-in for Excel or other tool to make sure that the user sees the correct data. Viewing information about existing partitions. see “Saving Partitions” in the Essbase Administration Services Online Help. See “Editing and Deleting Partitions” on page 235.DDB files.DDB file. ● Synchronizing Outlines When you partition a database. you can save the partition definition to any of the following locations: ● To both the data source server and the data target server. ➤ To save a partition definition. make sure that Essbase links you to the expected database and that the default user name and password work correctly. Process for Maintaining Partitions Here is the suggested process for maintaining database partitions. Update or populate replicated partitions. To a client machine. See “Synchronizing Outlines” on page 230. See “Populating or Updating Replicated Partitions” on page 234. When testing a linked partition. 3. Edit or delete existing partitions.

Messages that pertain to outline synchronization are prefixed with OUTLINE SYNC. that is. However. For example. Target outline. a warning message prompts you to see the application log for details. while the data values in the outline are maintained at the regional level (for example. The target outline is the outline to which outline changes are applied. Essbase can make the data in the data source available from the data target as long as the outlines are synchronized and the partition definitions are up-to-date. outline and data changes flow in the same direction. Essbase tracks changes that you make to your outlines and provides tools to make it easy to keep your outlines synchronized. the source outline is from the same database as the data source.After you map the two outlines to each other. Although Essbase does try to make whatever changes it can to replicated and transparent partitions when the outlines are not synchronized. ● ● The source outline is the outline from which outline changes are taken. For more information. “Creating and Changing Database Outlines. See Chapter 7. You can also use the data target outline as the source outline. you must determine which outline is the source outline and which is the target outline. If you make changes to one of the outlines. those changes cannot be propagated back to the source outline when you synchronize the outlines. If Essbase cannot apply all changes. you can propagate these changes to the target outline when you synchronize the outlines. East). the two outlines are no longer synchronized. Essbase may not be able to make the data in the data source available in the data target. see in “Viewing the Essbase Server and Application Logs” on page 737. administrators can make changes in the Company outline and apply those changes to each regional outline when the outline is synchronized. If you make changes to the: ● Shared area in the source outline. By default.” ● Essbase updates as many changes as possible to the target outline. Process for Maintaining Partitions 231 . Consider doing this if the structure of the outline (its dimensions. if the East database is the data source and the Company database is the data target. the default source outline is East. Setting the Source Outline and the Target Outline Before you can synchronize your outlines. members. and properties) is maintained centrally at a corporate level. make those changes in Outline Editor. To move these changes up to the source outline.

Each partition defined against the source outline has a separate timestamp in the .DBB file. Tracking Changes The following table describes the process for changing the source outline and synchronizing the target outline with the source outline: Action You Take Make changes to the source outline Action Essbase Takes 1. 2. Performing Outline Synchronization ➤ To synchronize outlines.DDB file to the last updated timestamp in the source outline’s . you can use only non-Unicode clients such as ESSCMD or MaxL statements executed through the MaxL Shell. see “Setting up the Data Source and the Data Target” on page 220. Note: Outline synchronization cannot be performed on an outline containing a Dynamic Calc member that has many (approximately 100 or more) children. Pull changes from the outline source 1. Creates or updates the outline change timestamp for that partition in the . where xxxxx is the number of the partition.➤ To set the source outline. Records the changes in a change log named essxxxx. use a tool: Tool Administration Services MaxL ESSCMD Topic Synchronizing Outlines refresh outline GETPARTITIONOTLCHANGES APPLYOTLCHANGEFILE RESETOTLCHANGETIME PURGEOTLCHANGEFILE Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Note: For synchronizing non-Unicode-mode outlines with multi-byte characters. If you have more than one partition on a source outline.ddb file.ddb file. Compares the last updated timestamp in the target outline’s . even if the two outlines are on servers in different time zones. Essbase updates the target timestamp when it finishes synchronizing the outlines using the last updated time on the source outline. Essbase creates a change log for each partition.chg. 232 Creating and Maintaining Partitions .

Select the changes to apply to the target outline 1.Action You Take Action Essbase Takes 2. 100-30) are not defined in the partition area. a change to the shared member in the undefined area is propagated to the target outline. 100-20. The children of Diet are shared members of the actual members. If a shared member is not in the partition area and its actual member is. such as adding an alias to the 100-10 actual member. Applies the changes to the target outline. Updating Shared Members During Outline Synchronization An actual member and its shared members in the source outline are propagated to the target outline if at least one actual or shared member is defined in the partition area. 100-20. If the source outline has changed since the last synchronization. a change to the parent 100 is not propagated to the target outline because it is in the undefined partition area and does not have an associated shared member in the defined partition area. Caution! If you choose not to apply some changes.DDB file. 2. you cannot apply those changes later. 100-30) are defined in the partition area. The change logs may have different names on the source outline and the target outline. Any change made to a member that does not have at least one actual member (or shared member) in the defined partition area is not propagated to the target outline. the partition definition is @IDESC(“Diet”). The reverse is also true. The parent Diet and its children (100-10. in Figure 55. The parent 100 and its children (100-10. Figure 55 Shared Members and Outline Synchronization If you make a change to an actual member in the undefined partition area. Essbase retrieves those changes from the source outline change log and places them in the target outline change log. using the time from the source outline. Process for Maintaining Partitions 233 . Updates the timestamp in the target outline’s . In illustrated in Figure 55. that change is propagated to the target outline because it is associated with a shared member in the defined partition area. For example.

234 Creating and Maintaining Partitions . You can choose to update: ● Only the cells that have changed since the last replication—It is fastest to update only changed cells. In the above example. Implied shared members are treated the same as shared members during outline synchronization. Essbase also tracks which cells in a partition are changed. ● Keep in mind that: ● Unless you choose to update all cells. a change to A11 is propagated to the target outline because its parent. the parent Diet is included in the outline because its children are shared members and in the defined partition area. This information is saved at the data source. A22 are in the undefined partition area. All cells—This is slower. A21. Actual members and their implied shared members in the source outline are propagated to the target outline if at least one actual or implied shared member is defined in the partition definition. replication does not update target data when the source data has not changed since last replication. Essbase keeps track of when the data source was last changed and when the data target was last updated so that you can determine when to update replicated partitions. you can update all cells to recover lost data at the target. Although A11 (implied shared member) is in the undefined partition area. Figure 56 Implied Shared Members and Outline Synchronization The reverse is true again. If A1 is not defined in the partition area and its implied shared member is. Either administrator—that of the data source site or that of the data target site— can be responsible for replicating data. it is recommended to include its parent. and A11. A1 and A2 are in the defined partition area. For example. A1. Using the partition definition as @CHILD(“A”) in the example in Figure 56. How frequently you update replicated partitions depends on users’ requirements for up-to-the-minute data. any change to A1 is propagated to the target outline. The change to the children A21 and A22 is not propagated to the target outline because these members are not defined in the partition area and are not associated with a member that is in the defined partition area.If a shared member is included in the partition area. Populating or Updating Replicated Partitions The administrator should regularly update data in a replicated partition. is in the defined partition area. but useful under certain conditions.

● By default. If you do not want to replicate #missing cells. Variance. Essbase pulls the Budget. using “Clear combinations” in your rules file during a data load. you use the same interface that you used to create the partition. use a tool: Tool Administration Services MaxL ESSCMD Topic Replicating Data refresh replicated partition GETUPDATEDREPLCELLS GETALLREPLCELLS PUTUPDATEDREPLCELLS PUTALLREPLCELLS Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Editing and Deleting Partitions You can edit and delete existing partitions. If you’ve deleted data blocks on the data source. Essbase updates all data cells at the data target even if you choose to update only changed cells. if you replicate from all data sources connected to the Samppart Company database. issuing CLEAR UPPER. For more information. if you replicate all data targets connected to the Sampeast East database.cfg setting). you can use the DISABLEREPLMISSINGDATA configuration setting (essbase. For example. For example. Essbase updates the Budget. restructuring the database keeping only level 0 or input data. ● You can replicate: ● All data targets connected to a data source. making modifications as necessary. When you delete a partition. You can delete data blocks at the data source by using the CLEARDATA command in a calculation script. When you edit a partition. CLEAR INPUT or RESETDB commands in Administration Services. see the Essbase Technical Reference. Actual. or deleting sparse members. and Variance % members from the Sampeast East database and updates them in the Samppart Company database. ● ➤ To update a replicated partition. and Variance % members in the Samppart Company database: From all data sources connected to a data target. Essbase deletes the partition definition from the .DDB file on the data source and data target servers. Variance. Process for Maintaining Partitions 235 . Essbase replicates #missing cells. Actual.

Symptom When replicating to multiple data targets.➤ To edit or delete a partition. Set the partition to not allow user updates or explain to users why their data disappears. The data source and the data target outlines are no longer mappable. Synchronize outlines for the data source and the data target and try again. You keep running out of ports. it lists the outlines 236 Creating and Maintaining Partitions . Your host names may not match. replicate into just the databases that are available. If one database is unavailable. Purchase more ports. but not the source outline? Essbase only propagates changes to the source outline. A new or recently changed partition is validated and saved but does not function. Make sure that the host names are synchronized between the servers. Did you use the hosts file to provide aliases to your local machine? Users are changing data at a replicated partition that you overwrite each time that you update the partition. some are not replicated. If database A is the source for database B. Partitions connect to other databases using ports. Solutions Retry the replication operation. Essbase overwrites user edits. Someone has deleted. Possible Causes The connection between the data source and one of the data targets was lost during the replication operation. Viewing Partition Information ➤ To view information about a partition. Was the target outline changed. database B cannot be source for database A for the same slice. Administration Services does not reflect outline changes. that is. Edit the partition having problems and specify the new application name or location. or moved the application containing the database to which you are trying to connect. Examine the partition definition. see “Opening the Create or Edit Partition Window” and “Deleting Partitions” in the Essbase Administration Services Online Help. Not all information arrived at the data target. you cannot connect to it. When you try to access a partition. Partitioned databases can no longer connect to each other. Edit the partition definition to remove the circular dependency. The partition may have a circular dependency. renamed. use a tool: Tool Administration Services Topic Opening the Create or Edit Partition Window Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference MaxL ESSCMD display partition PRINTPARTITIONDEFFILE Troubleshooting Partitions The following table lists common problems that you may encounter when using partitions.

If this is not possible. Moved members or dimensions in the source outline are not reflected properly in a synchronized target outline. Process for Maintaining Partitions 237 . Also. Solutions Data is confusing. Your partition may not be set up correctly.Symptom as being in sync even though one outline has changed. structure your outline so that members and dimensions are not moved across partitions. Moving a dimension past a dimension that is not in the partition may not get propagated to the target during outline synchronization. If possible. Check your partition to make sure that you are partitioning the data that you need. change the target outline to reflect the source outline moved members or dimensions. moving a member past a member that is not in the partition may not get propagated. Possible Causes Does the outline change affect a defined partition? Essbase does not propagate changes to the outline that do not affect any partitions.

238 Creating and Maintaining Partitions .

Fields.Part III Building Dimensions and Loading Data In Building Dimensions and Loading Data: ● ● ● ● ● Understanding Data Loading and Dimension Building Creating Rules Files Using a Rules File to Perform Operations on Records. and Data Performing and Debugging Data Loads or Dimension Builds Understanding Advanced Dimension Building Concepts Building Dimensions and Loading Data 239 .

240 Building Dimensions and Loading Data .

........... follow these steps: 1......................................... See “Data Sources” on page 242........................................................................................ 3... Building dimensions is the process of loading dimensions and members to an Essbase database outline by using a data source and a rules file..... 241 Data Sources ... and data values.............................. 2........... Process for Data Loading and Dimension Building To load data values or dimensions and members into an Essbase database........................... ● This chapter describes the components involved in loading data values and loading dimensions and members—data sources and rules files.................................... 242 Rules Files .................” Process for Data Loading and Dimension Building 241 .. members..... See “Rules Files” on page 247.................. Perform the data load or dimension build................ such as a spreadsheet or SQL database....... you must set up the data source outside Essbase.......15 In This Chapter Understanding Data Loading and Dimension Building Process for Data Loading and Dimension Building ..................... “Performing and Debugging Data Loads or Dimension Builds............................. See “Preparing Aggregate Storage Databases” on page 960....... ● Loading data is the process of adding data values to an Essbase database from a data source....................................................................... Set up the data source..... If the data source is not perfectly formatted........... 253 An Essbase database contains dimensions....................... See Chapter 18.................. 248 Data Sources That Do Not Need a Rules File ..... 249 Security and Multiple-User Considerations .................. 247 Situations That Do and Do Not Need a Rules File ....... If you are not using a rules file............... You can also use Outline Editor to add dimensions and members manually..... If necessary.. you need a rules file to load the data values........... Some rules file options and data source requirements vary for aggregate storage databases... set up the rules file..

Data Sources Data sources contain the information that you want to load into the Essbase database. formulas and consolidation properties Generation and level names Currency name and category Data storage properties Attributes UDAs ● ● ● ● ● The following sections describe the components of any kind of data source. such as member names.0 and higher Microsoft Excel files.0 and higher (loaded only as client artifacts or files in the file system) Spreadsheet audit log files ● Note: If you are using Administration Services Console to load data or build an outline. Version 4. spreadsheet files are not supported if the Administration Server is installed on a computer with a UNIX operating system. Version 5. A data source can contain: ● ● Data values Information about members. ● ● ● ● ● ● ● “Supported Data Sources” on page 242 “Items in a Data Source” on page 243 “Valid Dimension Fields” on page 244 “Valid Member Fields” on page 244 “Valid Data Fields” on page 245 “Valid Delimiters” on page 246 “Valid Formatting Characters” on page 247 Supported Data Sources Essbase supports the following types of data sources: ● ● ● ● ● Text files (flat files) from text backups or external sources SQL data sources Essbase export files (export files do not need a rules file to load) Microsoft Excel files with the . 242 Understanding Data Loading and Dimension Building . member aliases.XLS extension.

A delimiter indicates that a field is complete and that the next character in the record starts another field. in Excel set color to “Automatic” and “No Fill. Figure 58 Kinds of Fields ● Dimension fields identify the dimensions of the database. a data source is composed of records. Use member fields to tell Essbase to which members to map new data values.” and remove font settings such as bold and italic. such as Texas. Measures. In Figure 58. Texas. the dimension fields are Market. Figure 57 Records and Fields As illustrated in Figure 58. such as 100-10. are members of the Market dimension. Product. and dimension build errors. member fields.To avoid rules file. remove formatting in Microsoft Excel data source files. and fields in the Product column. Member fields identify the members or member combinations of the specified dimensions. and data fields. Year. A field is an individual value. usually you define dimension fields in the rules file. 100-10. or which members to add to the outline. member combination fields. Each data value must map to a dimension intersection. Sales. for example. data sources can contain dimension fields. and field delimiters. Items in a Data Source As illustrated in Figure 57. and Actual are all member fields. for example. Jan. ● ● ● A record is a structured row of related fields. such as Market. for example. fields. are members of the Product dimension. Although you can set dimension fields in the data source. data load. Essbase reads data sources starting at the top and proceeding from left to right. Data fields contain the numeric data values that are loaded into the intersections of the members of the database. Fields in the Market column. and Scenario. In Figure 58. In Data Sources 243 ● ● . Use dimension fields to tell Essbase the order of the dimensions in the data source.

In Figure 58 on page 243. the Sample Basic database has a dimension for Year. Valid Member Fields A member field can contain the name of a valid member or an alias. and Actual. For example. a member field must meet the following criteria: ● The member field must contain or inherit a valid member name or member property. If you are performing a dimension build. the dimension must already exist in the database. Jan. for example. Jan. the member can be new. Either the data source or the rules file must specify which dimension each member field maps to. Sales and 200 is the data value that corresponds to the intersection of Jan. Cola Cola Cola Actual East West South Sales Sales Sales 100 200 300 Data fields are used only for data loading. the month itself may not be specified in the data sources. the dimension name can be new. 100 is the data value that corresponds to the intersection of Jan. Actual.Figure 58. if the data source does not identify every dimension in the Essbase database. Sales. the member must already exist in the outline. but the new name must be specified in the rules file. If you are not performing a dimension build. If you are not performing a dimension build. West. You must specify the month in the data source header or the rules file. You can specify information in the header and in an individual record. Cola. Cola. 100-10. A dimension field must contain a valid dimension name. See “Using the Data Source to Work With Member Properties” on page 259. Sales. dimension builds ignore data fields. Actual. Texas and Ohio are valid members of the Market dimension. If several data sources arrive with monthly numbers from different regions. If you are performing a dimension build. East. 42 is the data value that corresponds to the intersection of Texas. The following sections describe each item in a data source: ● ● ● ● ● “Valid Dimension Fields” on page 244 “Valid Member Fields” on page 244 “Valid Data Fields” on page 245 “Valid Delimiters” on page 246 “Valid Formatting Characters” on page 247 Valid Dimension Fields In a data load. the rules file must identify the missing dimensions. Essbase must know how to map each member field of the data source to a member of the database. for example. In order to be valid. ● 244 Understanding Data Loading and Dimension Building . A blank member field inherits the member name from the previous record. See “Defining Header Records” on page 271. In the following example.

The exception is for fields in the rules file set as dimension reference method. For example. If you are performing a data load without a rules file. In Figure 58 on page 243. Actual. Essbase loads the data value to the data cell identified by the member combination in the record. In Figure 58 on page 243. Note: While it processes each record in a data source for a data load. In a data field. make sure that a member containing spaces. such as “New York. A data field contains the data value for its intersection in the database. Essbase would load 42 to the correct data cell. 42). for example. Essbase does not check to ensure a member specified in a member field belongs to the dimension specified for the dimension field. Data fields are ignored during a dimension build. it uses the last dimension or member name encountered for that dimension or member column. Jan. When Essbase encounters a blank dimension or member field while loading data without a rules file. with no spaces or separators between them. Member names that contain the same character as the file delimiter must be surrounded by double quotation marks.3 Data Sources 245 . 42 is a data field. for example. if the data source is delimited by spaces. Valid Modifiers Currency symbols: ● ● ● Examples $12 is a valid value. Minus signs after numbers are not valid. and the text strings #MI and #MISSING. Sales. See “Data Sources That Do Not Need a Rules File” on page 249. ● When a rules file is not used.” is surrounded by double quotation marks. Essbase accepts numbers and their modifiers. It is the dollar sales of 100-10 (Cola) in Texas in January. blank dimension and member fields are valid. member names containing some other characters must also be surrounded by quotation marks. Either the data source or the rules file must contain enough information for Essbase to determine where to put each data value. such as Jan. or to a member combination. if the second record reversed Jan and Sales (Texas. Valid Data Fields If you are performing a dimension build. you can skip this section. $ 12 is not a valid value because there is a space between the dollar sign and the 12.● A member field can map to a single member name. Dollar $ Euro Yen ¥ Parentheses around numbers to indicate a negative number Minus sign before numbers. ‘100-10’. such as Jan (which is a member of the Year dimension). Decimal point (12) -12 12. Actual (which are members of the Year and Scenario dimensions).

Essbase does not change the existing data value in the database. If there is no value in the data field (or the value is #MISSING). Essbase reads extra delimiters as empty fields. To read the following data source into the Sample Basic database. replace them with #MI or #MISSING. Essbase does not replace current values with empty values. you must define the field that contains data values as a data field in the rules file. See “Replacing an Empty Field with Text” on page 277. East East East Cola Actual Jan Sales 10 Cola Actual Feb Sales 21 Cola Actual Mar Sales 30 Extra Delimiters with a Rules File In data sources that are loaded with a rules file. Essbase ignores the extra spaces between the fields. 246 Understanding Data Loading and Dimension Building . if you try to use a rules file to load the file below into the Sample Basic database. the fields are separated by spaces. Essbase ignores extra delimiters. If you are using a rules file. delimiters can be any of the following: ● ● ● ● ● Tabs (default) Spaces New lines Carriage returns Commas Extra Delimiters Without a Rules File In data sources that are loaded without a rules file. In the following example. Valid Delimiters You must separate fields from each other with delimiters.345. for example. If the data source contains blank fields for data values. If the data source contains a member field for every dimension and one field that contains data values. If you are loading data without a rules file.218 and 1345218 are valid values. For example. see “Defining a Column as a Data Field” in the Essbase Administration Services Online Help.Valid Modifiers Large numbers with or without commas #MI or #MISSING to represent missing or unknown values Examples Both 1. Jan Feb Cola Cola East East Sales Sales Actual Actual 100 200 ➤ To define a data field. you must use spaces to delimit fields. define the last field as a data field.

21 East.30 To solve the problem. Essbase then puts Cola into Field 3..Actual. Essbase ignores the equal signs in the following data source and loads the other fields normally.10 East.Actual.Sales. delete the extra delimiter from the data source.Two or more minus signs.Cola.the load fails. such as for double underlining -. Rules Files 247 .Mar. For example. Essbase expects Cola to be in Field 3 and stops the data load.Jan.Cola. In the next record.Cola.Sales.Sales. such as for single underlining _ _ Two or more underscores == Two or more IBM PC graphic double underlines (ASCII character 205) _ _ Two or more IBM PC graphic single underlines (ASCII character 196) Ignored fields do not affect the data load or dimension build. East. however.Feb. East Actual Sales ===== 10 21 "100-10" Marketing ========= 8 16 Jan Feb Rules Files Rules define operations that Essbase performs on data values or on dimensions and members when it processes a data source. Valid Formatting Characters Essbase views some characters in the data source as formatting characters only. For that reason. Essbase reads the extra comma between East and Cola in the first record as an extra field.Actual. Use rules to map data values to an Essbase database or to map dimensions and members to an Essbase outline. Cola is in Field 2. Essbase ignores the following characters: == Two or more equal signs.

See Appendix E. “Using ESSCMD. After you create a dimension build rules file. or creating fields Mapping the data in the data source to the database by changing strings Changing the data values in the data source by scaling data values or by adding data values to existing data values in the data source Setting header records for missing values Rejecting an invalid record and continuing the data load ❍ ❍ 248 Understanding Data Loading and Dimension Building . Essbase does not change the data source. and how to transform data values or members before loading them. It is best to create a separate rules file for each dimension. and loads the changed data values into the database and the changed members into the outline. changes them based on the rules in the rules file. whether data values or members are sorted or in random order. You can re-use a rules file with any data source that requires the same set of rules.Figure 59 Loading Data Sources Through Rules Files Rules are stored in rules files. A rules file defines which build method to use. Essbase reads the data values or members in the data source. joining. you may want to automate the process of updating dimensions.” Situations That Do and Do Not Need a Rules File You need a rules file if the data source does not map perfectly to the database or if you are performing any of the following tasks: ● ● Loading data from a SQL data source Building dimensions ❍ ❍ Adding new dimensions and members to the database Changing existing dimensions and members in the database ● Changing the data in any way. splitting. including the following: ❍ ❍ ❍ ❍ Ignoring fields or strings in the data source Changing the order of fields by moving.

See “Valid Data Fields” on page 245. when Essbase encounters an invalid member field. ● One or more valid data values. Data Sources That Do Not Need a Rules File If you are performing a dimension build. in Figure 58. hyphens) Plus signs & (ampersands) If you are performing a data load without a rules file. If you find that you must perform many edits (such as moving Data Sources That Do Not Need a Rules File 249 . Otherwise. See “Data Sources That Do Not Need a Rules File” on page 249. See “Dealing with Missing Fields in a Data Source” on page 285. The fields in the data source must be formatted in an order that Essbase understands. and Actual. Essbase loads the data value 42 into the database with the members Texas. If the data source contains blank fields for data values. See “Valid Delimiters” on page 246. Note: If you are using a rules file. See “Loading Dimension Build and Data Load Error Logs” on page 751. as illustrated below: Sales "100-10" Ohio Jan Actual 25 Sales "100-20" Ohio Jan Actual 25 Sales "100-30" Ohio Jan Actual 25 A data source that is not correctly formatted will not load. Sales. Jan. 100-10. ● Valid delimiters. the data values may not load correctly. resulting in a partial load of the data values. Essbase must encounter one member from each dimension before encountering the data value. skip this section. To map perfectly. replace the blank fields with #MI or #MISSING. A member name must be enclosed in quotation marks if it contains any of the following: ❍ ❍ ❍ ❍ ❍ Spaces Numeric characters (0–9) Dashes (minus signs. The simplest way to format a record is to include a member from each dimension and a data field. a data source must contain all of the following and nothing else: ● One or more valid members from each dimension. For example. it stops loading the data source. If Essbase encounters a data value before a member of each dimension is specified.You do not need a rules file if you are performing a data load and the data source maps perfectly to the database. You can edit the data source using a text editor and fix the problem. Essbase loads all fields read before the invalid field into the database. you can load the data source directly. each record in the rules file must have the same number of fields. it stops the data load. If a data source contains all information required to load the data values in it into the database. This kind of load is called a free-form data load. To load a data value successfully.

A data source can contain ranges from more than one dimension at a time. skip this section. The following example contains a range of Jan to Feb in the Year dimension. Jan and Feb form a range in the Year dimension and Sales and COGS form a range in the Measures dimension. Texas Sales Actual "100-10" "100-20" Jan 98 87 Feb 89 78 Mar 58 115 250 Understanding Data Loading and Dimension Building .several fields and records). For example. Sales and COGS form a range in the Measures dimension. In the example below. When Essbase encounters Mar. at which point Essbase replaces the range with the new member or new member range. such as Mar. Actual Texas "100-10" "100-20" Sales Jan Feb 98 89 87 78 COGS Jan Feb 26 19 23 32 Notice that Sales is defined for the first two columns and COGS for the last two columns. When Essbase encounters two or more members from the same dimension with no intervening data fields. Ranges of member names can handle a series of values. it sets up a range for that dimension. the range changes to Jan. The following sections describe more complicated ways to format free-form data sources: ● ● “Formatting Ranges of Member Fields” on page 250 “Formatting Columns” on page 252 Formatting Ranges of Member Fields If you are performing a dimension build. skip this section. You can express member names as ranges within a dimension. It remains in effect until Essbase encounters another member name. consider using a rules file to load the data source. The range stays in effect until Essbase encounters another member name from the same dimension. The following sections describe additional types of ranges: ● ● ● ● “Setting Ranges Automatically” on page 250 “Handling Out of Range Data Values” on page 251 “Interpreting Duplicate Members in a Range” on page 251 “Reading Multiple Ranges” on page 252 Setting Ranges Automatically If you are performing a dimension build. Mar. See “Rules Files” on page 247. Feb.

resulting in a partial load of the data. Essbase interprets the file as shown below: Cola East Actual Sales COGS Budget Sales COGS Data Sources That Do Not Need a Rules File 251 . Essbase loads the 100 and 120 data fields into the database. When Essbase encounters a member range. If the data values are not in the member range. The members that Essbase ignores have a line through them in the following example: Cola East Actual Sales Jan 108 Feb 102 Budget Sales 110 120 Actual COGS 49 57 Budget COGS 50 60 For Actual. The following example contains more data fields than member fields in the defined range of members. As a result. Essbase maps data values to each member of the second range (Sales and COGS). The data load stops when it reaches the 10 data field. Cola Sales COGS Actual Jan 100 30 East Feb 120 34 10 32 For information on restarting the load. the first member of the first range. Structure ranges in the source data so that Essbase interprets them correctly. Budget. Essbase then proceeds to the next value of the first range. skip this section. Essbase loads any data fields read before the invalid field into the database. The following file contains duplicate members and two ranges: Actual to Budget and Sales to COGS: Cola East Actual Sales Jan 108 Feb 102 Budget Sales 110 120 Actual COGS 49 57 Budget COGS 50 60 Essbase ignores the duplicate members. Interpreting Duplicate Members in a Range If you are performing a dimension build.Handling Out of Range Data Values If you are performing a dimension build. see “Loading Dimension Build and Data Load Error Logs” on page 751. similarly mapping values to each member of the second range. skip this section. If a member appears more than once in a range. the data load stops. Essbase ignores the duplicates. it assumes that there is a corresponding range of data values.

Jan Feb 108 102 110 120 49 57 50 60 Reading Multiple Ranges If you are performing a dimension build. skip this section. Essbase supports loading data from symmetric columns or asymmetric columns. In the following example. Formatting Columns If you are performing a dimension build. skip this section. Asymmetric columns have different numbers of members under them. For example. skip this section. Essbase puts data fields in the Sales and COGS part of the database first. Product "100-10" "100-10" Measures Sales Sales Market Texas Ohio Year Jan Jan Scenario Actual Actual 112 145 The columns in the following file are also symmetric. In the following example. it processes the most recently encountered range first when identifying a range of data values. Symmetric Columns If you are performing a dimension build. Product has one column under it (100-10 and 100-10) and Market has one column under it (Texas and Ohio). Essbase encounters the Actual and Budget range first and the Sales and COGS range second. Symmetric columns have the same number of members under them. Because the Sales and COGS range is encountered second. the Jan and Feb columns are asymmetric because Jan has two columns under it (Actual and Budget) and Feb has only one column under it (Budget): Jan Actual 112 Jan Budget 110 Feb Budget 243 "100-10" Sales Texas 252 Understanding Data Loading and Dimension Building . Dimension builds require a rules file. skip this section. While reading the file from left to right and top to bottom. As Essbase scans a file. each dimension column has one column of members under it. The example above contains two ranges: Actual and Budget and Sales and COGS. because Jan and Feb have the same number of members under them: Jan Actual Budget 112 110 145 120 Feb Actual Budget 243 215 81 102 "100-10" "100-10" Sales Sales Texas Ohio Asymmetric Columns If you are performing a dimension build. Files can contain columns of fields.

“Ensuring Data Integrity” for information on Essbase transaction settings. ● Multi-User Data Load Issues You can load data values while multiple users are connected to a database. or calculating the database. label each column with the appropriate member name. After you build dimensions. Essbase protects data by using the security system described in Chapter 37."100-10" Sales Ohio 145 120 81 If a file contains asymmetric columns. such as identifying whether other users get read-only access to the locked block or noting how long Essbase waits for a locked block to be released. ❍ Updates the block. In a multi-user environment. “User Management and Security”. Only users with write access to a database can load data values or add dimensions and members to the database. When you load data values. ● Multi-User Dimension Build Issues You cannot build dimensions while other users are reading or writing to the database. See Chapter 47. Write access can be provided globally or by using filters. loading data. Essbase restructures the outline and locks the database for the duration of the restructure operation. ● Security Issues The security system prevents unauthorized users from changing the database. The Jan label must appear over both the Actual and Budget columns. Jan Actual 112 145 Budget 110 120 Feb Budget 243 81 "100-10" "100-10" Sales Sales Texas Ohio Security and Multiple-User Considerations Essbase supports concurrent multiple users reading and updating the database. Essbase does the following: ❍ Locks the block it is loading into so that no one can write to the block. Essbase uses a block locking scheme for handling multi-user issues. It is clear to Essbase that both of those columns map to Jan. See “Data Locks” on page 776 for information on whether Essbase unlocks a block when its update is complete or waits for the entire data load to complete before unlocking the block. Thus. The following example is not valid because the column labels are incomplete. users can use the database while you are dynamically building dimensions. The example above is valid because the Jan label is now over both Actual and Budget. Security and Multiple-User Considerations 253 .

254 Understanding Data Loading and Dimension Building .

......................................................................................... and Data ............. This chapter describes how to create a rules file for data loading or dimension building......................................... 2.. 265 A rules files tells Essbase what changes to make to the data source and outline during a data load or dimension build........................................................................... For information on performing a data load or dimension build after you create a rules file.................” Understanding the Process for Creating Data Load Rules Files To create a data load rules file....................................... 255 Understanding the Process for Creating Dimension Build Rules Files ..................... “Understanding Data Loading and Dimension Building............ 264 Defining Data Load Field Properties................................................................................................... and Printing .................................. Fields.......................................................................... see “Rules Files” on page 247............................................... see Chapter 18.......................... “Performing and Debugging Data Loads or Dimension Builds........................................... See “Combining Data Load and Dimension Build Rules Files” on page 257............................... 257 Creating Rules Files................ see Chapter 15............ 258 Naming New Dimensions............... For a definition and discussion of rules files........... follow these steps: 1............. 261 Setting Dimension Build Operational Instructions .............. Saving.................................... Create a rules file..................................................................................................................... 264 Performing Operations on Records........ Determine whether to use the same rules file for data loads and dimension builds......................................................... 256 Combining Data Load and Dimension Build Rules Files ............. 259 Setting Field Type Information .............................................................................. 258 Setting and Changing Member and Dimension Properties... 257 Setting File Delimiters ...........................16 In This Chapter Creating Rules Files Understanding the Process for Creating Data Load Rules Files .. See “Creating Rules Files” on page 257..... Understanding the Process for Creating Data Load Rules Files 255 .... 258 Selecting a Build Method ............. 265 Validating................” For information on data sources and rules files........

change or set the properties of members and dimensions you are building. “Using a Rules File to Perform Operations on Records. See “Setting and Changing Member and Dimension Properties” on page 259. 4. Select the build method. 9. See Chapter 17. and data operations to change the data in the data source during loading. See “Creating Rules Files” on page 257. Map each rules file field to the data source and define field properties. 5. Fields. 4. If necessary.3. See “Setting Field Type Information” on page 261. and dimension. 7. 5.” 8. See Chapter 17. See “Setting File Delimiters” on page 258. 3. Fields. field. including field type. field number. See “Setting Dimension Build Operational Instructions” on page 264. If necessary. Set the file delimiters for the data source. 256 Creating Rules Files . Validate and save the rules file. If necessary. follow these steps: 1. and Data.” 6. See “Selecting a Build Method” on page 258. See “Combining Data Load and Dimension Build Rules Files” on page 257. 2. See “Setting Dimension Build Operational Instructions” on page 264. See “Setting File Delimiters” on page 258. Understanding the Process for Creating Dimension Build Rules Files To create a dimension build rules file. 6. Validate and save the rules file. Set field type information. Create a rules file. set record. Set the file delimiters for the data source. and Data. set record and field operations to change the members in the data source during loading. If you are creating a dimension. See “Naming New Dimensions” on page 258. Determine whether to use the same rules file for data loads and dimension builds. name the dimension. “Using a Rules File to Perform Operations on Records. See “Defining Data Load Field Properties” on page 264.

use Essbase SQL Interface. and connection to supported data sources. Connecting to the server is not necessary if you are creating the rules file on the client. you can select the substitution variable for the value you want to use ● Combining Data Load and Dimension Build Rules Files 257 . To open an SQL data source. or whether the rules file will be used for only for data loads or only for dimension builds. you can open data sources such as text files. you need to decide whether the rules file will be used for data loads and dimension builds. only dimensions Creating Rules Files To create a rules file: 1. see “Opening an SQL Database” in the Essbase Administration Services Online Help. put the editor in the correct mode. enabling you to see what needs to be changed. Once you create a rules file. installation. You can open Data Prep Editor with a new or existing rules file. you cannot separate it into two rules files. spreadsheet files. When you open a SQL data source. 2. Open the data source. In Data Prep Editor. ● To open text files and spreadsheet files. and SQL data sources. Use separate rules files for data load and dimension build under any of the following circumstances: ● ● ● ● To build an outline from scratch To perform different field operations during the data load and dimension build To re-use the data load or dimension build rules file separately To use data sources that contain no data values. Use the same rules file for both data load and dimension build if you plan to load the data source and build new dimensions at the same time. 3. You can define a substitution variable for the data source name (DSN). Open Data Prep Editor. To open SQL data sources. If you are creating the rules file on the Essbase Server. The Essbase SQL Interface Guide provides information on supported environments. Similarly. See “Creating a Rules File” or “Opening an Existing Rules File” in the Essbase Administration Services Online Help. see “Opening a Data File” in the Essbase Administration Services Online Help. connect to the server. See “About Data Prep Editor” in the Essbase Administration Services Online Help. Contact your Essbase administrator for more information. you cannot merge two rules files into one file.Combining Data Load and Dimension Build Rules Files Before you start building a rules file. Data Prep Editor displays the data source. After you open Data Prep Editor.

numbered from 0 through 127. map the fields to the dimensions. the rules fields default to the SQL data source column names. When a data load or dimension build is performed. “Working with Attributes. the substitution variable value that Essbase Server finds at that time is used. for example. Before performing the data load or dimension build. you must name it in the rules file. tab. space. See “Changing Field Names” on page 276. a rules file expects fields to be separated by tabs.as the DSN.” ➤ To name a new dimension. Usually. skip this section. or custom value. If you are creating an attribute dimension. See “Using Substitution Variables” on page 110. Members. Selecting a Build Method If you are not performing a dimension build. If you are creating a dimension. ➤ To set file delimiters. see “Setting File Delimiters” in the Essbase Administration Services Online Help. fixed-width column. 258 Creating Rules Files . Note: You do not need to set file delimiters for SQL data. You can set the file delimiter expected to be a comma. you must set the value for Payroll_detail to the data source name you want to use. skip this section. For example. you can create a substitution variable named Payroll_detail and create a rules file that specifies Payroll_detail as the substitution variable for the data source name. and Aliases” on page 1078. Setting File Delimiters A file delimiter is the character (or characters) used to separate fields in the data source. If the names are not the same as the Essbase dimension names. an Oracle or IBM DB2 database. Naming New Dimensions If you are not creating a dimension in the rules file. See “Naming Restrictions for Dimensions. Note: When you open an SQL data source. setting the file delimiters is the first thing you do after opening a data source. the base dimension must be a sparse dimension already defined in the outline or the rules file. See Chapter 10. By default. see “Creating a Dimension Using a Rules File” in the Essbase Administration Services Online Help. Acceptable custom values are characters in the standard ASCII character set.

For information about each build method.If you are building a new dimension or adding members to an existing dimension. Specify a build method for each dimension that you are creating or modifying. Some changes affect all members of the selected dimension. skip this section. ➤ To set member properties. see “Setting Dimension Properties” in the Essbase Administration Services Online Help. or build method. or to remove the formula or UDA In Administration Services Console. see “Choosing a Build Method” in the Essbase Administration Services Online Help. see Table 23 on page 295. Using Data Prep Editor to Set Dimension and Member Properties If you are not performing a dimension build. If you are performing a dimension build. to use. see “Setting Member Properties” in the Essbase Administration Services Online Help. skip this section. Using the Data Source to Work With Member Properties You can modify the properties of new and existing members during a dimension build by: ● ● Including member properties in a field in the data source Leaving the data source field empty to reset the property to the default value. you must tell Essbase what algorithm. You can set or change member and dimension properties using the Data Prep Editor or change the member properties in the data source. and some affect all dimensions in the rules file. ➤ To set dimension properties. ➤ To select a build method. Setting and Changing Member and Dimension Properties If you are not performing a dimension build. the following dimension build options control whether the value in the data source property field is applied to the associated member: ● ● ● Allow property changes Allow formula changes Allow UDA changes Setting and Changing Member and Dimension Properties 259 . you can set or change the properties of the members and dimensions in the outline. some affect only the selected dimension.

) Table 20 Member Property Codes Description Express as a percentage of the current total in a consolidation Multiply by the current total in a consolidation Add to the current total in a consolidation Subtract from the current total in a consolidation Divide by the current total in a consolidation Exclude from the consolidation Exclude from all consolidations in all dimensions Treat as an average time balance item (applies to accounts dimensions only) Exclude data values of zero or #MISSING in the time balance (applies to accounts dimensions only) Treat as an expense item (applies to accounts dimensions only) Treat as a first time balance item (applies to accounts dimensions only) Treat as a last time balance item (applies to accounts dimensions only) Code % * + / ~ ^ A B E F L 260 Creating Rules Files .) Leave the field NULL or empty in the data source. Position the ~ property (which indicates that the member should not roll up into its parent) and the N property (which indicates that the member should not be shared) after the Margin % field. ● Table 20. (For a list of properties that can be assigned to aggregate storage outline members. For example: Margin% Margin% ~ N Sales 2. or resetting a property to its default value. select the Delete when the field is empty option for the Property field on the Dimension Build Properties tab of the Field Properties dialog box. Removing a formula. see “Rules File Differences for Aggregate Storage Dimension Builds” on page 961.In the data source. UDA. (This option is ignored if the appropriate dimension property is not selected in the Dimension Build dialog box. put the properties in the field directly following the field containing the members that the properties modify. Set the field type for the properties fields to Property. or attribute.” on page 260 lists all member codes used in the data source to assign properties to block storage outline members. “Member Property Codes. includes the following additional steps: ● In Administration Services Console. See “Setting Field Type Information” on page 261. For example. to specify that the Margin% member not roll up into its parent and not be shared: 1.

➤ To set field type information. see “Setting Field Types” in the Essbase Administration Services Online Help. The field type to choose depends on the data source and the build method (see “Understanding Build Methods” on page 295). In a dimension build. See these topics: ● ● “List of Field Types and Valid Build Methods” on page 262 “Rules for Assigning Field Types” on page 263 Setting Field Type Information 261 . ● Dimension The dimension to which the members of that column belong.Code M N O S T V X Z Description Exclude data values of #MISSING from the time balance (applies to accounts dimensions only) Never allow data sharing Tag as label only (store no data) Set member as stored member (non-Dynamic Calc and not label only) Require a two-pass calculation (applies to accounts dimensions only) Create as Dynamic Calc and Store Create as Dynamic Calc Exclude data values of zero from the time balance (applies to accounts dimensions only) Setting Field Type Information If you are not performing a dimension build. Fields can contain information about: ● ● ● Member names Member properties Attribute associations For Essbase to process this information. skip this section. each field in the data source is part of a column that describes a member in the outline. such as a generation field or an alias field. you must specify the following information when setting field types: ● Field type The type of field to expect in that column. ● Generation or level number The generation or level number of the members of that column.

See Table 20. “Member Property Codes. Valid Build Methods Generation. the name of the parent member of the attribute member in the following field A member of the specified attribute dimension.” on page 260. The name of a member in the specified generation The name of a member with a shared member as a child The alias for the shared member The name of a member in a level The name of a member with a shared member as a child The alias for the shared member The name of a parent Parent-child reference Level references Generation references Currency category UDA Attribute parent The name of a specific attribute dimension Generation Duplicate generation Duplicate generation alias Level Duplicate level Duplicate level alias Parent 262 Creating Rules Files .List of Field Types and Valid Build Methods Table 21 Field Types and Valid Build Methods What the Field Contains An alias Note: The alias value will not be assigned to the new member if Member update dimension build is set to Remove unspecified and the data source for a new member contains the alias value of a removed member. level. and parent-child references See “Rules for Assigning Field Types” on page 263 Field Type* Alias Property A member property. This member is associated with a specified generation or level of the selected base dimension. Formula Currency name A formula A currency name (block storage outlines only) A currency category (block storage outlines only) A UDA In an attribute dimension.

PRODUCT ● ● ● ● ● The level number must correspond to the level of the member in the outline for which the field provides values. For example: GEN2. Group GEN fields sequentially within a dimension. and specify the level number of the associated base dimension member.POPULATION shows that the values in the field are associated with the second level of the Population dimension.PRODUCT shows that the values in the field are level 3 members of the Product dimension. GEN numbers must form a contiguous range. “Creating and Working With Duplicate Member Outlines”. if GEN 3 and GEN 5 exist. and specify the generation number of the associated base dimension member. Put the fields for each roll-up in sequential order.PRODUCT OUNCES3.PRODUCT ● ● ● ● Put attribute association fields after the base field with which they are associated. depending on the build method. are not related to duplicate member names described in Chapter 8. For example: GEN2. For example.PRODUCT shows that the values in the field are third generation members of the Product dimension.PRODUCT GEN3. enter 0 (zero) in the Number text box. Put attribute association fields after the base field with which they are associated. the first member of the specified generation must exist in the outline. For example.PRODUCT OUNCES3. Put DUPGEN fields immediately after GEN fields. Rules for Assigning Field Types Table 22 lists the rules for selecting valid field types. Parent-child If field type is parent or child. the 3 in GEN3.PRODUCT GEN4. For example: LEVEL3. Level ● ● ● Put DUPLEVEL fields immediately after LEVEL fields. you must also define GEN 4.PRODUCT GEN3.Field Type* Child *Field What the Field Contains The name of a child Valid Build Methods types whose names begin with duplicate (such as duplicate generation and duplicate level alias). The 2 in ALIAS2. Use a single record to describe the primary and secondary roll-ups. Essbase rejects the record unless you select the Allow Moves member property. Put DUPGENALIAS fields immediately after DUPGEN fields.POPULATION shows that the values in the field are associated with the second generation member of the Population dimension. Each record must contain a level 0 member. Put DUPLEVELALIAS fields immediately after the DUPLEVEL fields. the 3 in LEVEL3. Group level fields sequentially within a dimension. Table 22 Rules for Assigning Field Types Based on Build Method Rules for Assigning Field Types ● ● Build Method Generation If GEN numbers do not start at 2.PRODUCT The generation number must correspond to the generation of the member in the outline for which the field provides values. See “Setting Member Properties” in the Essbase Administration Services Online Help. The 2 in ALIAS2. Setting Field Type Information 263 . For example. If a level 0 member is repeated on a new record with a different parent.PRODUCT LEVEL2.

the 3 in OUNCES3.Jan.Market.Jan.Sales Actual. Other field characteristics may also apply."New York". ➤ To move fields. see “Moving Fields” in the Essbase Administration Services Online Help.42 City.Actual. See “Moving Fields” on page 274. ● Level and generation references: The data source contains multiple fields within the duplicate member dimension to uniquely identify duplicate members. ❍ Use the level reference method when fields within a dimension are organized bottomup in the data source. For duplicate member outlines. gen3.Market."New York".PRODUCT shows that the values in the field are the members of the Ounces attribute dimension that are associated with the third generation member of the Product dimension in the same source data record. or dimension reference) that Essbase uses to map the field. you define operations to be performed after the data source has been read: ● Whether to sort members after Essbase has processed and added all members from the data source Whether to add the members to the existing outline or to remove any unspecified members from the outline Removing unspecified members is available only with the generation reference. you must specify the method (level reference. or as a data field or ignored field."100-10". *data* State. Use the generation reference method when fields within a dimension are organized topdown in the data source.Build Method Attribute dimension name Rules for Assigning Field Types The generation or level number must correspond to the generation or level of the associated base member in the outline. Scenario. generation reference. skip this section. Defining Data Load Field Properties You must map each rules file field to the corresponding outline member. Year. Product."100-20". move the fields to the required locations.82 ❍ 264 Creating Rules Files . For example: gen2. If necessary.Sales. level reference. Setting Dimension Build Operational Instructions If you are not performing a dimension build. Measures. For example. ● Note: Outlines are invalid if removing members results in level 0 Dynamic Calc members without formulas. Within the rules file. and parent-child reference build methods.

Saving. “Using a Rules File to Perform Operations on Records. ● Does each record in the data source contain only one member from each dimension? Performing Operations on Records. a member name such as Other can be meaningful in different dimensions—you can use the dimension reference method.” Validating.Jan. When you set a field to use the dimension reference method. Fields. When the dimension reference method is specified for a field. and Data A rules file enables you to perform operations on records. and Printing Rules files are validated to make sure that the members and dimensions in the rules file map to the outline.37 ● Dimension reference: If an outline contains a duplicate member name in different dimensions—for example. ➤ To specify generation. Fields.State.Sales. see: Rules File Type Data Load Dimension Build Information Location “Requirements for Valid Data Load Rules Files” on page 265 “Requirements for Valid Dimension Build Rules Files” on page 266 ➤ To save a rules file.Texas. fields. see “Mapping Field Names” in the Essbase Administration Services Online Help. and Data 265 . If the rules file is correct. you can perform a data load or dimension build. See Chapter 17.” ● Is the rules file associated with the correct outline? See “Validating a Rules File” in the Essbase Administration Services Online Help. See Chapter 18. Fields. level.” If the rules file is not valid. and data values before loading them into the database without changing the data source.Actual. see “Validating a Rules File” in the Essbase Administration Services Online Help."100-10". see “Saving a Rules File” in the Essbase Administration Services Online Help. all of the following questions must be answered “yes. or dimension references for data loads. “Performing and Debugging Data Loads or Dimension Builds. Validation cannot ensure that the data source loads properly. Requirements for Valid Data Load Rules Files For a data load rules file to validate. and Data. Essbase checks to ensure members in the field belong to the dimension specified for the field. you also identify the dimension to which members in that field belong. Performing Operations on Records. ➤ To validate a rules file.

● Is the dimension name used in only a single field (for example. 266 Creating Rules Files . all of the following questions must be answered “yes.See “Items in a Data Source” on page 243. ● Does each record contain only one member from each dimension? See “Items in a Data Source” on page 243. ● Is the member that each data field maps to spelled correctly in the rules file? See “Changing Field Names” on page 276. ● ● Are all member and dimension names spelled correctly? Are all members surrounded by quotation marks if they contain numbers or file delimiters? See “Valid Member Fields” on page 244. ● Are there no extra delimiters in the data source? See “Extra Delimiters with a Rules File” on page 246. ● Is the member in the field name a valid member? See “Mapping Fields” on page 275. ● ● Are all member and dimension names spelled correctly? Are all members surrounded by quotation marks if they contain numbers or file delimiters? See “Valid Member Fields” on page 244. ● Are there no extra delimiters in the data source? See “Extra Delimiters with a Rules File” on page 246. ● Is only one field defined as a data field? See “Defining a Column as a Data Field” on page 278. Requirements for Valid Dimension Build Rules Files For a dimension build rules file to validate. not in a field name and the header)? You can map a single data value to only one set of members.” ● Is the rules file associated with the correct outline? See “Validating a Rules File” in the Essbase Administration Services Online Help. ● Is the UDA used for sign flipping in the associated outline? See “Flipping Field Signs” on page 280. ● Are the reference numbers sequential? See “Rules for Assigning Field Types” on page 263. ● Are the file delimiters correctly placed? See “Valid Delimiters” on page 246.

but not in both. according to your permissions. ● ● ● Does each child field have a parent field? Do all dimension names exist in the outline or the rules file? Are any dimensions specified in both the header record in the rules file and the header record in the data source? Dimensions can be specified in either the header in the rules file or the header in the data source. ➤ To print a rules file. You can also copy rules files across servers as part of application migration. Copying Rules Files You can copy rules files to applications and databases on any Essbase Server.● Are there no repeated generations? See “Rules for Assigning Field Types” on page 263. Validating. use a tool: Tool Administration Services MaxL ESSCMD Topic Copying a Rules File alter object COPYOBJECT Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Printing Rules Files You can print the entire contents and properties of a data load or dimension build rules file. See “Defining Header Records” on page 271. see “Printing Rules Files” in the Essbase Administration Services Online Help. Saving. ● Are all the fields in correct order? See “Rules for Assigning Field Types” on page 263. You can also specify properties and settings to print. and Printing 267 . ➤ To copy a rules file. ● Is each field type valid for the build method? See “List of Field Types and Valid Build Methods” on page 262.

268 Creating Rules Files .

............ Fields............. 278 This chapter describes how to edit a rules file to perform operations on records............ to load only 2003 Budget data from a data source................. 273 Performing Operations on Data.......... For example..........17 In This Chapter Using a Rules File to Perform Operations on Records....................... Selection criteria are string and number conditions that must be met by one or more fields within a record for Essbase to load the record.................... If you define selection criteria on more than one field............................ and Data Performing Operations on Records ...... If a field or fields in the record do not meet the selection criteria................... 269 Performing Operations on Fields......... Performing Operations on Records 269 ................... You can define one or more selection criteria. you can specify how Essbase combines the criteria..... “Understanding Data Loading and Dimension Building” and Chapter 16....... For example... Essbase does not load the record........................ familiarize yourself with the information in Chapter 15......... and data before loading the database.. you can reject certain records before they are loaded into the database.” Performing Operations on Records You can perform operations at the record level...... See “Combining Multiple Select and Reject Criteria” on page 270.... fields........ “Creating Rules Files...... create a selection criterion to load only records in which the first field is Budget and the second field is 2003................. This section contains the following topics: ● ● ● ● ● “Selecting Records” on page 269 “Rejecting Records” on page 270 “Combining Multiple Select and Reject Criteria” on page 270 “Setting the Records Displayed” on page 270 “Defining Header Records” on page 271 Selecting Records You can specify which records Essbase loads into the database or uses to build dimensions by setting selection criteria........... Before reading this chapter........

Rejecting Records You can specify which records Essbase ignores by setting rejection criteria. 270 Using a Rules File to Perform Operations on Records.➤ To select a record. When you specify the first record. Note: Essbase treats header records the same as data records when counting the records to skip. cause Essbase to reject the record. Essbase skips all preceding records. For example. the fields must match all of the criteria. Rejection criteria are string and number conditions that. the fields must match only one of the criteria. ➤ To reject a record. Essbase loads the record. ➤ To determine how to combine select and reject criteria on multiple fields. The global Boolean setting applies to all select or reject operations in the rules file. You can define one or more rejection criteria. Combining Multiple Select and Reject Criteria When you define select and reject criteria on multiple fields. and the first record. For example. and Data . see “Combining Selection and Rejection Criteria” in the Essbase Administration Services Online Help. Setting the Records Displayed You can specify the number of records. If no field in the record meets the rejection criteria. to reject Actual data from a data source and load only Budget data. If you select OR. create a rejection criterion to reject records in which the first field is Actual. Essbase does not display records 1 through 4. if you enter 5 as the starting record. Fields. the record is rejected. Note: If selection and rejection criteria apply to the same record (you define select and reject criteria on the same record). when met by one or more fields within a record. for data load and dimension build fields. If you select AND from the Boolean group. see “Rejecting Records” in the Essbase Administration Services Online Help. see “Selecting Records” in the Essbase Administration Services Online Help. you can specify how Essbase combines the rules across fields: whether the criteria are connected logically with AND or with OR. that Essbase displays in Data Prep Editor.

For example. Header information defined in the data source takes precedence over header information defined in the rules file. You can also specify the type of header information in each header record. Defining Header Records Data sources can contain: ● ● Data records.➤ To set the records displayed. because the data source format is specified in the data source header (not in the rules file). see “Setting the Records Displayed” in the Essbase Administration Services Online Help. point to the header records. Placing header information in the data source makes it possible to use the same rules file for multiple data sources with different formats. You must set header information to specify the month. As part of that information. ➤ To define a header in the data source. When you add one or more headers to the data source. The rules file tells Essbase to read the header information as a header record (not as a data record). which describe the contents of the data source and how to load values from the data source to the database Rules files contain records that translate the data of the data source to map it to the database. rules files can also contain header records. you must also specify in the rules files the location of the headers in the data source. the Sample Basic database has a dimension for Year. Performing Operations on Records 271 . see “Setting Headers in the Rules File” in the Essbase Administration Services Online Help. which contain member fields and data fields Header records. ➤ To define a header in the rules file. Header information set in a rules file is not used if the rules file also points to header records in the data source. ● Define header information in the data source and. Rules file headers are used only during data loading or dimension building. If several data sources arrive with monthly numbers from different regions. in the rules file. Data Source Headers You can dynamically build dimensions by adding header information to the top record of the data source and by specifying the location of the header record in the rules file. see “Setting Headers in the Data Source” in the Essbase Administration Services Online Help. and do not change the data source. the month itself might not be specified in the data sources. You can create a header record using one of the following methods: ● Define header information in the rules file.

After you set the header information in the data source. the field number cannot be greater than 9. which must be in capital letters: ● ● ● ● ● ● ● ● ● ● ● GEN. enclose each field definition in quotation marks (" "). you must specify the location of the header information in the rules file. CHILD PROPERTY ALIAS FORMULA CURNAME CURCAT UDA ATTRPARENT The name of an attribute dimension. and DUPGENALIAS LEVEL. and the dimension name into which to load the fields. See “Setting Field Type Information” on page 261. 272 Using a Rules File to Perform Operations on Records. such as CAFFEINATED Each field type that you set requires a field number. DUPLEVEL. When the field type is the name of an attribute dimension. DUPGEN. If a rules file refers to header information in a data source. and DUPLEVELALIAS PARENT. the field number. Essbase uses the information in the data source—rather than the information in the rules file— to determine field types and dimensions. and Data .The header record lists field definitions for each field. Valid Data Source Header Field Types Valid field types. The format of a header record is illustrated below: Figure 60 Header Record with Three Field Definitions If the file delimiter is a comma. The field definition includes the field type. Fields.

Ignoring Strings You can ignore any field in the data source that matches a string called a token. For example. Market. and Scenario. These special characters can be defined as tokens to be ignored. but they are not loaded into the Essbase database. Arranging Fields You can set the order of the fields in the rules file to be different from the order of the fields in the data source. not just in a particular column. Product. see “Ignoring Fields” in the Essbase Administration Services Online Help.Performing Operations on Fields You can perform operations at the field level. such as Salesperson. the fields are ignored everywhere they appear in the data source. the Sample Basic database has five standard dimensions: Year. you can tell Essbase to ignore the Salesperson field. This section contains the following topics: ● ● ● ● ● “Ignoring Fields” on page 273 “Ignoring Strings” on page 273 “Arranging Fields” on page 273 “Mapping Fields” on page 275 “Changing Field Names” on page 276 Ignoring Fields You can ignore all fields of a specified column of the data source. The data source is unchanged. ➤ To ignore all fields in a column. The fields still exist in the data source. This section contains the following topics: ● ● ● “Moving Fields” on page 274 “Joining Fields” on page 274 “Creating a Field by Joining Fields” on page 274 Performing Operations on Fields 273 . in a data source that is a computer generated report in text format. For example. Measures. ➤ To ignore all instances of a string. you can move a field to a new position in the record. If the data source has an extra field that is not a member of any dimension. When you ignore fields based on string values. For example. special ASCII characters might be used to create horizontal lines between pages or boxes around headings. see “Ignoring Fields Based on String Matches” in the Essbase Administration Services Online Help.

see “Joining Fields” in the Essbase Administration Services Online Help. Creating a field is useful if you need to concatenate fields of the data source to create a member. replace the empty cell with a delimiter. however. you can specify the first field in the data source to be the third field during the data load or dimension build . 1<tab>2<tab>3 1<tab>2<tab>(null) To prevent merging. move the fields to join into the order in which you want them joined. Before you join fields. moved fields may appear to merge.● ● ● ● “Copying Fields” on page 275 “Splitting Fields” on page 275 “Creating Additional Text Fields” on page 275 “Undoing Field Operations” on page 275 Moving Fields You can move fields to a different location using a rules file. For example. you must join the fields (100-10) before you load them into the Sample Basic database. Fields. For example. Before you join fields. if a data source has separate fields for product number (100) and product family (-10). if a data source has separate fields for product number (100) and product family (-10). as shown below. move the fields to join into the order in which you want them joined. Creating a Field by Joining Fields You can join two or more fields by placing the joined fields into a new field. ➤ To move fields. 274 Using a Rules File to Perform Operations on Records. If. and 100-10). If you move a field that contains empty cells and the moved field becomes the last field in the record. This procedure leaves the original fields intact. and Data . See “Moving Fields” in the Essbase Administration Services Online Help. See “Moving Fields” in the Essbase Administration Services Online Help. For example. -10. ➤ To join fields. you must join the fields (100-10) before loading them into the Sample Basic database. Joining Fields You can join multiple fields into one field. In some instances. you want to preserve the two existing fields in the data source. The data source now includes all three fields (100. see “Moving Fields” in the Essbase Administration Services Online Help. The new field is given the name of the first field in the join. you can create a field (100-10) using a join. the field may merge with the field to its left.

Mapping Fields This section applies to data load only. starting with the most recently performed operation. create using text. join. see “Creating a Field Using Joins” in the Essbase Administration Services Online Help. For example. the product number. see “Undoing Field Operations” in the Essbase Administration Services Online Help. See “Working with Multilevel Attribute Dimensions” on page 309. see “Creating a Field Using Text” in the Essbase Administration Services Online Help. ➤ To undo one or more field operations. split. is loaded. or create using join by using the Edit > Undo command. You might create a text field to insert text between fields that are to be joined. For example. Copying Fields You can create a copy of a field while leaving the original field intact. Creating Additional Text Fields You can create a text field between two existing fields. you can split “UPC” out of the field and ignore it. one containing 100 and one containing 10-1. ➤ To copy a field.➤ To create a field by joining existing fields. If you are performing a dimension build. Splitting Fields You can split a field into two fields. if a data source for the Sample Basic database has a field containing UPC100-10-1. if during a single dimension build. Undoing Field Operations You can undo the last field operation that you performed. Then only 100-10-1. select one field and then create a field using a join. For example. such as move. you want to define a multilevel attribute dimension and associate attributes with members of a base dimension. see “Splitting Fields” in the Essbase Administration Services Online Help. You can undo field operations even if you have performed other actions. Undoing field operations is sequential. ➤ To create a field and populate it with text. ➤ To split a field. if you have two fields. Performing Operations on Fields 275 . you must copy some of the fields. see “Creating a Field Using Joins” in the Essbase Administration Services Online Help. skip this section. you can insert a text field with a dash between the two fields and then join the three fields to create the 100-10-1 member of the Product dimension.

The data source is not changed. you do not have to map the column names. Note: When you open a SQL data source. see “Mapping Field Names” in the Essbase Administration Services Online Help.You use a rules file to map data source fields to Essbase member names during a data load. Rules files can translate fields of the data source so that the fields match member names each time the data source is loaded. If the SQL column names and the Essbase dimension names are the same. You can map fields in a data source directly to fields in the Essbase database during a data load by specifying which field in the data source maps to which member or member combination in the Essbase database. ➤ To map fields. and Data . Actual) of the database This section contains the following topics: ● ● ● ● ● ● “Replacing Text Strings” on page 276 “Replacing an Empty Field with Text” on page 277 “Changing the Case of Fields” on page 277 “Dropping Leading and Trailing Spaces” on page 277 “Converting Spaces to Underscores” on page 277 “Adding Prefixes or Suffixes to Field Values” on page 277 Replacing Text Strings You can replace text strings so that the fields map to Essbase member names during a data load or dimension build. Fields. you can have the rules file replace each NY with New York. For example. the fields default to the SQL data source column names. 276 Using a Rules File to Perform Operations on Records. if the data source abbreviates New York to NY. you must specify how the fields of the data source map to the dimensions and members of the database. The rules file: ● ● Maps member fields of the data source to dimensions and members of the database Maps data fields of the data source to member names or member combinations (such as Jan. The data source is not changed. This process does not change the data source. Changing Field Names To load a data source.

Changing the Case of Fields You can change the case of a field so the field maps to Essbase member names during a data load or dimension build. Converting Spaces to Underscores You can convert spaces in fields of the data source to underscores to make the field values match the member names of the database. By default. Replacing an Empty Field with Text You may want to replace empty fields in a column with text. Essbase drops leading and trailing spaces. A field value containing leading or trailing spaces does not map to a member name. see “Replacing Field Names” in the Essbase Administration Services Online Help.➤ To replace a text string. The data source is not changed. ➤ To change the case of values in a field. jan). see “Dropping Spaces Around Fields” in the Essbase Administration Services Online Help. For example. if empty fields in the column represent default values. if the data source capitalizes a field (for example. Performing Operations on Fields 277 . ➤ To change spaces to underscores. see “Replacing an Empty Field with Text” in the Essbase Administration Services Online Help. ➤ To replace an empty field with text. For example. you can add 2002 as the prefix to all member names in the Year dimension. For example. ➤ To drop spaces around a field. even if the name within the spaces is an exact match. you can have the rules file change the field to lower case. you can insert the default values or insert #MI to represent missing values. see “Changing Case of Fields” in the Essbase Administration Services Online Help. Dropping Leading and Trailing Spaces You can drop leading and trailing spaces from around fields of the data source. Adding Prefixes or Suffixes to Field Values You can add prefixes and suffixes to each field value of the data source. see “Converting Spaces to Underscores” in the Essbase Administration Services Online Help. JAN) that is in lower case in the database (for example.

Adding to and Subtracting from Existing Values This section is for data load only. For example. you must define the data column as a data field. By default. 278 Using a Rules File to Perform Operations on Records. You can use incoming data values to add to or subtract from existing database values. skip this section. skip this section. see “Defining a Column as a Data Field” in the Essbase Administration Services Online Help. and Data . If each record in the data source contains a column for every dimension and one data column. See “Contents of the Application Log” on page 727. ➤ To define a data field. see “Adding Prefixes and Suffixes” in the Essbase Administration Services Online Help. you can add them to create monthly values in the database. Texas 100-10 Jan Sales Actual Texas 100-20 Jan Sales Actual Texas 100-10 Jan Sales Actual Scenario 42 82 37 You can define only one field in a record as a data field.➤ To prefix or suffix values to a field. If you are performing a dimension build. Fields. Essbase overwrites the existing values of the database with the values of the data source. This section contains the following topics: ● ● ● ● ● “Defining a Column as a Data Field” on page 278 “Adding to and Subtracting from Existing Values” on page 278 “Clearing Existing Data Values” on page 279 “Scaling Data Values” on page 280 “Flipping Field Signs” on page 280 Defining a Column as a Data Field This section applies to data load only. skip this section. although Essbase lists the number of the last row committed in the application log. but you can determine how newly loaded data values affect existing data values. Product. Year. moving a field to a new position in the record. if you load weekly values. Measures. You can perform operations on the data in a field. Performing Operations on Data This section applies to data load only. If you are performing a dimension build. If you are performing a dimension build. Using this option makes it more difficult to recover if the database crashes while loading data. for example. as shown in the following example: Market.

skip this section. Essbase performs the following calculation: January Sales = Existing Value + Week 1 Sales + Week 2 Sales + Week 3 Sales + Week 4 Sales You can also clear data from fields that are not part of the data load. For example. however. For example. clear the database value for January Monthly Sales. You can clear existing data values from the database before you load new values. ➤ To clear existing values. Clearing Existing Data Values This section is for data load only. see “Adding to Data Values” in the Essbase Administration Services Online Help. If you are adding and subtracting data values. If there is an existing value. Essbase overwrites the existing values of the database with the new values of the data source. This setting causes Essbase to view the entire load as a single transaction and to commit the data only when the load is complete. make sure that the existing values are correct. See “Understanding Isolation Levels” on page 775. Performing Operations on Data 279 . see “Subtracting from Data Values” in the Essbase Administration Services Online Help. and March and you want to load only the March data. February. assume that the Sales figures for January are calculated by adding the values for each week in January: January Sales = Week 1 Sales + Week 2 Sales + Week 3 Sales + Week 4 Sales When you load Week 1 Sales. see “Clearing Existing Data Values” in the Essbase Administration Services Online Help. Before loading the first set of values into the database. make sure that there is no existing value. By default. if a data source contains data for January.To prevent difficult recoveries. Before adding or subtracting new values. Replacing All Data This section applies to loading data into an aggregate storage database only. If you are loading data into a block storage database or performing a dimension build. Essbase adds or subtracts the new data values to and from the existing values. clear the values using the steps that you use to clear data from a local database. ➤ To subtract from existing data values. ➤ To add to existing data values. skip this section. Note: If you are using transparent partitions. you can clear the January and February data. If you are performing a dimension build. set the Commit Row database transaction option to 0.

assume the real value of sales is $5. skip this section.6) by 100 to have the value display correctly in the Essbase database (as 5460). To replace all data. Sign flips are based on the UDAs of the outline. If the Essbase database tracks the real value. volatile data sets in which you need to track changes. Fields.6. static data sets that are never updated and relatively small. For example. This functionality is useful when working with data sets that are sufficiently small enough to reload completely. You can reverse or flip the value of a data field by flipping its sign. or when working with data that can be separated into relatively large. See “Creating UDAs” on page 148. you can specify that any record whose accounts member has a UDA of Expense change from a plus sign to a minus sign. ➤ To reverse a field sign. you need to multiply the value coming in from the Sales data source (54. Flipping Field Signs This section is for data load only. When loading data into the accounts dimension. ➤ To scale data values.In an aggregate storage database. see “Scaling Data Values” in the Essbase Administration Services Online Help. If the Sales data source tracks the values in hundreds.460. and replace the data with the contents of a specified data load buffer. the value is 54. If you are performing a dimension build. 280 Using a Rules File to Perform Operations on Records. see “Replacing Database or Incremental Data Slice Contents” on page 971 and “Replacing the Contents of an Aggregate Storage Database” in the Essbase Administration Services Online Help. and Data . skip this section. You can scale data values if the values of the data source are not in the same scale as the values of the database. Scaling Data Values This section is for data load only. Essbase can remove all of the data in the database or all of the data in each incremental data slice in a database. for example. see “Flipping Signs” in the Essbase Administration Services Online Help. If you are performing a dimension build.

..... make sure that you have the following items in place: ● ● ● An Essbase database A connection to the appropriate Essbase Server One or more valid data sources See “Data Sources” on page 242..................................................... You can then check the status of the background process to see when the load or build Prerequisites for Data Loads and Dimension Builds 281 ................................. 282 Tips for Loading Data and Building Dimensions ................................ You can load data without updating the outline.......................................................... 281 Performing Data Loads or Dimension Builds ... Before reading this chapter.............. 286 This chapter describes how to load data or members from one or more external data sources to an Essbase Server.................... you can execute the load or build in the background so that you can continue working during the load or build......................................” Prerequisites for Data Loads and Dimension Builds Before you start to load data or build dimensions..... ● A rules files.... familiarize yourself with the information in Chapter 15..................... ● If you are not using a rules file...18 In This Chapter Performing and Debugging Data Loads or Dimension Builds Prerequisites for Data Loads and Dimension Builds............... if you are using one See “Rules Files” on page 247....................................... Performing Data Loads or Dimension Builds When you use Administration Services to perform a data load or dimension build............. “Understanding Data Loading and Dimension Building” and Chapter 16............ a data source correctly formatted for free-form data loading See “Data Sources That Do Not Need a Rules File” on page 249.............. “Creating Rules Files..... or load data and build dimensions simultaneously.............. 283 Debugging Data Loads and Dimension Builds ....... update the outline without loading data.. 281 Stopping Data Loads or Dimension Builds .....

If you stop a data load that is adding to or subtracting from data values. Because Essbase reads the source file until all source data is read. Essbase displays the file name as partially loaded. the termination is immediate. See “Performing Deferred-Restructure Dimension Builds” on page 283. See “Performing a Data Load or Dimension Build” in the Essbase Administration Services Online Help.has completed. If you initiate a data load or dimension build from a client and terminate the data load or dimension build from the server. If you are using multiple data sources in a dimension build. if possible. Note: If you are loading data into a transparent partition. ➤ To load data or build dimensions. to reduce total processing time you can perform an deferred-restructure dimension build. use a tool: Tool Administration Services Topic Performing a Data Load or Dimension Build For data loading: import data For dimension building: import dimensions ESSCMD For data loading: IMPORT For dimension building: BUILDDIM Essbase Technical Reference Location Essbase Administration Services Online Help MaxL Essbase Technical Reference Stopping Data Loads or Dimension Builds You can stop a data load or dimension build before it completes. You should not stop a data load or dimension build unless you are very sure that stopping is necessary. If the process is terminated from the computer that initiated it. see “Recovering from an Essbase Server Crash” on page 288. this setting rolls the data load back to its previous state. follow the same steps as for loading data into a local database. If the data load is terminated. the amount of time depends on the size of the file and the amount of source data that Essbase has processed. 282 Performing and Debugging Data Loads or Dimension Builds . If a data load or dimension build process is terminated. use the Committed Isolation Level setting. See “Understanding Isolation Levels” on page 775. it could take some time before the client responds to the termination request. Note: If you are adding to or subtracting from data values during a data load to a block storage database.

Restructuring the database rebuilds the database. see “Optimizing Database Restructuring” on page 845. The following methods for performing deferred-restructure builds use different approaches to specifying the action: ● Administration Services enables you to list all data sources in a single dialog box. See “Performing a Data Load or Dimension Build” in the Essbase Administration Services Online Help.➤ To stop a data load or dimension build before it completes. which takes time. requires more disk space for its process. also known as incremental dimension builds. By default. ● MaxL enables you to include all of the data sources within a single import database statement. read multiple data sources for dimension builds and delay restructuring until all data sources have been processed. see “Aggregate Storage Database Restructuring” on page 999. Deferred-restructure dimension builds. a Deferred-restructure dimension build option is available. Selecting this option delays restructuring until all sources have been processed. use a tool: Tool Administration Services Topic Disconnecting User Sessions and Requests Location Essbase Administration Services Online Help Essbase Technical Reference MaxL alter system kill request Tips for Loading Data and Building Dimensions This section contains these topics: ● ● ● ● ● “Performing Deferred-Restructure Dimension Builds” on page 283 “Determining Where to Load Data” on page 284 “Dealing with Missing Fields in a Data Source” on page 285 “Loading a Subset of Records from a Data Source” on page 285 “Saving and Reusing Data Load Options” on page 286 Performing Deferred-Restructure Dimension Builds Skip this section if you are loading data only or are using a single data source for a dimension build. each time you make changes to an outline Essbase considers the type of change and restructures the database if needed. Tips for Loading Data and Building Dimensions 283 . For aggregate storage outlines. When the files listed are all dimension builds. For information about the types of changes and types of restructuring that can be required. and can cause file defragmentation. The outline is validated after each dimension build is processed. see the following topics: ● ● For block storage outlines.

to indicate a deferred-restructure dimension build is to be performed INCBUILDDIM for each data source. use a tool: Tool Administration Services Topic Aggregating Missing Values During Calculation SET AGGMISSG alter database SETDBSTATEITEM Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Essbase Technical Reference Calculation Script MaxL ESSCMD The methods in this table work only if the child values are empty (#MISSING). If you load data into a parent member. If you must load data into a parent member. To ensure a valid outline. To prevent overwriting. See “Consolidating #MISSING Values” on page 900. 284 Performing and Debugging Data Loads or Dimension Builds . ➤ To set the consolidation. See “import database” and “import dimension” in the MaxL section of the Essbase Technical Reference. be sure the last build verifies the outline. if needed ❍ ❍ In all cases.You can control whether outline validation is performed for each file. to indicate the data sources to be included in the dimension build ENDBUILDDIM. to trigger restructuring. Deferred-restructure dimension builds in Administration Services verify the outline after each data source is processed. If the children have data values. ● ESSCMD requires several commands: ❍ BEGINCBUILDDIM. make sure that Essbase knows not to consolidate #MISSING values from the children of the parent into the parent. the consolidation of the children’s data values can overwrite the parent data value. You must enable outline validation for the last file. Determining Where to Load Data Skip this section if you are building dimensions or working with an aggregate storage database. Note: MaxL and ESSCMD enable you to enforce or suppress outline verification for each file. when you calculate the database. the data sources are processed in the order in which they are listed. do not load data directly into a parent. the data values overwrite the data values of the parent. follow these guidelines: ● ● If possible.

Note: You cannot load data into Dynamic Calc. Qtr2. If data values are missing. and Qtr4. Dynamic Calc and Store. join the empty fields with the field next to them. load data into Qtr1. if Year is a Dynamic Calc member. Loading a Subset of Records from a Data Source You can load a subset of records in a data source during a data load or a dimension build. For information about data load differences for aggregate storage databases. See “Joining Fields” on page 274. values can be loaded only to level 0 cells. the data load processes incorrectly. For example. which are not Dynamic Calc members. because there is no value under Apr: Actual Ohio Sales Cola Jan Feb Mar Apr 10 15 20 To fix the file. Specifying #MISSING or #MI as a value in the data source removes the associated cell if it is present in the database. If a rules file has extra blank fields. 2 Set the rules file to ignore the column containing the record number. ➤ To load a subset of records: 1 Using a text editing tool. or attribute members. Dealing with Missing Fields in a Data Source Each record in the data source must have the same number of data value fields to perform a data load. Qtr3. you can load records 250 to 500 without loading the other records of the data source. In aggregate storage databases. Essbase uses the value that it used previously for that dimension or member field. Tips for Loading Data and Building Dimensions 285 . Note: If a dimension field or member field is missing. See “Missing Dimension or Member Fields” on page 291. For example. Instead. For example. number the records in the data source. See “Ignoring Fields” on page 273. see “Preparing Aggregate Storage Databases” on page 960. you cannot load data into it. the following file is invalid. insert #MISSING or #MI into the missing field: Actual Ohio Sales Cola Jan Feb Mar Apr 10 15 20 #MI See “Replacing an Empty Field with Text” on page 277.

you can modify any of the specifications. By default. after opening a data load options file. Debugging Data Loads and Dimension Builds If a data source does not correctly load into Essbase Server. For example. Note: You cannot reject more records than the error log can hold.3 Define a rejection criterion that rejects all records except those that you want to load. reject all records for which the ignored column is less than 250 or greater than 500. The saved files and their options are added to the list in the currently open Data Load dialog box. check that you are: ● ● Connected to the appropriate application and database Loading the correct data source If you still encounter problems. you can save the source and rules file options specified in the Data Load dialog box and reuse them later. see these topics: ● ● ● ● ● ● ● “Verifying That Essbase Server Is Available” on page 287 “Verifying That the Data Source Is Available” on page 287 “Checking Error Logs” on page 287 “Recovering from an Essbase Server Crash” on page 288 “Resolving Problems with Data Loaded Incorrectly” on page 289 “Creating Rejection Criteria for End of File Markers” on page 290 “Understanding How Essbase Processes a Rules File” on page 290 286 Performing and Debugging Data Loads or Dimension Builds . the file options are saved in the ARBORPATH directory on the client in an XML file that you name. Tip: You can use the data load options file as a template because. the limit is 1000.cfg file. you can open the file. You can change the limit by setting DATAERRORLIMIT in the essbase. See the Essbase Technical Reference. See the topic “Performing a Data Load or Dimension Build” in the Essbase Administration Services Online Help. Saving and Reusing Data Load Options If you perform data loads and dimension builds through Administration Services and you use the same data source files and rules files each time. When you want to use a file of saved options. By default. See “Rejecting Records” on page 270.

Essbase can load only data sources that are not locked by another user or application. password. Check that no one has moved or deleted the data source. Verifying That the Data Source Is Available If Essbase cannot open the data source that you want to load. Try connecting to the server from the client without using Essbase. ● The data source is in the specified location. Text files must have a .● “Understanding How Essbase Processes Missing or Invalid Fields During a Data Load” on page 291 When you correct the problems. is someone editing the data source).txt extension. Verifying That Essbase Server Is Available To help identify if the problem is with Essbase and not with the server or network. ● The client computer is connected to the server computer. See “Understanding and Viewing Dimension Build and Data Load Error Logs” on page 749. the error log can be a valuable debugging tool. Check whether: ● The server computer is running. If there is no error log. ● The data source has the correct file extension.rul extension. rules files must have a . See “Loading Dimension Build and Data Load Error Logs” on page 751. ● If you are using a SQL data source: ❍ The connection information (such as the user name. and database name) is correct You can connect to the SQL data source without using Essbase ❍ Checking Error Logs If a data load or dimension build fails. Check for misspellings. ● The data source name and the path name are correct. try to access the server without using Essbase. check whether: ● The data source is open (for example. check with your system administrator. Try connecting to the server without using Essbase. If you cannot. Check with your Essbase administrator. check whether: Debugging Data Loads and Dimension Builds 287 . ● Essbase Server is running. you can reload the records that did not load by reloading the error log.

clear the values that loaded and reload the previous data sources. See “Selecting Records” on page 269 and “Rejecting Records” on page 270. If so. Check whether: ● The rules file contains selection or rejection criteria that rejected every record in the data source. See “Requirements for Valid Data Load Rules Files” on page 265 and “Requirements for Valid Dimension Build Rules Files” on page 266.● The person running the data load set up an error log. ● The data source and Essbase Server are available. ● The rules file validates properly. The recovery procedures that you need to perform depend on the type of load you are performing and the Isolation Level database transaction setting (see “Understanding Isolation Levels” on page 775): ● If you are overwriting the values of the data source. Essbase creates an error log. By default. determine how much data Essbase loaded before the crash: 1. If the error log exists but is empty. If. 288 Performing and Debugging Data Loads or Dimension Builds . Compare the values of the data source with the values of the database. reload the data source. Essbase does not think that an error occurred during loading. See “Essbase Server and Application Logs” on page 724. for example. See “Recovering from an Essbase Server Crash” on page 288. you derive monthly sales figures by adding the sales figures for each week as they are loaded. See “Verifying That Essbase Server Is Available” on page 287 and “Verifying That the Data Source Is Available” on page 287 ● Essbase Server crashed during the data load. If you are adding to or subtracting from existing values in the data source and the Isolation Level setting is: ❍ ❍ ● Committed. 3. Essbase sends you a time-out error. clear the sales figures from the database and reload the sales figures for each week up to the current week. reload the data source when the server is running again. 2. Recovering from an Essbase Server Crash If the server crashes while you are loading data. If the values that you are adding to or subtracting from have not changed. when using a rules file. If the values that you are adding to or subtracting from have changed. you probably received a time-out error on the client. reload the data source when the server is running again. Uncommitted. ● The application log exists.

7 "200-20" 276. Jan Actual Texas "100-10" 51. See “Flipping Field Signs” on page 280. If so. In the following example data source. as it processes the data source.7 "100-20" 102. ● There are any blank fields in the data source. ● You scaled the incoming values incorrectly. Debugging Data Loads and Dimension Builds 289 . ● You cleared data combinations that you did not intend to clear. the data source may not load correctly. See “Understanding Implied Sharing” on page 142.0 Florida 96. but the data in the database is wrong. check the data source again to make sure that it contains the correct values. To replace a blank field with #MI or #MISSING using a rules file.0 Sales ● There are any implicitly shared members (when a parent and child share the same data value) of which you were unaware. see “Replacing an Empty Field with Text” on page 277. See “Adding to and Subtracting from Existing Values” on page 278. You must insert #MI or #MISSING into a data field that has no value. the new member name replaces the header record member for that dimension. ● The data source is formatted correctly. Essbase recognizes Florida to be a member of the Market dimension. This situation occurs if a parent has only one child or only one child rolls up into the parent.1 "200-10" 167.0 "200-20" 113. The values in the last four records are interpreted as Florida values instead of Texas values. ❍ ❍ All ranges are set up properly. See “Clearing Existing Data Values” on page 279. ● You selected or rejected any records that you did not intend to select or reject.Resolving Problems with Data Loaded Incorrectly If the data source loads without error. The data is clean. ● The sign is reversed (for example. For example. a minus sign instead of a plus sign) and whether you performed sign flips on any UDAs. ● You added incoming data to existing data instead of replacing incoming data with existing data.5 "100-20" 335. If a data source record inadvertently includes a member from a dimension for which there is a member named in the header record. Otherwise. Essbase recognizes member names and knows the dimensions they belong to. check whether: ● You loaded the correct data source. See “Selecting Records” on page 269 and “Rejecting Records” on page 270.

290 Performing and Debugging Data Loads or Dimension Builds . 2.” If using a spreadsheet. by running a report on it. “Developing Report Scripts” and Appendix E. ● All member and alias names are less than 79 characters long Note: You can check data by exporting it. This task may be difficult as the end of file marker may be composed of one or more special characters. If exporting or running reports. Reads header records specified in the data source. Validates the rules file against the associated outline.See “Scaling Data Values” on page 280. Creating Rejection Criteria for End of File Markers A SQL data source may have an end of file marker made up of special characters that cause a data load or dimension build to fail. Sets the file delimiters for all records. or by using a spreadsheet. Applies field operations to the data in the order that the operations are defined in the rules file. “Using ESSCMD. 4. 2. you can track down problems with dimension builds by understanding how Essbase initializes the rules file and processes the data source. See “Rejecting Records” in the Essbase Administration Services Online Help. Member names must be either unique or shared. See “Ignoring Fields Based on String Matches” in the Essbase Administration Services Online Help. Determine how to search for the end of file marker using the Essbase search command. 3. Define a rejection criterion that rejects the end of file marker. 3. Find the end of file marker in the SQL data source. Essbase performs the following steps to initialize a rules file: 1. define a rejection criterion to reject the problem record. see Essbase Spreadsheet Add-in for Excel User's Guide. Understanding How Essbase Processes a Rules File Sometimes. 1. To fix this problem. see Chapter 32. Adds new dimensions defined in the rules file to the outline. Validates the dimensions. Then Essbase performs the following operations on each record of the data source during a data load or dimension build: 1. 2. This process includes ensuring that the build method and field types are compatible and that each dimension name is unique.

Ignores fields set to be ignored during data load. d. k. applying all properties to field1 before proceeding to field2. Essbase skips the number of lines that you specified. e. Converts spaces to underscores. Scales data values. splits. b. l. see “Performing Operations on Fields” on page 273. Essbase performs selection or rejection criteria in the order that the criteria are defined in the rules file. j.Field operations include joins. and creating fields using text and joins. g. Drops leading and trailing spaces. otherwise. moves. 3. Flags the data field. Applies suffix and prefix operations. Adds members or member information. Essbase loads or rejects individual records of the data source based on the specified criteria. 4. To see the order in which field operations are defined in the rules file. Converts text to lowercase. Essbase applies field properties in the following order: a. If you chose to skip lines. Debugging Data Loads and Dimension Builds 291 . Applies field generations. Essbase applies all properties for each field. If there is no previous value. Essbase aborts the data load. Understanding How Essbase Processes Missing or Invalid Fields During a Data Load The following sections describe how Essbase processes invalid fields during a data load: ● ● ● “Missing Dimension or Member Fields” on page 291 “Unknown Member Fields” on page 292 “Invalid Data Fields” on page 292 Missing Dimension or Member Fields If a dimension or member field is missing. 6. Ignores fields set to be ignored during dimension build. Converts text to uppercase. Essbase uses the value that it used previously for that dimension or member field. 5. c. to the outline. Essbase proceeds to the first record. i. Performs all replaces in the order that they are defined in the rules file. f. Applies field names. or both. h.

If Ginger Ale were in the first record. however. Essbase continues to the next record. For example. the data load would stop. Essbase stops the data load when it 292 Performing and Debugging Data Loads or Dimension Builds . the data load stops. If there is no prior record. Root Beer. in the following file. Sales. For example. because the Market dimension (Ohio. you can add the new member to the database. If there is a prior record with a member name for the missing member field. Actual Ohio Cola "Root Beer" "Ginger Ale" "Cream Soda" 2 12 15 11 Note: If you are performing a dimension build. when Essbase encounters an invalid data field. in the previous example) is not specified. if you try to load the following file into the Sample Basic database. when you load the following file into the Sample Basic database. Essbase loads all fields read before the invalid field into the database. Unknown Member Fields If you are performing a data load and Essbase encounters an unknown member name. Jan.For example. Essbase rejects the record containing Ginger Ale because it is not a valid member name. including the records that have Root Beer and Diet Cola in the Product dimension. when you load the following file into the Sample Basic database. Jan Sales Actual Ohio Cola 25 "Root Beer" 50 "Diet Cola" 19 Essbase stops the data load if no prior record contains a value for the missing member field. For information on restarting the load. see “Loading Dimension Build and Data Load Error Logs” on page 751. See “Performing Data Loads or Dimension Builds” on page 281. Essbase maps the Ohio member field into the Market dimension for all records. Essbase rejects the entire record. For example. it stops the data load. Invalid Data Fields If you are performing a data load. the data load stops. and Cream Soda. Jan Sales Actual Cola "Root Beer" "Diet Cola" 25 50 19 For information on restarting the load. see “Loading Dimension Build and Data Load Error Logs” on page 751. Essbase loads the records containing Cola. resulting in a partial load of the data.

data value. Debugging Data Loads and Dimension Builds 293 . Essbase loads the Jan and Feb Sales records.encounters the 15. East Cola Sales Actual Jan Feb Mar Apr $10 $21 $15$16 For information on continuing the load. see “Loading Dimension Build and Data Load Error Logs” on page 751. but not the Mar and Apr Sales records.

294 Performing and Debugging Data Loads or Dimension Builds .

.................. Month..................... Year ● Create shared members that roll up into different generations Modify the properties of existing dimensions and members Level references The level number for each field............................... 301 Adding a List of New Members ............. Month Desired Operation Modify the properties of existing dimensions and members Field Type Information The generation number for each field.... 298 Using Parent-Child References .................................................................. or remove dimensions....................................................... and so forth........................................................... change.............. and aliases in the outline................................. 326 This chapter discusses how to set up rules files for dimension building........................................................................ Quarter................. 295 Using Generation References ...... members........................ the name of its Examples Year... The kind of build method that you select depends on the type of data in the data source...... Use the following guidelines to help you select the appropriate build method for the data source: Table 23 Build Method Guidelines Build Method* Generation references Type of Data in Each Record Top-down data Each record specifies the parent’s name.......................................................... the name of its parent.........................19 In This Chapter Understanding Advanced Dimension Building Concepts Understanding Build Methods ............................ 316 Building Duplicate Member Outlines .................................................. Bottom-up data Each record specifies the name of the member............. 302 Building Attribute Dimensions and Associating Attributes ................................ the child’s name................ Quarter.......... 296 Using Level References ... Understanding Build Methods The build method that you select determines the algorithm that Essbase uses to add........... 306 Building Shared Members by Using a Rules File........ ● Understanding Build Methods 295 ........................................ the children of that child.................

Generations are numbered top-down according to their position relative to the dimension. Each record begins with the most general information and progresses to the most specific information. A dimension is always generation 1. A list of new members Each data source lists new members. The name of the new member is at the end of the record. and so forth. Root Beer 14oz Bottle *Using a level references build. When using a top-down data source. The field number is 0. This restriction does not apply if you use other build methods. Feb. The numbers are called generation references. Essbase numbers members within a dimension according to the hierarchical position of the member within the dimension. depending on the organization of the source data The number for each field. in that order. A list of base dimension members and their attributes Examples Desired Operation Build Method* Field Type Information Cola. April Add all members as children of an existing parent (possibly a “dummy” parent) Add all members at the end of the dimension Add each new member to the dimension that contains similar members Add members to an attribute dimension and associate the added members with the appropriate members of the base dimension Add as child of the specified parent 800-10. or parent-child references. All members at the same branch in a dimension are called a generation. The number is either the generation or level number of the associated member of the base dimension or zero. including the generation references build method. use the generation references build method. Parent followed by its child Each record specifies the name of the parent and the name of the new child member.Type of Data in Each Record parent’s parent. 296 Understanding Advanced Dimension Building Concepts . 800-10. 800-20 Add as sibling at the lowest level Add as sibling to a member with a matching string Generation. 800-20 Cola 16oz Can. Essbase provides algorithms that determine where to add these members. the data source does not specify where in the outline the members belong. although they can specify other information as well. you cannot create an alias that has the same name as its member. specify the generation number and the field type of each field of the data source. Diet Cola ● Create shared members that roll up into different generations Share non-level 0 members Modify properties of existing dimensions and members Parent-child references Whether a field is parent or child. Using Generation References Top-down data sources are organized left to right from the highest level to the lowest level. ● ● Jan. level. relative to dimension 1. Mar. that is. In the rules file.

which are generation 3. The data source is used to build the Product dimension. Using Generation References 297 .For example. Product has a 100 member. Figure 61 Generations The top half of Figure 62 shows a top-down data source (GENREF. The bottom half of Figure 62 shows the rules file for the data source (GENREF.TXT). 100 has members. See “Setting Field Type Information” on page 261. To use the generation references build method. as illustrated in Figure 61. you can choose to process null values. Figure 62 Rules File for Generation Build Figure 63 shows the tree that Essbase builds from this data source and rules file: Figure 63 Generation References Dealing with Empty Fields When you use the generation references build method.RUL). specify the generation reference number in the rules file. which is generation 2. such as 100-10. also known as null fields. in the data source. the Product dimension in the Sample Basic database is generation 1. Null processing specifies what actions Essbase takes when it encounters empty fields. The rules file specifies the generation number for each field in the data source.

The definition begins with the most specific information about the member and provides progressively more general information. duplicate generation alias. each record defines a single member of a dimension. 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. as if the data source looked like the following example: GEN2. there is no field in the GEN2. duplicate generation. it promotes the GEN4 field (100-10a) to GEN3. it ignores the ALIAS2 field and promotes the GEN3 field (100-10) to GEN2 and the GEN4 field (100-10a) to GEN3.Products column: GEN2.Products 100-10a When Essbase reads the record.Products column: GEN2.Products GEN4.Products Missing secondary field: If the null occurs where Essbase expects a secondary field.Products 100 ALIAS2. In the following example.Products 100-10a When Essbase reads the record. currency category. UDA. property. formula. it ignores the ALIAS2 field and loads the other fields.Products 100-10a GEN4. and name of an attribute dimension.Products Missing field before secondary field: If a null occurs directly before a secondary field. (Secondary field types are alias.Products 100-10a GEN4. there is no field in the ALIAS2.) In the following example. and so forth. then its parent’s parent. Products column: GEN2. If null processing is enabled. A typical record specifies the name of the new member.Products Cola GEN3. there is no field in the GEN3. Products or the ALIAS2.Products GEN3. Using Level References In a bottom-up data source. Essbase ignores the secondary field.Products 100-10 GEN4.Products 100 ● GEN3.Products Cola GEN3.If null processing is not enabled. then the name of its parent.Products 100-10 ● ALIAS2. 298 Understanding Advanced Dimension Building Concepts .Products ALIAS2. currency name. as if the data source looked like the following example: GEN2. In the following example.Products 100-10 GEN4. attribute parent.Products 100 GEN3. Essbase rejects all records with null values and writes an error to the error log.Products 100-10a When Essbase reads the record. Essbase ignores the secondary null field and continues loading.

Figure 65 Rules File for Level Build For example. the lowest level members are sequenced left to right. The first column of the data source contains new members (600-10-11. to build the tree in Figure 66. Level 0 members are in the first field. the rules file uses the level reference build method to add members to the Product dimension of the Sample Basic database. you can use the following bottom-up data source: 100-10-12 100-10 100 100-20-12 100-20 100 In a level reference build. The rules file specifies the level number and the field type for each field of the data source (see “Setting Field Type Information” on page 261). in the outline in Figure 64. use Figure 65 to set up the data source (LEVEL.TXT) and the rules file (LEVEL. level 1 members are in the second field. The second column contains the parents of the new members (600-10 and 600-20). 600-20-10. For example. and 600-20-18). This organization is the opposite of how data is presented for generation references (top-down). In the following example.Levels are defined from a bottom-up hierarchical structure.RUL). Using Level References 299 . the lowest level members are at the bottoms of the branches of the Product dimension. and so on. and the third column contains parents of the parents (600). Figure 64 Generation and Level Numbers To build the outline in Figure 64.

duplicate level alias. it promotes the LEVEL1 field (100-10) to LEVEL0 and the LEVEL2 field (100) to LEVEL1. Products column: LEVEL0.Products 100 When Essbase reads the record. Essbase rejects all records with null values and writes an error to the error log. Essbase processes nulls in the following ways: ● Missing field: If a null occurs where Essbase expects a LEVEL field. Products column: LEVEL0. duplicate level. In the following example. currency category. currency name. (Secondary field options are alias.Products 100-10 ● LEVEL1. property. If null processing is not enabled.Products 100-10 LEVEL2.Figure 66 Levels Dealing with Empty Fields When you use the level references build method. attribute parent. UDA. formula. If null processing is enabled. Essbase ignores the secondary field. also know as null fields.Products 100 When Essbase reads the record. it ignores the ALIAS0 field and promotes the LEVEL1 field (100-10) to LEVEL0 and the LEVEL2 field (100) to LEVEL1. as if the data source looked like the following example: LEVEL0.Products 100 LEVEL2.Products Cola LEVEL1.Products ALIAS0.) In the following example. there is no field in the LEVEL0.Products Missing field before a secondary field: If a null occurs directly before a secondary field. as if the data source looked like the following example: LEVEL0. and a name of an attribute dimension. Essbase promotes the next LEVEL field to replace the missing field. in the data source. there is no field in the LEVEL0. you can choose to process null values.Products 100-10 LEVEL2.Products 100-10 ALIAS0. Null processing specifies what actions Essbase takes when it encounters empty fields.Products 100 LEVEL2.Products LEVEL1.Products 300 Understanding Advanced Dimension Building Concepts .Products Cola LEVEL1.

RUL) that specifies which column is the parent and which column is the child. the rules file specifies which column is the parent and which column is the child.● Missing secondary field: If a null occurs where Essbase expects a secondary field. Members in a database exist in a parent-child relationship to one another. in that order.TXT). In a parent-child build. the alias.Products 100-10a ALIAS0. The data source can include columns with other information (for example. In the following example.Products 100-10 LEVEL1. The bottom half of the figure shows the rules file (PARCHIL. in which each record specifies the name of a parent and the name of its child. Essbase ignores the secondary null field and continues loading.Products 100 LEVEL2. Additionally. Figure 67 Parents and Children A parent-child data source must contain at least two columns: a parent column and a child column. in that order. there is no field in the ALIAS0. For example. Using Parent-Child References Use the parent-child references build method when every record of the data source specifies the name of a new member and the name of the parent to which you want to add the new member. A record within a parentchild data source cannot specify more than one parent or more than one child. this example associates aliases with the child field. the top half of Figure 68 on page 301 shows a data source (PARCHIL. Products column: LEVEL0. and cannot reverse the order of the parent and child columns. Figure 68 Rules Files for Parent-Child Build Using Parent-Child References 301 . the attributes or the properties of the new member). Figure 67 shows part of the Product dimension with its parent and children relationships identified. it ignores the ALIAS0 field and loads the other fields.Products When Essbase reads the record.

Adding a List of New Members If a data source consists of a list of new members and does not specify the ancestors of the new members. Essbase provides the following build methods for this type of data source: ● Add each new member as a sibling of the existing member whose text most closely matches its own. Note: Essbase does not support concurrent attribute association with the Add as build methods. See “Adding Members to a Specified Parent” on page 304. Figure 69 Parents and Children Note: For duplicate member situations. See “Building Qualified Member Names Through the Rules file” on page 327. See “Adding Members as Siblings of the Lowest Level” on page 303. ● Add each new member as a sibling of the lowest-level existing member. Adding Members Based On String Matches You can add new members from a data source to an existing dimension by matching strings with existing members. See “Adding Members Based On String Matches” on page 302. 302 Understanding Advanced Dimension Building Concepts . it scans the outline for a member name with similar text. it may be necessary to move the new members into their correct positions using Outline Editor. After Essbase adds all new members to the outline. Essbase must decide where in the outline to add the new members.Figure 69 shows the tree that Essbase builds from this data source and rules file. See “Positioning Dimensions and Members” on page 120. the parent field must contain the qualified member name. ● Add all new members as children of a specified parent (generally a “dummy” parent). Essbase then adds the new member as a sibling of the member with the closest string match. When Essbase encounters a new member in a data source.

To add the example members to the database. 1 dash. The new members are similar to strings in the Product dimension in that they contain 3 digits. When Essbase encounters a new member in a data source. the data source in Figure 70 (SIBSTR.For example. Adding a List of New Members 303 . as shown in Figure 69) Fields 2 through 6 Product dimension Ignore the fields Select the “Add as sibling of matching string” build method “Ignoring Fields” on page 273 “Selecting a Build Method” on page 258 Figure 70 Rules File Fields Set to Add Members as Siblings with String Matches Figure 71 shows the tree that Essbase builds from this data source and rules file.TXT) contains two new members (100-11 and 200-22) to add to the Product dimension in the Sample Basic database. it scans the outline for the level 0 branch of members. Essbase adds the new member as a sibling of these members. Figure 71 Tree for Adding Members as Siblings with String Matches Adding Members as Siblings of the Lowest Level You can add new members from a data source as siblings of members that reside at the lowest level of a dimension—at the level 0 branch. set the following values in the rules file: Field Field 1 (Product) Value ● ● See “Setting Field Type Information” on page 261 Do not select a field type for the field Set the dimension for the field to Product (field 1 is displayed as Product. and 2 digits.

as shown in Figure 72) Fields 1.Note: If the outline contains more than one group of members at this level. set the following values in the rules file: Field Field 3 (Measures) Value ● ● See “Setting Field Type Information” on page 261 Do not select a field type for the field Set the dimension for the field to Measures (field 3 is displayed as Measures. 2. 5. the data source (SIBLOW. For example. Figure 72 Rules File Fields Set to Add Members as Siblings of the Lowest Level To add the example members dynamically to the database. Essbase adds the new member to the first group of members that it encounters. and 6 Measures dimension Ignore the fields Select the “Add as sibling of lowest level” build method “Ignoring Fields” on page 273 “Selecting a Build Method” on page 258 Figure 73 shows the tree that Essbase builds from this data source and rules file.TXT) and the rules file (SIBLOW. After Essbase adds all new members to the outline. 4.RUL) in Figure 72 contain new members (A100-10 and A100-99) to add to the Measures dimension of the Sample Basic database. Figure 73 Tree for Adding Members as Siblings of the Lowest Level Adding Members to a Specified Parent You can add all new members as children of a specified parent. generally a “dummy” parent. 304 Understanding Advanced Dimension Building Concepts . review the added members and move or delete them in Outline Editor.

Assume that you previously added a member called NewProducts under the Products dimension. as shown in Figure 74) Fields 2 through 6 Product dimension Ignore the fields Select the “Add as child of” build method “Ignoring Fields” on page 273 “Selecting a Build Method” on page 258 Enter NewProducts in the Add as Child of text box. Figure 74 Rules File Fields Set to Add Members as a Child of a Specified Parent To add the example members to the database under the NewProducts member. set the following values in the rules file: Field Field 1 (Product) Value ● ● See “Setting Field Type Information” on page 261 Do not select a field type for the field Set the dimension for the field to Product (field 1 is displayed as Product. For example. The parent must be part of the outline before you start the dimension build. Figure 75 Tree for Adding Members as a Child of a Specified Parent Adding a List of New Members 305 . Figure 75 shows the tree that Essbase builds from this data source and rules file. it adds the new member as a child of the parent that you define. the data source in Figure 74 (SIBPAR.When Essbase encounters a new member in the data source.TXT) contains two new members (600-54 and 780-22) for the Product dimension (field 1).

Use this approach if the base dimension does not exist and each source data record contains all attribute information for each member of the base dimension. You need only to define the attribute associations in the rules file. you must use one or more rules files to build attribute dimensions and to associate attributes with members of their base dimensions. and then associate the attribute members with members of the base dimension. You can use any of the following approaches to perform these operations: ● Build both the base and attribute dimensions and perform the associations all at once. you use a single rules file to build the base dimension and one or more attribute dimensions and to associate the each attribute with the appropriate member of the base dimension. Working with attributes involves the following operations: ● ● ● If the base dimension does not exist. Use this approach when you build numeric attribute dimensions that are multilevel or that have members that represent different-sized ranges. to add and delete members. Assuming that the base dimension is built in a separate step or that the base dimension already exists. Build the attribute dimension and perform the associations in one rules file. it can be the most convenient.Building Attribute Dimensions and Associating Attributes When a data source contains attribute information. You must associate members of the base dimension with members of the attribute dimension. Assuming that the base dimension is built in a separate step or that the base dimension already exists. Build the attribute dimension and then perform the associations using separate rules files. When you use an all-at-once approach. Build the attribute dimension. See “Associating Attributes” on page 307. you can build an attribute dimension and associate the attributes with the members of the base dimension in a single step. you can build an attribute dimension and associate the attributes with the members of the base dimension in separate steps. you must build it. Because this approach uses a single rules file. and to establish or change attribute associations. You must build the attribute dimension. You can use rules files to build attribute dimensions dynamically. ● ● The following sections describe how to build attribute dimensions: ● ● ● ● ● ● “Building Attribute Dimensions” on page 307 “Associating Attributes” on page 307 “Updating Attribute Associations” on page 308 “Working with Multilevel Attribute Dimensions” on page 309 “Working with Numeric Ranges” on page 311 “Reviewing the Rules for Building Attribute and Base Dimensions” on page 315 306 Understanding Advanced Dimension Building Concepts .

RUL file in Figure 76. and specify the base dimension name.Product specifies that the field contains members of the Ounces attribute dimension. the field definition Ounces3. Each member of this field is associated with the data field that is defined as the generation 3 member of the base dimension Product. When you define the rules file for building attribute dimensions. See “Setting Member Names in Attribute Dimensions” on page 163. You can build attribute dimensions in one of the following ways: ● The same way that you build standard dimensions. use the generation or level number of the associated member of the base dimension. See “Associating Attributes” on page 307. as shown in the ATTRPROD. Based on this field definition.Building Attribute Dimensions Before you build any attribute dimensions in a database. For example. the rules file requires an additional field. Define the field type for the attribute dimension member as the name of the attribute dimension. or date. define the fields as described in this section. See“Process for Data Loading and Dimension Building” on page 241. In the same source data record you can include additional columns for other attributes that you want to associate with the member of the base dimension. Boolean. You must position the field for the member of the base dimension before any of the fields for the members of the attribute dimension. Essbase associates the attribute 64 with the 500-10 member. you must define the attribute member name formats for the outline. Building Attribute Dimensions and Associating Attributes 307 . Note: If you are working with a multilevel attribute dimension or with an attribute dimension of the type numeric. ● At the same time as you associate attributes with members of the base dimension. See “Working with Multilevel Attribute Dimensions” on page 309. Essbase does not support concurrent attribute association with the Add as build methods. specify the base dimension and the name of the attribute dimension file. Associating Attributes Whether you build the attribute dimension and associate the attribute members with the members of the base dimension in one step or in separate steps. Every record of the source data must include at least two columns: one for the member of the base dimension and one for the attribute value of the base dimension member.

check “Allow association changes” for the base dimension. The member 64 is a new member of the Ounces attribute dimension. Figure 77 Associating Attributes Updating Attribute Associations You can also use the rules file shown in Figure 76 on page 308 to change attribute associations. In Data Prep Editor. you need only to define an additional field for each attribute that you want to associate with the member of the base dimension. and 500-20 are new members of the base dimension. The file in Figure 76 associates attributes as shown in the outline in Figure 77. In Data Prep Editor. When you are working with numeric ranges. in the Dimension Build Settings tab of the Dimension Build Settings dialog box. The members 500. See “Setting Member Properties” in the Essbase Administration Services Online Help. The Caffeinated3. See “Working with Numeric Ranges” on page 311. in the Dimension Build Settings tab of the Dimension Build Settings dialog box.Product field in the example in Figure 76 shows how to associate attributes from additional single-level attribute dimensions. See “Setting Member Properties” in the Essbase Administration Services Online Help. clear the Do not create members” option for the base dimension.Figure 76 Rules File for Associating Attributes You can have Essbase use the attribute columns to build the members of the attribute dimensions. 500-10. 308 Understanding Advanced Dimension Building Concepts . you may need to build attribute dimensions and perform associations in separate steps. Make sure that you allow association changes. Because the base dimension is already specified. Product.

When an attribute is part of a multilevel numeric. associated with a Product dimension you can have a Size attribute dimension with two levels. See “Building Qualified Member Names Through the Rules file” on page 327. number.Note: For duplicate member situations. and dimension name.) Leave the field empty or NULL in the data source. Boolean. the field to which the attribute is associated must contain the qualified member name. select "Delete when the field is empty" for the attribute field. ● Working with Multilevel Attribute Dimensions Multilevel. The level 0 members (attributes) are the actual sizes. you must make copies of all fields that comprise the levels of the attribute dimension. In the rules file. define the attribute dimension fields in the same way that you define standard dimensions. and date attribute dimensions can have duplicate level 0 members. 1. Essbase uses field1 and field2 to build the attribute dimension. (This option is ignored if “Allow association changes” is not selected. in field 1 and field 2. use the same process as for updating them. Level 1 categorizes sizes by men or by women. For a multilevel attribute dimension. ● Place the copied attribute dimension field or fields that define the association immediately to the right of the field for the members of the base dimension. For example. The position of the fields in the rules file is important. or date attribute dimension. Define the first set of attribute fields to build the attribute dimension. specify type (level or generation). place the attribute parent field immediately to the left of the field that is the child of the attribute parent. numeric. indicate the parent field for the attribute field by making a copy of the parent field and setting the copy of the parent field as the field type Attribute Parent. plus the following steps: ● In the Dimension Build Properties tab of the Field Properties dialog box. the source data must include columns for all generations or levels of the attribute dimension. This example uses the level references build method. Building Attribute Dimensions and Associating Attributes 309 . Removing Attribute Associations To remove attribute associations. Boolean. ● The following steps describe how to define the fields in the rules file to build a multilevel attribute dimension and associate its members with members of its base dimension. Define the second set of attribute fields to associate the attributes with the appropriate base dimension members. To ensure association with the correct attribute. In the rules file. You can have a member named 8 under Women and member named 8 under Men.

for example. Make a copy of the field containing the parent of the attribute field. a. Size0. a. you are defining the level 0 and level 1 fields for the Product dimension. Specify the base dimension. 4. To define the association. Figure 78 shows the fields of the rules file at this stage. Define the fields for building the base dimension. c. Move the new field immediately to the right of the field for the base dimension with which Essbase associates the attribute. Use the attribute dimension name as the field type and specify the generation or level number of the member of the base dimension with which Essbase associates the attribute. Product. c. ATTRPARENT0. for example. make a copy of the field that contains the level 0 attribute. In the current example. for example. Size. 310 Understanding Advanced Dimension Building Concepts . the rules file now contains the field definitions to build the attribute dimension Size and to associate the members of Size with the appropriate members of the base dimension Product. Product. b. Figure 78 Defining Multilevel Attribute Dimensions Before Adding the Association Fields 3. make a copy of field 1. In the current example. b. In the current example. Set the field type of the new field as Attribute Parent and specify the generation or level number of the base member with which you want Essbase to associate the attribute. As shown in Figure 79. move the new field to the right of the field Level0. make a copy of field 2.2. In the following example. for example. Specify the attribute dimension. Move the ATTRPARENT field immediately to the left of the attribute association field that you created in step 3.

For example. Building Attribute Dimensions and Associating Attributes 311 . you can define small ranges for towns and cities with smaller populations. larger ranges for mid-sized cities. For example. and Metropolitan Areas. you can use one rules file in a single dimension build operation to dynamically build attribute dimensions for numeric ranges and to associate the members of the base dimension with the ranges. In the following situations. Figure 80 Multilevel Attribute Dimension Working with Numeric Ranges In many cases. and ranges above 1. however.000 for cities with large populations. Essbase builds the Size attribute dimension and associates its members with the appropriate members of the base dimension.Figure 79 Source Data and Rules File for Building a Multilevel Attribute Dimension When you run a dimension build with the data shown in Figure 79. the Population attribute dimension can have level 1 members that categorize the population ranges as Towns.000. you must use two rules files: one to build the attribute dimension and one to associate the attributes with the appropriate members of the base dimension: ● When the range size is different for different members. Figure 80 shows the updated outline. Cities. ● When the ranges are members of a multilevel attribute dimension.

Note: In later builds. based on the numeric attribute value. specify the following information: ● ● The name of the attribute dimension and its associated base dimension. The source data must be in attribute sequence. or parent-child build method to build the attribute dimension. In the rules file. To use the generation method to build the outline in Figure 81. level. the source data must include a record for every attribute range.The Population attribute dimension shown in Figure 81 demonstrates both situations. Figure 81 Numeric Attribute Dimension with Different-Sized Ranges You must use one rules file to build the Population dimension and another rules file to associate the Population dimension members as attributes of members of the base dimension. See “Setting Field Type Information” on page 261. Population is a multilevel. numeric attribute dimension with level 0 members representing ranges of different sizes. Additionally. you cannot insert attribute members between existing members. Define the fields in a rules file as shown in Figure 82. in ascending order. Building Attribute Dimensions that Accommodate Ranges First. If ranges have different sizes. you must sequence the source data in ascending sequence. The fields for building the attribute dimension. Figure 82 shows how to associate aliases with attributes. 312 Understanding Advanced Dimension Building Concepts . create a rules file that uses the generation.

Population3.000. select “Place attribute members within a numeric range. in the Dimension Build Properties tab of the Field Properties dialog box. you need a rules file to associate the members of the base dimension with their attributes.707 is outside the ranges of the attribute dimension in Figure 81 on page 312. Boston. In Data Prep Editor.000.Figure 82 Rules File for Building a Numeric Attribute Dimension with Ranges Associating Base Dimension Members with Their Range Attributes After you build the numeric attribute dimension ranges. place the attribute members within a range. Define the rules file as shown in Figure 83. To allow for values in the source data that are outside the ranges in the attribute dimension. enter Building Attribute Dimensions and Associating Attributes 313 . Figure 83 Rules File for Associating Numeric Range Attributes When you define the association field (for example.” Note: Figure 83 includes a city.227. where the ranges extend only to 3. whose population of 3. The source data includes fields for the members of the base dimension and fields for the data values that Essbase uses to associate the appropriate Population attribute. Market).

If you rename a attribute dimension member from 500 to 600. you may invalidate existing attribute associations. In Data Prep Editor.” Essbase uses the start value and range size value to rebuild the attribute dimension. as needed. you can perform one of the following task: ❍ Rerun the dimension build procedure that associates the base members with the changed attribute dimension. Adding Members to the Base Dimension: You can use the same rules file to add new members to the base dimension and to associate the new members with their numeric range attributes simultaneously. In Data Prep Editor. To ensure that the associations are correct. such as 1000000. Caution! After you associate members of the base dimension with members of the attribute dimension. To ensure proper attribute association. click the Ranges button and specify the range size for the attribute dimension. rerun the dimension build procedure and associate the base members with the changed attribute dimensions. and 1000. if you manually insert new members into the attribute dimension or rename members of the attribute dimension. in the Dimension Build Properties tab in the Field Properties dialog box. Assuring the Validity of Associations To ensure the validity of attribute associations. 500. in the Dimension Building Properties tab on the Field Properties dialog box. ❍ ● Deleting Members from the Attribute Dimension: You can delete all members of an attribute dimension so you can rebuild the dimension with new data. the base dimension member with the value 556 now has an invalid association. in the Dimension Build Settings tab of the Dimension Build Settings dialog box.a range size. to ensure that associations are correct. you should make sure that associations between attributes and base members are correct. This base member is still associated with the attribute 1000 when it should be associated with the attribute 600. For example. A base dimension member with the value 556 is associated with the attribute 1000. if you manually insert new members or rename existing members in the attribute dimension. the associations of all base dimensions. you must be careful to select the correct dimension building options and to perform the builds in the proper sequence. 200. ● 314 Understanding Advanced Dimension Building Concepts . ● Adding or Changing Members of the Attribute Dimension: After you associate members of a base dimension with their numeric attribute ranges. rerunning the attribute association procedure correctly associates the member of the base dimension with the value 556 with the new attribute 600. Consider an example where numeric range attributes are defined as “Tops of ranges” and an attribute dimension contains members 100. you must select the “Allow association changes” option for the base dimension. Provide a value for the range size. Use Outline Editor to manually review and fix. Essbase uses the range size to add members to the attribute dimension above the existing highest member or below the existing lowest member. click the Ranges button and select “Delete all members of this attribute dimension. as needed. If you manually insert new members or rename existing members.

For example. Essbase adds two members to the attribute dimension.000 and the range size is 1000000. and associates the base member with the 5000000 attribute. Building Attribute Dimensions and Associating Attributes 315 . it creates members in the attribute dimension to accommodate the outof-range values. See “Setting Member Names in Attribute Dimensions” on page 163. in Figure 81 on page 312.If Essbase encounters a base dimension value that is greater than the highest attribute member by more than the range size or is lower than the lowest attribute member by more than the range size. Reviewing the Rules for Building Attribute and Base Dimensions The information in this section describes areas unique to defining and associating attributes through a dimension build.420. If the source data includes a record with the population 4. Essbase does not create aliases for the new members of the attribute dimension.” The highest value member of the Population attribute dimension is 3000000. Getting Ready ● Before running a dimension build. 4000000 and 5000000. Defining Fields in Rules Files Rules files that are used to build single-level attribute dimensions require fewer field types than rules files that build and associate members of multilevel attribute dimensions. Figure 84 Dynamically Adding Attribute Range Members When you add range members and base dimension members at the same time. the numeric range attributes are defined as “Tops of ranges. ● Defining new attribute dimensions in a rules file is different from defining new standard dimensions in a rules file. If you want aliases that describe the range values for the new members of the attribute dimension. you must add the aliases in a separate operation. you must define the attribute member name formats for the outline.

in the Dimension Building Properties tab of the Field Properties dialog box. to identify fields that are parent members for the attribute members being associated. it automatically adds the values as new members. Because the shared member stores a pointer to data contained in the real member. See “Setting Field Type Information” on page 261. Controlling Adding New Attribute Members When Essbase encounters attribute data values that are not members of the attribute dimension. Building Shared Members by Using a Rules File The data associated with a shared member comes from a real member with the same name as the shared member. the data load process does not affect them. Controlling Associations Association to Control Making changes to attribute associations Do This In Data Prep Editor. Use the new field type. select the “Do not create members” option for the attribute dimension. A dimension build uses the defined field to add new members to the attribute dimension. Enabling automatic association of base members with attributes that represent ranges of values In Data Prep Editor. Attribute Parent. 316 Understanding Advanced Dimension Building Concepts . select the “Allow association changes” option for the attribute dimension. click the Ranges button and define the size of the range. See “Associating Attributes” on page 307.● For single-level attribute dimensions. Essbase requires fields that define each generation or level in the attribute dimension and fields that define the associations. Note: Because attributes are defined only in the outline. See “Understanding Build Methods” on page 295. Concurrent attribute associations Use any build method except the “Add as build” methods. the data is shared between the members and is stored only one time. ● For multilevel attribute dimensions. See “Setting Member Properties” in the Essbase Administration Services Online Help. in the Dimension Build Settings tab of the Dimension Build Settings dialog box. do either of the following: In the Dimension Build Settings tab of the Dimension Build Settings dialog box. See “Working with Multilevel Attribute Dimensions” on page 309. define the field that contains the attribute values as the field to be associated with the members of the base dimension. See “Setting Member Properties” in the Essbase Administration Services Online Help. To prevent adding new members to attribute dimensions.

Creating shared members at different generations in the outline is easy in Outline Editor. 100-20 (Diet Cola) is shared by two parents (100 and Diet). However. but you can define it to roll up into even more parents. You must pick the build method and format the data source carefully. Diet Cola has two parents (100 and Diet). In the Sample Basic database. Both parents roll up into the same branch (the Product dimension).For example. creating shared members using dimension build is a little more difficult. The following sections describe how to build shared members in the outline by using a data source and a rules file. in the Sample Basic database. Note: You should not create an outline in which a shared member is located before the actual member with which it is associated. Diet Cola is shared by two members at generation 2 in the outline. as shown in the following figure: Building Shared Members by Using a Rules File 317 . Figure 85 Shared Members in the Sample Basic Database You can share members among as many parents as you want. and both parents are at generation 2. but it can be shared by a member at generation 3 and a member at generation 4 as shown in Figure 93 on page 321. Sharing Members at the Same Generation Members that are shared at the same generation roll up into the same branch. the 100-20 (Diet Cola) member rolls up into the 100 family and into the Diet family. In Figure 85. You can share members at multiple generations in the outline.

For example. 200 is the Root Beer family. Figure 87 Sample Generation Shared Member Rules File The data source and rules file illustrated in Figure 87 build the following tree: 318 Understanding Advanced Dimension Building Concepts . 300 is the Cream Soda family.TXT) and set up the rules file so that the fields look like the sample rules file (SHGENREF. Use the same GEN number as the primary member. and 400-20 members.RUL) shown in Figure 87. 300-20.Figure 86 Members Shared at the Same Generation This scenario is the simplest way to share members. and the -20 after the family name indicates a diet version of the soda. to create the Diet parent and share the 100-20. use the sample data source file (SHGENREF. You can share members at the same generation by using any of the build methods discussed in the following sections: ● ● ● “Using Generation References to Create Same Generation Shared Members” on page 318 “Using Level References to Create Same Generation Shared Members” on page 319 “Using Parent-Child References to Create Same Generation Shared Members” on page 320 Using Generation References to Create Same Generation Shared Members To create shared member parents at the same generation by using the generation references build method. 200-20. 100 is the Cola family. A duplicate generation is a generation with shared members for children. define the field type for the parent of the shared members as DUPGEN.

TXT) and set up the rules file so that the fields look like the sample rules file (SHLEV. While processing the data source.Figure 88 Sample Generation Shared Member Rules Tree Using Level References to Create Same Generation Shared Members To create shared members of the same generation by using the level references build method. Figure 89 Sample Level Shared Member Rules File The data source and rules file illustrated in Figure 89 build the following tree: Building Shared Members by Using a Rules File 319 . 200-20 (Diet Root Beer). first make sure that the primary and any secondary roll-ups are specified in one record. as long as the roll-ups are all in one record. 300-20 (Diet Cream Soda). Then enter the level number. To create a shared member of the same generation. to create the shared 100-20 (Diet Cola). and 400-20 (Fruit Soda) members in the Sample Basic database. Define the field type for the shared member as LEVEL. You can specify as many secondary roll-ups as you want. use the sample data source file (SHLEV.RUL) shown in Figure 89. set the level number of the secondary roll-up to have the same number of levels as the primary roll-up. For example. Essbase creates a parent at the specified level and inserts the shared members under it.

Figure 90 Sample Level Shared Member Rules Tree Using Parent-Child References to Create Same Generation Shared Members To create shared members of the same generation by using the parent-child references build method. Figure 91 Sample Parent-Child Shared Members Rules File The data source and rules file illustrated in Figure 91 build the following tree: Figure 92 Sample Parent-Child Shared Member Rules Tree 320 Understanding Advanced Dimension Building Concepts . When sharing is enabled. Make sure that Essbase is set up to allow sharing (in the Dimension Build Settings tab of the Dimension Build Settings dialog box. Essbase automatically creates duplicate members under a new parent as shared members. clear the “Do not share” option). define the PARENT and CHILD field types.

the shared members roll up into parents at generation 2 (Diet) and at generation 3 (TBC and Grandma's). Then enter the level number. You can specify as many secondary roll-ups as you want. Define the field type for the shared member as LEVEL. in Figure 93. For example. Figure 93 Members Shared at Different Generations To share members across parents at different generations in the outline. as long as the roll-ups are all in one record. For example. While processing the data source. 200-20. Essbase creates a parent at the specified level and inserts the shared members under it. use the sample data file and the rules file shown in Figure 94: Building Shared Members by Using a Rules File 321 . This outline assumes that TBC (The Beverage Company) buys some of its beverages from outside vendors: it buys 200-20 (Diet Root Beer) from a vendor named Grandma’s.Sharing Members at Different Generations Sometimes you want shared members to roll up into parents that are at different generations in the outline. use one of these build methods: ● ● “Using Level References to Create Different Generation Shared Members” on page 321 “Using Parent-Child References to Create Different Generation Shared Members” on page 322 Using Level References to Create Different Generation Shared Members To create shared members of different generations by using the level references build method. and 300-20 with a parent called Diet and two parents called TBC and Grandma’s. first make sure that both primary and secondary roll-ups are specified in one record. to share the products 100-20.

and 300 are shared by TBC and Grandma’s. Make sure that Essbase is set up to allow sharing (in the Dimension Build Settings tab of the Dimension Build Settings dialog box. When sharing is enabled. in Figure 96. 322 Understanding Advanced Dimension Building Concepts . This outline assumes that TBC buys some of its product lines from outside vendors: it buys 200 (all root beer) from a vendor named Grandma’s. Sharing Non-Level 0 Members Sometimes you want to share non-level 0 members (members that are not at the lowest generation). For example. define the PARENT and CHILD field types. 100. Figure 95 Parent-Child References Sample Rules File for Shared Members at Different Generations The data source and rules file illustrated in Figure 95 build the tree illustrated in Figure 93. clear the “Do not share” option). 200. Essbase automatically creates duplicate members under a new parent as shared members. Using Parent-Child References to Create Different Generation Shared Members To create shared members at the different generation using the parent-child references build method.Figure 94 Level References Sample Rules File for Shared Members at Different Generations The data source and rules file illustrated in Figure 94 build the tree illustrated in Figure 93.

and 300 with a parent called Soda and two parents called TBC and Grandma’s. The DUPLEVEL field is always created as a child of the dimension (at generation 2). and Grandma’s members exist in the outline. While processing the data source. unless the named level field already exists in the outline. Building Shared Members by Using a Rules File 323 . set the level number of the secondary roll-up to have the same number of levels as the primary roll-up. use the sample data file and rules file shown in Figure 97. This data source and rules file work only if the Diet. to share the product lines 100. 200. use one of these build methods: ● ● “Using Level References to Create Non-Level 0 Shared Members” on page 323 “Using Parent-Child References to Create Non-Level 0 Shared Members” on page 324 Using Level References to Create Non-Level 0 Shared Members To create shared non-level 0 members by using the level references build method. Then enter the level number. TBC. You can specify as many secondary roll-ups as you want. as long as the roll-ups are all in one record. Essbase creates a parent at the specified level and inserts the shared members under it. Figure 97 Level References Sample Rules File for Non-Level 0 Shared Members at Different Generations The data source and rules file illustrated in Figure 97 build the tree illustrated in Figure 96. Define the field type for the parent of the shared member as duplicate level (DUPLEVEL). To create a shared member of the same generation.Figure 96 Non-Level 0 Members Shared at Different Generations To share non-level 0 members. For example. first make sure that both primary and secondary roll-ups are specified in one record.

For example. It does not have any restrictions on the position of the shared members in the outline. Figure 98 Parent-Child Sample Rules File for Non-Level 0 Shared Members The data source and rules file illustrated in Figure 98 build the tree illustrated in Figure 96.Using Parent-Child References to Create Non-Level 0 Shared Members The parent-child references build method is the most versatile for creating shared members. Essbase automatically creates duplicate members under a new parent as shared members. Use the level references build method. To create shared non-level 0 members at the same generation using the parent-child references build method. When sharing is enabled. Building Multiple Roll-Ups by Using Level References To enable the retrieval of totals from multiple perspectives. Make sure that Essbase is set up to allow sharing (clear Do Not Share in the Dimension Build Settings tab of the Dimension Build Settings dialog box). you can also put shared members at different levels in the outline. unlike the generation references and level references build methods.RUL) shown in Figure 99 specifies build instructions for levels in the Product dimension: Figure 99 Rules File Fields Set to Build Multiple Roll-Ups Using Level References 324 Understanding Advanced Dimension Building Concepts . define the PARENT and CHILD field types. the rules file (LEVELMUL.

see “Analyzing Database Design” on page 75. Make sure that Essbase is set up to allow sharing (clear Do Not Share in the Dimension Build Settings tab of the Dimension Build Settings dialog box). the data for a dimension is in two or more data sources. For outline design guidelines. this second graphic shows the rules file after it has been scrolled to the right to show the extra members: Figure 100 Scrolled Window When you run the dimension build using the data in Figure 100. Essbase builds the following member tree: Figure 101 Multiple Roll-Ups This example enables analysis not only by package type (Cans). consider creating a multilevel attribute dimension for package type with Steel and Aluminum as level 0 members under Can. load the first data source using the most appropriate build method and then load all other data sources using the parent-child references build method. Creating Shared Roll-Ups from Multiple Data Sources In many situations.Because the record is so long. For example. you can use an alternative outline design to enable retrieval of the same information. Because Product is a sparse dimension. If you are building dimensions from more than one data source and want to create multiple roll-ups. using the following Product data source: "Soft Drinks" "Soft Drinks" Cola "Root Beer" Cola "Root Beer" TBC Grandma’s Essbase builds the tree illustrated in Figure 102: Building Shared Members by Using a Rules File 325 . For example. but also by packaging material (comparing sales of aluminum cans and steel cans).

➤ To set dimension uniqueness during a dimension build. where the values are not shared.” The rules file enables you to set whether dimensions. In unique member outlines. and generations in a duplicate member outline are unique or can include duplicate members. 326 Understanding Advanced Dimension Building Concepts . See Chapter 8. “Creating and Working With Duplicate Member Outlines. only shared members can have the same name. In the rules file. see “Setting Dimension Properties” in the Essbase Administration Services Online Help. levels.Figure 102 Soft Drinks Tree Then load the second data source below to relate the products to the vendors using the parentchild build method. see “Setting Dimension Properties” in the Essbase Administration Services Online Help. Vendor Vendor TBC Grandma’s Essbase builds the tree illustrated in Figure 103: Figure 103 Shared Roll-Ups Tree Building Duplicate Member Outlines Duplicate member outlines contain multiple members with the same name. ➤ To set generation or level uniqueness during a dimension build. Make sure that Essbase is set up to allow sharing. generation or level uniqueness is set on the Generation/Level Names tab of the Dimension Properties dialog box. use qualified member names in the data source or use the rules file to construct qualified member names from fields in the data source. Uniquely Identifying Members Through the Rules File To ensure duplicate member outline hierarchies are built correctly.

join.[ 4 Kansas 5 ]. the reference method and arrangement of fields provide enough information for Essbase to map data source columns to members in a duplicate member outline. you can assign population attributes to existing city members in a duplicate member dimension. create one field each for the following text elements: ❍ ❍ ❍ ❍ [ ]. and to create brackets and periods.[ ] ● Using Move operations. You can use move. You want to associate with the cities the population attributes in the last column of this four-column data source: Central "Kansas City" Kansas 706010 Central "Kansas City" Missouri 1070052 East "New York" "New York" 8104079 Editing this source through the rules file to build qualified names and sequence the field columns properly involves the following edits: ● Using Create using text operations. For duplicate member situations the parent field must contain the qualified member name. To ensure attributes are associated with the correct members. The dimension build rules file for duplicate member is similar to the rules file for unique member outlines.[ 6 Kansas City 7 ] 8 706010 Building Duplicate Member Outlines 327 . and create operations to build the qualified name. For example. the cities in the following data source already exist in the outline. move. Parent-child dimension builds on duplicate member outlines do not support attribute association. For example. using a generation-reference or levelreference rules file. Association of attributes to existing members in the outline: For duplicate member situations the field to which the attribute is associated must contain the qualified member name. To create qualified member names.[ ]. use the Field Edits tab of the Data Source Properties dialog box to copy. move the fields to the following sequence: 1 [ 2 Central 3 ].In most situations. you can use the rules file to edit and join multiple fields resulting in qualified member names. one for parent and one for child. The following operations require more complex rules files for qualified member names: ● Parent-child dimension builds: The parent-child build method requires two fields. ● Building Qualified Member Names Through the Rules file If the data source does not contain the qualified member name as a field. and join fields. perform the associations in a separate pass.

● Using Join operations. join together fields 1 2 3 4 5 6 7 to create the single field to which the attributes are to be associated: [Central].[Kansas City] 706010 328 Understanding Advanced Dimension Building Concepts .[Kansas City].[Kansas]. The rules file now shows two fields: 1 2 [Central].[Kansas].

Part IV Calculating Data In Calculating Data: ● ● ● ● ● ● ● ● ● ● ● Calculating Essbase Databases Developing Formulas Reviewing Examples of Formulas Defining Calculation Order Understanding Intelligent Calculation Dynamically Calculating Data Values Calculating Time Series Data Developing Calculation Scripts Reviewing Examples of Calculation Scripts Developing Custom-Defined Calculation Macros Developing Custom-Defined Calculation Functions Calculating Data 329 .

330 Calculating Data .

................................................... due to operating system math library differences............................................ 331 About Multidimensional Calculation Concepts.. You calculate the variance between budget and actual values for each product in each region.................................. 336 Calculating Databases........................................ 337 Security Considerations ............................................................................................................ For information about calculating aggregate storage databases see “Calculating Aggregate Storage Databases” on page 973...... ● ● Small differences in the precision of cell values may occur between calculations run on different platforms....................................20 In This Chapter Calculating Essbase Databases About Database Calculation ........................................................................ You calculate the total sales for each product........................................ 337 This chapter explains the basic concept of multidimensional database calculation and provides information about how to calculate an Essbase block storage database....... About Database Calculation A database contains two types of values: ● ● Values that you enter........................................................................ You calculate what happens to total profit if you increase the price of one product in one region by 5%....... 336 Canceling Calculations ........... You enter the budget and actual values for the cost of goods sold for several products in several regions......... The database contains regional sales figures and prices for all products............................................ About Database Calculation 331 .............. 337 Parallel and Serial Calculation.................................................................................. which are called input data Values that are calculated from input data For example: ● You enter regional sales figures for a variety of products.............. 333 Setting the Default Calculation ............

Essbase bases the calculation of the database on the relationships between members in the database outline and on any formulas that are associated with members in the outline.). South.Note: Most computers represent numbers in binary. See IEEE Standard 754 for Floating-Point Representation (IEEE. 0. Because binary computers cannot hold an infinite number of bits after a decimal point. The values for New York.10) are the only real numbers that can be represented exactly. Massachusetts. and New Hampshire are added to calculate the value for East. cannot be expressed as a decimal with a terminating point. The Variance and Variance % members are calculated by using the formulas attached to them. Outline Calculation Outline calculation is the simplest method of calculation. Figure 104 Relationship Between Members of the Market Dimension Figure 105 shows the Scenario dimension from the Sample Basic database.. West.. 1985). You 332 Calculating Essbase Databases . Figure 105 Calculation of Variance and Variance % It may be more efficient to calculate some member combinations when you retrieve the data. Fractions with a denominator of the power of two (for example. numeric fractions such as one third (0. Connecticut. and therefore can only represent real numbers approximately. Figure 104 shows the relationships between the members of the Market dimension in the Sample Basic database. The values for East. Essbase offers two methods for calculating a database: ● ● Outline calculation Calculation script calculation The method you choose depends on the type of calculation that you want to perform. instead of calculating the member combinations during the regular database calculation. For example.50) or ten (0.3333. and Central are added to calculate the total value for Market. Florida.

“Dynamically Calculating Data Values. which is based on a simplified database. the following calculation script increases the actual marketing expenses in the New York region by 5%.05. About Multidimensional Calculation Concepts 333 . “New York”) Marketing = Marketing *1. Using a calculation script. “Developing Calculation Scripts. illustrates the nature of multidimensional calculations: Figure 106 Calculating a Multidimensional Database The database has three dimensions—Accounts. and Mar. A calculation script contains a series of calculation commands. For example.COGS Margin% = Margin % Sales (Margin as a percentage of Sales) The Time dimension has four quarters. FIX (Actual. you can choose exactly how to calculate a database. you can calculate part of a database or copy data values between members. See Chapter 27. and formulas. The example displays only the members in Qtr1—Jan. Time. equations.” Calculation Script Calculation Calculation script calculation is the second method of calculation. Feb.can use dynamic calculations to calculate data at retrieval time. The Accounts dimension has four members: ● ● ● Sales and COGS are input values Margin = Sales . and Scenario. See Chapter 25. ENDFIX.” About Multidimensional Calculation Concepts Figure 106. For example.

the dimensions and data values in the database can be represented as a cube. Figure 108 Sales.The Scenario dimension has two child members—Budget for budget values and Actual for actual values. The following example has three dimensions. Actual. as shown in Figure 107: Figure 107 Three-Dimensional Database As shown in Figure 108. you are referring to four Sales values: 334 Calculating Essbase Databases . when you refer to Actual Sales. An intersection of members (one member on each dimension) represents a data value. you are referring to a slice of the database containing eight Sales values. when you refer to Sales. Budget Slice of the Database As shown in Figure 109. therefore.

Margin -> Qtr1 -> Actual as a percentage of Sales -> Qtr1 -> Actual. Actual is written as: Sales -> Jan -> Actual Figure 110 Sales. The symbol for the cross-dimensional operator is ->. you need to specify each member on each dimension. the cell containing the data value for Sales. 4. Essbase cycles through the database and calculates Margin% as follows: 1. Jan.” it takes each Margin value and calculates it as a percentage of its corresponding Sales value. The result is placed in Margin% -> Mar -> Actual. Actual Slice of the Database When Essbase calculates the formula “Margin% = Margin % Sales. Margin -> Mar -> Actual as a percentage of Sales -> Mar -> Actual. The result is placed in Margin% -> Jan -> Actual. member combinations are denoted by a cross-dimensional operator. In Essbase. Sales Slice of the Database To refer to a specific data value in a multidimensional database.Figure 109 Actual. Margin -> Jan -> Actual as a percentage of Sales -> Jan -> Actual. In Figure 110. Jan. Margin -> Feb -> Actual as a percentage of Sales -> Feb -> Actual. About Multidimensional Calculation Concepts 335 . The result is placed in Margin% -> Qtr1 -> Actual. A data value is stored in a single cell in the database. 3. Actual is shaded. Jan. 2. The result is placed in Margin% -> Feb -> Actual. So Sales.

For information about how Essbase calculates a database. specify any calculation script as the default database calculation. see Chapter 23. ➤ To set the default calculation. “Defining Calculation Order. and CALCLINE 336 Calculating Essbase Databases . however. 6. ➤ To calculate a database.” Setting the Default Calculation By default. When you use Administration Services to calculate a database. You can then check the status of the background process to see when the calculation is complete. CALCDEFAULT. You can. you must set the calculation script as the default calculation. use a tool: Tool Administration Services Topic Calculating Block Storage Databases Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference MaxL ESSCMD execute calculation CALC. you can execute the calculation in the background so that you can continue working as the calculation processes. you can assign a frequently-used script to the database rather than loading the script each time you want to perform its calculation. the calculation for a database is a CALC ALL of the database outline. CALC ALL consolidates all dimensions and members and calculates all formulas in the outline.5. The result is placed in Margin% -> Jan -> Budget. use a tool: Tool Administration Services MaxL ESSCMD Topic Setting the Default Calculation alter database SETDEFAULTCALCFILE Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Calculating Databases If you have Calculation permissions. you can calculate a database. If you want a calculation script to work with calculation settings defined at the database level. Margin -> Jan -> Budget as a percentage of Sales -> Jan -> Budget. Essbase continues cycling through the database until it has calculated Margin% for every combination of members in the database. Thus.

you must have Calculate permissions for the database outline.” Canceling Calculations 337 . Parallel calculation: The Essbase calculator can analyze a calculation. Parallel and Serial Calculation Essbase supports parallel and serial calculations: ● Serial calculation (the default): All steps in a calculation run on a single thread. click the Cancel button while the calculation is running.Tool Essbase Spreadsheet Add-in for Excel Topic Calculating a Database Location Essbase Spreadsheet Add-in for Excel Online Help Canceling Calculations ➤ To stop a calculation before Essbase completes it. if appropriate. With calculate permissions. Essbase performs one of the following operations: ● ● Reverts all values to their previous state Retains any values calculated before the cancellation How Essbase handles the cancellation depends on the Essbase Kernel Isolation Level settings. and. When you cancel a calculation. Each task is completed before the next is started. assign tasks to multiple CPUs (up to 4). “User Management and Security. ● See “Using Parallel Calculation” on page 871. Careful consideration should be given to providing users with calculate permissions. Security Considerations To calculate a database. See “Understanding Isolation Levels” on page 775. you can calculate any value in the database and you can calculate a value even if a security filter denies you read and update permissions. See Chapter 37.

338 Calculating Essbase Databases .

.. Also see Chapter 22..................................................... 363 This chapter explains how to develop and use formulas to calculate a database................................ It provides detailed examples of formulas......................................................................................... 339 Understanding Formula Calculation.............................. 345 Displaying Formulas ............................................................................................... which you may want to adapt for your own use........................ See “Composing Formulas” on page 346... Understanding Formulas Formulas calculate relationships between members in a database outline........................... Use this method if you do not need to control database calculations carefully for accuracy or performance... see “Limitations on Using Formulas with Hybrid Analysis” on page 589...................... “Reviewing Examples of Formulas....................... 346 Checking Formula Syntax .............. you can: ● Apply formulas to members in the database outline............................................................. 345 Composing Formulas ............... With formulas.............. “Optimizing Calculations” to design and create formulas optimized for performance.... For information on using formulas with Hybrid Analysis...................... 362 Estimating Disk Size for a Calculation ... 343 Reviewing the Process for Creating Formulas ............... The information in this chapter does not apply to aggregate storage outlines.......” Using formulas can have significant implications for calculation performance.......... After reading this chapter... Use this method if you need to control database calculations carefully...................................................21 In This Chapter Developing Formulas Understanding Formulas ................... Understanding Formulas 339 .. use the information in Chapter 55........................ This method limits formula size to less than 64 kilobytes................................................................................ 363 Using Formulas in Partitions .............................................................................. 343 Understanding Formula Syntax .......... See “Developing Formulas on Aggregate Storage Outlines” on page 937................................................. ● Place formulas in a calculation script.....................

Point to the data values of specific member combinations. Figure 111 Calculation of Margin %. Control the flow of formula executions based on the results of conditional tests. and other values. which you can use to construct formula calculations on a database. zero. The Margin %. Functions Functions are predefined routines that perform specialized calculations and return sets of members or data values. Profit %. For a list of mathematical operators. multiply. The topics in this section provide a description of the elements you can place in a formula and basic information about formula calculation and syntax: ● ● ● ● ● “Operators” on page 340 “Functions” on page 340 “Dimension and Member Names” on page 342 “Constant Values” on page 342 “Non-Constant Values” on page 342 Operators Table 24 shows the types of operators you can use in formulas: Table 24 Descriptions of Operator Types Description Perform common arithmetic operations. For a list of the conditional operators. and Profit per Ounce Essbase provides a comprehensive set of operators and functions. For example. you can use an IF statement to test for a specified condition. and Profit per Ounce members are calculated using the formulas applied to them. For example. or divide values. see the Essbase Technical Reference. you can add. For information on writing conditional formulas. Profit %. Figure 111 shows the Measures dimension from the Sample Basic database. Operator Type Mathematical Conditional Cross-dimensional For information about using operators with #MISSING.See “Using Formulas in a Calculation Script” on page 442. point to the sales value for a specific product in a specific region. see the Essbase Technical Reference. see “Conditional Tests” on page 347. 340 Developing Formulas . The following table shows the types of functions you can use in formulas. See “Working with Member Combinations across Dimensions” on page 357. For example. see the “Essbase Functions” section in the Essbase Technical Reference. subtract.

Relationship Look up data values within a database during a calculation. you can use the @ANCESTVAL function to return the ancestor values of a specified member combination. Function Type Boolean Mathematical Perform specialized mathematical calculations. and top-down. bottom-up. For example. or calculating future values.Table 25 Descriptions of Function Types Description Provide a conditional test by returning either a TRUE (1) or FALSE (0) value. For example. you can use the @ICHILDREN function to return a specified member and its children. you can use the @INTEREST function to calculate simple interest or the @PTD function to calculate period-to-date values. for example. or by passing the name as a string. you can use the @AVG function to return the average value of a list of members. For example. Use date and time characteristics in calculation formulas. Date and Time Miscellaneous This type provides two kinds of functionality: ● You can specify calculation modes that Essbase is to use to calculate a formula— cell. you can use the @ALLOCATE function to allocate sales values that are input at a parent level to the children of the parent. You can manipulate character strings for member and dimension names. For example. Forecasting Manipulate data for the purposes of smoothing or interpolating data. you can use the @TODATE function to convert date strings to numbers that can be used in calculation formulas. block. For example. to generate member names by adding a character prefix to a name or removing a suffix from a name. Statistical Calculate advanced statistics. Member Set Generate a list of members that is based on a specified member. you can use the @ISMBR function to determine whether the current member matches any of the members specified. the allocation of each child is determined by its share of the sales of the previous year. For example. you can use the @TREND function to calculate future values that are based on curve-fitting to historical values. you can use the @RANK function to calculate the rank of a specified member or a specified value in a data set. For example. For example. ● Understanding Formulas 341 . For example. You can allocate values within the same dimension or across multiple dimensions. For example. Financial Perform specialized financial calculations. you can use the @SUMRANGE function to return the sum of all members within a specified range. Allocation Allocate values that are input at a parent level across child members. Range Declare a range of members as an argument to another function or command.

new blocks may not be created unless Essbase is enabled to create blocks on equations. and syntax. Essbase automatically creates all possible data blocks for California and assigns the value 120 to all data cells. Dimension and Member Names You can include dimension and member names in a formula. California is a member in a sparse dimension and 120 is a constant value. functions. You can enable Create Blocks on Equations at the database level whereby blocks are always created. Use the complete function name to ensure correct results. or you can control block creation within calculation scripts. “Reviewing Examples of Formulas. Also see Chapter 22. For a complete list of operators. For example.” Note: Abbreviations of functions are not supported. These custom-developed functions are written in the Java programming language and are called by the Essbase calculator framework as external functions. see the Essbase Technical Reference.Function Type Custom-defined Functions Description This type enables you to perform functions that you develop for calculation operations. 342 Developing Formulas . Essbase may use the wrong function. To assign constants in a sparse dimension to only those intersections that require a value. as illustrated in the following example: Scenario 100-10 Feb Constant Values You can assign a constant value to a member: California = 120. but if there is another function with a similar name. Non-Constant Values If you assign anything other than a constant to a member in a sparse dimension. Many thousands of data blocks may be created. See “Constant Values Assigned to Members in a Sparse Dimension” on page 882. you need to enable Create Blocks on Equations for this formula: West = California + 120. Some commands may work in an abbreviated form. In this formula. to create blocks for West that didn’t exist prior to running the calculation. use a FIX statement. and no data block exists for that member.

Understanding Formula Calculation For formulas applied to members in a database outline. In a calculation script. “Developing Calculation Scripts. use a tool: Tool Administration Services MaxL ESSCMD Topic Enabling Create Blocks on Equations alter database SETDBSTATE Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Because unnecessary blocks can be created when Create Blocks on Equations is enabled at the application or database level. Margin % Sales. “Dynamically Calculating Data Values. Run a calculation script that calculates the member containing the formula. See Chapter 27. If a formula is associated with a dynamically calculated member.” For a formula in a calculation script. For example. follow these rules: ● End each statement in the formula with a semicolon (. Understanding Formula Calculation 343 . Performance is affected because Essbase has to interrupt the regular calculation to perform the dynamic calculation. Essbase calculates the formula when it occurs in the calculation script.). you cannot calculate a dynamically calculated member or make a dynamically calculated member the target of a formula calculation. calculation performance can be affected.➤ To enable the Create Blocks on Equations feature for all calculation scripts for a specific database. a CALC DIM of the dimension containing the member. Essbase calculates formulas when you do the following: ● ● Run a default (CALC ALL) calculation of a database. for example. See Chapter 25. Essbase calculates the formula when the user requests the data values. To control block creation within a calculation script. See “Using Substitution Variables in Formulas” on page 354.” Using dynamically calculated members in a formula on a database outline or in a calculation script can significantly affect calculation performance. You cannot use substitution variables in formulas that you apply to the database outline. Understanding Formula Syntax When you create member formulas. or the member itself. use the SET CREATEBLOCKONEQ ON|OFF calculation command. See “Non-Constant Values Assigned to Members in a Sparse Dimension” on page 882.

Filters. For example: "Opening Inventory" (IF (@ISMBR(Budget)) IF (@ISMBR(Jan)) "Opening Inventory" = Jan. Note: If you use ELSE IF (with a space in between) rather than ELSEIF (one word) in a formula. ELSE "Opening Inventory" = @PRIOR("Ending Inventory"). Formulas. or keyword. For example. Formulas.ENDIF statement. function name. and Substitution Variable Values” on page 1079. ❍ Is the same as an operator. ENDIF.Sales + Additions. end each IF with an ENDIF. ELSE Marketing = Marketing * 1. ENDIF.9. the substitution variable value must be a saved outline member name. For example: "Opening Inventory" = "Ending Inventory" . hyphens (-).5. If a substitution variable is used for a member name.. “100” or “10Prod” ❍ ❍ For a full list of member names that must be enclosed in quotation marks. Report Scripts. Enclose a member name in double quotation marks (" ") if the member name meets any of the following conditions: ❍ ● Contains spaces. ENDIF. For example. Filters. and slashes (/). see “Using Dimension and Member Names in Calculation Scripts. See “Using Dimension and Member Names in Calculation Scripts. For example. ● End each IF statement in a formula with an ENDIF statement. If you are using an IF statement nested within another IF statement. the following formula contains a simple IF. ELSEIF(@ISMBR(@DESCENDANTS(South))) Marketing = Marketing * . and Substitution Variable Values” on page 1079. asterisks (*). Report Scripts.. Includes any non-alphanumeric character. You can apply this formula to the Commission member in a database outline: IF(Sales < 100) Commission = 0.) ● You do not need to end ELSE or ELSEIF statements with ENDIFs. 344 Developing Formulas . Is all numeric or starts with one or more numerals. you must supply an ENDIF for the IF statement.1. ENDIF. For example: IF (@ISMBR(@DESCENDANTS(West)) OR @ISMBR(@DESCENDANTS(East) Marketing = Marketing * 1.● Use only saved outline member names.

See “Checking Formula Syntax” on page 362. 3. follow this process: 1. Enter the formula text. see the Essbase Technical Reference. Save the outline. In Outline Editor. you can check the syntax using the Formula Editor syntax checker. or you can use the Formula Editor UI features to create the formula.● Ending ENDIF statements with a semicolon (. See “Creating and Editing Formulas in Outlines” in the Essbase Administration Services Online Help. See “Saving Outlines” in the Essbase Administration Services Online Help. See “Checking Formula Syntax” on page 362. To create a formula. You can type the formulas directly into the formula text area. Formulas are plain text. 4. Reviewing the Process for Creating Formulas You use Formula Editor. See “Composing Formulas” on page 346 and “Creating and Editing Formulas in Outlines” in the Essbase Administration Services Online Help. When writing formulas. 6. For information on syntax for Essbase functions and commands. See “Creating and Editing Formulas in Outlines” in the Essbase Administration Services Online Help. Displaying Formulas ➤ To display an existing formula. Save the formula. 5.) is not required but it is good practice to follow. which is a tab in the Member Properties dialog box in Outline Editor. If required. Open Formula Editor. use a tool: Tool Administration Services ESSCMD Topic Creating and Editing Formulas in Outlines GETMBRCALC Location Essbase Administration Services Online Help Essbase Technical Reference Reviewing the Process for Creating Formulas 345 . Check the formula syntax. select the member to which to apply the formula. to create formulas. you can create a formula in the text editor of your choice and paste it into Formula Editor. 2.

Tool MaxL Topic query database Location Essbase Technical Reference Composing Formulas The topics in this section discuss the main types of formulas: ● ● ● ● ● ● “Basic Equations” on page 346 “Conditional Tests” on page 347 “Examples of Conditional Tests” on page 348 “Value-Related Formulas” on page 349 “Member-Related Formulas” on page 354 “Formulas That Use Various Types of Functions” on page 358 Also see Chapter 22. “Reviewing Examples of Formulas. 346 Developing Formulas .COGS. and placing the result in Markup. where Member is a member name from the database outline and mathematical operation is any valid mathematical operation. For example: Margin = Sales . calculating the resulting values as a percentage of the values in Retail. In a calculation script.” Before writing formulas. you define basic equations as: Member = mathematical operation. Basic Equations You can apply a mathematical operation to a formula to create a basic equation. Essbase cycles through the database subtracting the values in Cost from the values in Retail. you can apply the following formula to a Markup member: (Retail . In a calculation script. As another example. review the guidelines in “Understanding Formula Syntax” on page 343. In this example. The equation can be in the database outline or in a calculation script.Cost) % Retail. this formula is: Markup = (Retail . In this example Essbase cycles through the database subtracting the values in COGS from the values in Sales and placing the results in Margin.Cost) % Retail.

or the specified member itself Current member is a child of the specified member Current member is a child of the specified member. See “Understanding Formula Syntax” on page 343. respectively) based on the result of a conditional test. Conditions following each ELSEIF command are tested only if the previous IF command returns FALSE (0). you can use the ELSE and ELSEIF commands to specify alternative actions. The IF and ENDIF commands define a conditional block. Use Boolean functions to determine which formula to use. preface the calculation with an IF test based on @ISLEV(Product. These functions are known as Boolean functions.Conditional Tests You can define formulas that use a conditional test or a series of conditional tests to control the flow of calculation. to restrict a certain calculation to the members in the Product dimension that contain input data. or the specified member itself Current member of the specified dimension is in the generation specified Current member of the specified dimension is in the level specified Current member matches any of the specified members Current member is the parent of the specified member Current member is the parent of the specified member. such as @ISMBR(Sales > Budget). The formulas between the IF and the ENDIF commands are executed only if the test returns TRUE (1).0). When you use a conditional formula in a calculation script. or the specified member itself Current member is a descendant of the specified member Current member is a descendant of the specified member. For example. You can use the following Boolean functions to specify conditions: Condition Current member has a specified accounts tag (for example. If the test returns FALSE (0). an Expense tag) Current member is an ancestor of the specified member Current member is an ancestor of the specified member. all of the parts of the cross-dimensional member must match the properties of the current cell to return a value of TRUE (1). enclose it in parentheses and associate it with a member in the database outline. The formulas following each ELSE command are executed only if the previous test returns FALSE (0). as shown in the examples in this section. In conjunction with an IF command. If one of the function parameters is a cross-dimensional member. The decision is based on the characteristics of the current member combination. or the specified member itself Function @ISACCTYPE @ISANCEST @ISIANCEST @ISCHILD @ISICHILD @ISDESC @ISIDESC @ISGEN @ISLEV @ISMBR @ISPARENT @ISIPARENT Composing Formulas 347 . you can use functions that return TRUE or FALSE (1 or 0.

The IF statement checks to see if the value of Sales for the current member combination is greater than 500000. In the next example. If you place the formula in a calculation script. For information about how to develop calculation scripts and how to use them to control how Essbase calculates a database. or the specified member itself A specified UDA exists for the current member of the specified dimension Function @ISSAMEGEN @ISSAMELEV @ISSIBLING @ISISIBLING @ISUDA When you place formulas on the database outline. 348 Developing Formulas . the formula calculates commission at 1% of sales if the sales are greater than 500000: IF(Sales > 500000) Commission = Sales * . Essbase multiplies the value in Sales by 0. In the following example. 2. ENDIF. performing these calculations: 1.” For information on individual Essbase functions and calculation commands.01.15. ELSE. “Developing Calculation Scripts. You can use additional control commands in a calculation script.) Essbase cycles through the database. see Chapter 27. you need to associate the formula with the Commission member as shown: Commission (IF(Sales > 500000) Commission = Sales * . ELSEIF(@ISIDESC(Central)) Payroll = Sales * .01 and places the result in Commission. see the Essbase Technical Reference. and ENDIF commands and Boolean functions to control the flow of the calculations. you can use only the IF. the formula tests the ancestry of the current member and then applies the appropriate Payroll calculation formula: IF(@ISIDESC(East) OR @ISIDESC(West)) Payroll = Sales * . ENDIF.11.Condition Current member (of the same dimension as the specified member) is in the same generation as the specified member Current member (of the same dimension as the specified member) is in the same level as the specified member Current member is a sibling of the specified member Current member is a sibling of the specified member.01. ELSEIF. Examples of Conditional Tests You can apply the following formula to a Commission member in the database outline. If Sales is greater than 500000.

Essbase multiplies the value in Sales by 0.11.10. ELSEIF(@ISIDESC(Central)) Payroll = Sales * . If the current member is not a descendant of East or West. 5. however. For information on the @ISIDESC function. you need to associate the formula with the Payroll member as shown: Payroll(IF(@ISIDESC(East) OR @ISIDESC(West)) Payroll = Sales * . See “About Multidimensional Calculation Concepts” on page 333. Composing Formulas 349 . see the Essbase Technical Reference. West.10. Value-Related Formulas Use this section to find information about formulas related to values: ● ● “Using Interdependent Values” on page 349 “Calculating Variances or Percentage Variances Between Actual and Budget Values” on page 351 “Allocating Values” on page 352 “Using Member Relationships to Look Up Values” on page 353 “Using Substitution Variables in Formulas” on page 354 ● ● ● Using Interdependent Values Essbase optimizes calculation performance by calculating formulas for a range of members in the same dimension at the same time. ENDIF. 3.11 and moves on to the next member combination. 2.ELSE Payroll = Sales * . and Essbase may not yet have calculated the required values. the ELSEIF statement uses the @ISIDESC function to check if the current member is a descendant of Central. If the current member on the Market dimension is a descendant of Central. If you place the formula in a calculation script.10 and moves on to the next member combination. If the current member on the Market dimension is a descendant of East or West. require values from members of the same dimension. ENDIF. Some formulas.) Essbase cycles through the database. or Central. Essbase multiplies the value in Sales by 0. Essbase multiplies the value in Sales by 0. The IF statement uses the @ISIDESC function to check if the current member on the Market dimension is a descendant of either East or West.15 and moves on to the next member combination. If the current member is not a descendant of East.15. performing the following calculations: 1. 4. ELSE Payroll = Sales * .

ENDIF. 5. Jan Opening Inventory Sales Addition Ending Inventory 100 50 70 120 Feb 120 70 60 110 Mar 110 100 150 160 Assuming that the Opening Inventory value for January is loaded into the database. the @PRIOR function obtains the value for the Ending Inventory for the previous month. you must associate the formula with the Opening Inventory member as shown: "Opening Inventory" (IF(NOT @ISMBR (Jan)) "Opening Inventory" = @PRIOR("Ending Inventory"). The Ending Inventory is calculated for the current month. 3. "Ending Inventory" = "Opening Inventory" .Sales + Additions. 2. The IF statement and @ISMBR function check that the current member on the Year dimension is not Jan. 4. multiple equations to a single member in the database outline. "Ending Inventory" = "Opening Inventory" . If you place the formula in a calculation script. in which the opening inventory is dependent on the ending inventory from the previous month. 350 Developing Formulas . ENDIF.) Essbase cycles through the months. This value is then allocated to the Opening Inventory of the current month. calculates the correct values: IF(NOT @ISMBR (Jan)) "Opening Inventory" = @PRIOR("Ending Inventory"). If the current month is not Jan. the Opening Inventory and Ending Inventory values need to be calculated on a month-by-month basis. The following formula.A good example is that of cash flow. applied to the Opening Inventory member in the database outline. This step is necessary because the Opening Inventory value for Jan is an input value.Sales + Additions. the required calculation: 1. January Ending February Opening February Ending March Opening March Ending = = = = = January Opening – Sales + Additions January Ending February Opening – Sales + Additions February Ending March Opening – Sales + Additions You can calculate the required results by applying interdependent. In Sample Basic. 2. 3. performing the following calculations: 1.

This organization means that the value of the Ending Inventory of the previous month is not available when Opening Inventory is calculated. See “Setting Variance Reporting Properties” on page 134. the children of Total Expenses are expense items. 2 Open Formula Editor. Calculating Variances or Percentage Variances Between Actual and Budget Values You can use the @VAR and @VARPER functions to calculate a variance or percentage variance between budget and actual values. Essbase calculates Opening Inventory for all months and then Ending Inventory for all months. Essbase assumes that members are non-expense items and calculates the variance accordingly. ● By default. When you use the @VAR or @VARPER functions. if actual costs are lower than budgeted costs). The Variance and Variance % members of the Scenario dimension calculate the variance between the Actual and Budget values. Opening Inventory. if actual sales are lower than budgeted sales). For example. select the member. 3 Tag the member as an expense item. it is necessary to place the above formula on a single member. ➤ To tell Essbase that a member is an expense item: 1 In Outline Editor. See “Creating and Editing Formulas in Outlines” in the Essbase Administration Services Online Help. You want Essbase to show a positive variance if the actual values are lower than the budget values (for example. If you place the formulas for Opening Inventory and Ending Inventory on their separate members. Composing Formulas 351 .Note: To calculate the correct results. You may want the variance to be positive or negative. The member must be on the dimension tagged as accounts. Non-expense items. depending on whether you are calculating variance for members on the accounts dimension that are expense or non-expense items: ● Expense items. You want Essbase to show a negative variance if the actual values are lower than the budget values (for example. Essbase shows a positive variance if the actual values are lower than the budget values. in Sample Basic.

Forecasting Values smoothing data. Apply a moving maximum to a data set and replace each term in the list with a trailing maximum. cross-dimensional member. or value across a member list within the same dimension. This function modifies the data set for smoothing purposes. cross-dimensional member. Allocated Values Values from a member. This function modifies the data set for smoothing purposes. Function @ALLOCATE @MDALLOCATE For examples of calculation scripts using the @ALLOCATE and @MDALLOCATE functions. Forecasting functions allow you to manipulate data for the purposes of interpolating data or calculating future values. The allocation is based on a variety of specified criteria. @MOVMAX Function @MOVAVG 352 Developing Formulas .Figure 112 Sample Basic Showing Expense Items Allocating Values Allocation functions allow you to allocate values that are input at the parent level across child members in the same dimension or in different dimensions. see “Allocating Values Within or Across Dimensions” on page 464 and the Essbase Technical Reference. Values from a member. Data Manipulation Apply a moving average to a data set and replace each term in the list with a trailing average. or value across multiple dimensions.

This function modifies the data set for smoothing purposes. This function modifies the data set for smoothing purposes. Apply a smoothing spline to a set of data points. Function @MOVMED @MOVMIN @MOVSUM @MOVSUMX @SPLINE @TREND For information about specific Essbase functions. This function modifies the data set for smoothing purposes.Data Manipulation Apply a moving median to a data set and replace each term in the list with a trailing median. Apply a moving minimum to a data set and replace each term in the list with a trailing minimum. Apply a moving sum to a data set and replace each term with a trailing sum. Look-up Value Ancestor values of the specified member combination Numeric value of the attribute from the specified numeric or date attribute dimension associated with the current member Text value of the attribute from the specified text attribute dimension associated with the current member Value (TRUE or FALSE) of the attribute from the specified Boolean attribute dimension associated with the current member Generation number of the current member combination for the specified dimension Level number of the current member combination for the specified dimension Generation number of the specified member Level number of the specified member Ancestor values of the specified member combination across multiple dimensions Shared ancestor values of the specified member combination Parent values of the specified member combination Function @ANCESTVAL @ATTRIBUTEVAL @ATTRIBUTESVAL @ATTRIBUTEBVAL @CURGEN @CURLEV @GEN @LEV @MDANCESTVAL @SANCESTVAL @PARENTVAL Composing Formulas 353 . see the Essbase Technical Reference. This function modifies the data set for smoothing purposes. Apply a moving sum to a data set and replace each term with a trailing sum. Specify how to assign values to members before you reach the number to sum. Using Member Relationships to Look Up Values Relationship functions allow you to use the member combination that Essbase is currently calculating to look up specific values. Calculate future values and base the calculation on curve-fitting to historical values. A spline is a mathematical curve that is used to smooth or interpolate data.

You can set substitution variables at the server. Using Substitution Variables in Formulas Substitution variables act as placeholders for information that changes regularly. or ESSCMD. and database levels. MaxL. assume that the substitution variable UpToCurr is defined as Jan:Jun. Member-Related Formulas This section provides information about creating formulas that refer to members: ● ● ● ● “Specifying Member Lists and Ranges” on page 355 “Generating Member Lists” on page 355 “Manipulating Member Names” on page 357 “Working with Member Combinations across Dimensions” on page 357 354 Developing Formulas . Essbase must be able to access the substitution variable from the application and database on which you are running the calculation scripts. it replaces the substitution variable. Essbase treats any text string preceded by & as a substitution variable. For example. type an ampersand (&).Look-up Value Parent values of the specified member combination across multiple dimensions Shared parent values of the specified member combination Data value from another database to be used for calculation of a value from the current database Function @MDPARENTVAL @SPARENTVAL @XREF For information about specific Essbase functions. When the outline is calculated. for example. followed by the substitution variable name. Essbase replaces the substitution variable with the value you have assigned to it. See “Using Substitution Variables” on page 110. You can create and assign values to substitution variables using Administration Services. You can use the following @ISMBR function as part of a conditional test: @ISMBR(&UpToCurr) At the time Essbase calculates the outline. as shown: @ISMBR(Jan:Jun) Note: Substitution variables used in formulas for new outline members do not pass verification unless the outline is saved. You can use substitution variables in formulas that you apply to the database outline. see the Essbase Technical Reference. time period information. application. ➤ To use a substitution variable in a formula.

you may need to specify more than one member. For example: Q1_2000::Q4_2000 A function-generated list of members or a range of members A combination of ranges and list For a list of member list contents and corresponding functions. Apr2001. Separate each range. Dept65:Dept73. and function with a comma (. Contents of Member List All ancestors of the specified member. This function does not include the specified member. Function @ALLANCESTORS Composing Formulas 355 . Essbase uses the level 0 members of the dimension tagged as time. list. FY2000 or @SIBLINGS(Dept01). You can specify members using the following syntax: Member List or Range A single member Syntax The member name. the @ISMBR function tests to see if a member that is currently being calculated matches any of a list or range of specified members. For example: Mar2001 A list of members A comma-delimited (. FY99. For example: Mar2001.) list of member names. For example: Q1_97::Q4_98. Total_Dept If you do not specify a list of members or a range of members in a function that requires either. If no dimension is tagged as time. see “Generating Member Lists” on page 355. between and including the two defining members The two defining member names separated by two colons (::). May2001 A range of all members at the same level. including ancestors of the specified member as a shared member. or you may need to specify a range of members. Generating Member Lists Member set functions allow you to generate member lists that are based on a specified member. Essbase displays an error message.). between and including the two defining members The two defining member names separated by a colon (:). For example: Jan2000:Dec2000 A range of all members in the same generation.Specifying Member Lists and Ranges In some functions. For example.

but not the specified member All siblings that follow the specified member in the database outline. including the specified member Separate lists of members to be processed by functions that require multiple list arguments The member with the name that is provided as a character string A merged list of two member lists to be processed by another function Function @IALLANCESTORS @ANCEST @ANCESTORS @IANCESTORS @CHILDREN @ICHILDREN @CURRMBR @DESCENDANTS @IDESCENDANTS @RDESCENDANTS @IRDESCENDANTS @GENMBRS @LEVMBRS @SIBLINGS @ISIBLINGS @LSIBLINGS @RSIBLINGS @ILSIBLINGS @IRSIBLINGS @LIST @MEMBER @MERGE 356 Developing Formulas . but not descendants of shared members All descendants of the specified member (optionally up to the specified generation or level). including the specified member All siblings that follow the specified member in the database outline. but not the specified member All siblings of the specified member. but not the specified member All siblings that precede the specified member in the database outline. including ancestors of the specified member as a shared member. but not the specified member All descendants of the specified member (optionally up to the specified generation or level). including the specified member The current member being calculated for the specified dimension All descendants of the specified member (optionally up to the specified generation or level). but not the specified member nor descendants of shared members All descendants of the specified member (optionally up to the specified generation or level). but not including the specified member All children of the specified member. including descendants of shared members. including the specified member. including the specified member and descendants of shared members All members of the specified generation in the specified dimension All members of the specified level in the specified dimension All siblings of the specified member. including the specified member All siblings that precede the specified member in the database outline. The ancestor of the specified member at the specified generation or level All ancestors of the specified member (optionally up to the specified generation or level) but not the specified member All ancestors of the specified member (optionally up to the specified generation or level) including the specified member All children of the specified member.Contents of Member List All ancestors of the specified member. This function includes the specified member.

the shaded data value is: Sales -> Jan -> Actual Composing Formulas 357 . Create the cross-dimensional operator using a hyphen (-) and a greater than symbol (>). In the following simplified illustration. see the Essbase Technical Reference. Do not leave spaces in between the cross-dimensional operator and the member names.Contents of Member List A member list that crosses the specified member from one dimension with the specified member range from another dimension A member list that identifies all shared members among the specified members A member list that identifies the range of members between (and inclusive of) two specified single or cross-dimensional members at the same level A list of members from which some members have been removed All members that match the specified wildcard selection The parent of the current member being calculated in the specified dimension All members of the specified generation or level that are above or below the specified member All members that have a common UDA defined on Essbase Server All base-dimension members that are associated with the specified attribute-dimension member All base members that are associated with attributes that satisfy the specified conditions Function @RANGE @SHARE @XRANGE @REMOVE @MATCH @PARENT @RELATIVE @UDA @ATTRIBUTE @WITHATTR For information about specific Essbase functions. Manipulating Member Names You can work with member names as character strings by using the following functions: Character String Manipulation Create a character string that is the result of appending a member name or specified character string to another member name or character string Return a member name as a string Return a substring of characters from another character string or from a member name Function @CONCATENATE @NAME @SUBSTRING Working with Member Combinations across Dimensions Use the cross-dimensional operator to point to data values of specific member combinations.

The formula allocates a percentage of the total Misc_Expenses value to each Product -> Market combination. see “Using Cross-Dimensional Operators (->)” on page 883. The allocation is based on the value of Sales for each product in each market. illustrates how to use the cross-dimensional operator. 2. Using the cross-dimensional operator can have significant performance implications. Essbase cycles through the database. Formulas That Use Various Types of Functions The topics in this section discuss formulas that use other types of functions: ● ● ● ● ● ● ● “Mathematical Operations” on page 359 “Statistical Functions” on page 359 “Range Functions” on page 360 “Financial Functions” on page 361 “Date and Time Function” on page 362 “Calculation Mode Function” on page 362 “Custom-Defined Functions” on page 362 For more information about specific Essbase functions.Figure 113 Defining a Single Data Value by Using the Cross-Dimensional Operator The following example. Essbase divides the Sales value for the current member combination by the total Sales value for all markets and all products (Sales -> Market -> Product). For optimization guidelines. 3. 358 Developing Formulas . performing these calculations: 1. It allocates the result to Misc_Expenses for the current member combination. It multiplies the value calculated in step 1 by the Misc_Expenses value for all markets and all products (Misc_Expenses -> Market -> Product). see the Essbase Technical Reference. which allocates miscellaneous expenses to each product in each market. Misc_Expenses = Misc_Expenses -> Market -> Product * (Sales / ( Sales -> Market -> Product)). The value of Misc_Expenses for all products in all markets is known.

Mathematical Operations Mathematical functions allow you to perform many mathematical operations in formulas. See “Calculating Variances or Percentage Variances Between Actual and Budget Values” on page 351. Operation Return the absolute value of an expression Return the average value of the values in the specified member list Return the value of e (the base of natural logarithms) raised to power of the specified expression Return the factorial of an expression Return the next lowest integer value of a member or expression Return the natural logarithm of a specified expression Return the logarithm to a specified base of a specified expression Return the base-10 logarithm of a specified expression Return the maximum value among the expressions in the specified member list Return the maximum value among the expressions in the specified member list. See “Calculating Variances or Percentage Variances Between Actual and Budget Values” on page 351. Composing Formulas 359 . Return the percentage variance (difference) between two specified members. @VARPER Function @ABS @AVG @EXP @FACTORIAL @INT @LN @LOG @LOG10 @MAX @MAXS @MIN @MINS @MOD @POWER @REMAINDER @ROUND @SUM @TRUNCATE @VAR Statistical Functions Statistical functions allow you to calculate advanced statistics in Essbase. with the ability to skip zero and #MISSING values Return the minimum value among the expressions in the specified member list Return the minimum value among the expressions in the specified member list. with the ability to skip zero and #MISSING values Return the modulus produced by the division of two specified members Return the value of the specified member raised to the specified power Return the remainder value of an expression Return the member or expression rounded to the specified number of decimal places Return the summation of values of all specified members Return the truncated value of an expression Return the variance (difference) between two specified members.

in the specified data set The rank of the specified member or value in the specified data set The standard deviation. based upon a sample.Calculated Value The correlation coefficient between two parallel data sets The number of values in the specified data set The median. or both values The previous or nth previous member in a range of members Function @AVGRANGE @CURRMBRRANGE @MAXRANGE @MAXSRANGE @MDSHIFT @MINRANGE @MINSRANGE @NEXT @NEXTS @PRIOR 360 Developing Formulas . of the specified members The standard deviation. retaining all other members identical to the current member across multiple dimensions The minimum value of a member across a range of members The minimum value of a member across a range of members. with the option to skip #MISSING. based upon the entire population. or the most frequently occurring value. of the specified members The variance. of the specified data set Function @CORRELATION @COUNT @MEDIAN @MODE @RANK @STDEV @STDEVP @STDEVRANGE @VARIANCE @VARIANCEP Range Functions Range functions allow you to execute a function for a range of members. or middle number. of the specified data set The variance. crossed with a range of members. in the specified data set The mode. of the specified members The standard deviation. zero. based upon the entire population. with the ability to skip zero and #MISSING values The next or nth member in a range of members. Calculation The average value of a member across a range of members A range of members that is based on the relative position of the member combination Essbase is currently calculating The maximum value of a member across a range of members The maximum value of a member across a range of members. with the ability to skip zero and #MISSING values The next or n th member in a range of members The next or n th member in a range of members. based upon a sample.

The amount per period that an asset in the current period may be depreciated (calculated across a range of periods). @SYD Function @ACCUM @COMPOUND @COMPOUNDGROWTH @DECLINE @DISCOUNT @GROWTH @INTEREST @IRR @NPV @PTD @SLN Note: A single member formula cannot contain multiple financial functions (for example. from the first period of the range to the period in which the amount to discount is found A series of values that represents the linear growth of the specified value The simple interest for a specified member at a specified rate The internal rate of return on a cash flow The Net Present Value of an investment (based on a series of payments and incomes) The period-to-date values of members in the dimension tagged as time The amount per period that an asset in the current period may be depreciated (calculated across a range of periods). calculated using the declining balance method A value discounted by the specified rate. retaining all other members identical to the current member and in the specified dimension The summation of values of all specified members across a range of members Function @PRIORS @SHIFT In some cases. The depreciation method used is sum of the year's digits. with the option to skip #MISSING. The depreciation method used is straight-line depreciation. zero. Calculation An accumulation of values up to the specified member The proceeds of a compound interest calculation A series of values that represent the compound growth of the specified member across a range of members Depreciation for a specific period. @NPV and @SLN. A member formula that requires multiple financial Composing Formulas 361 . @SHIFTPLUS or @SHIFTMINUS.Calculation The previous or nth previous member in a range of members. or both values The next or nth member in a range of members. @SUMRANGE Financial Functions Financial functions allow you to include financial calculations in formulas. or multiple instances of @NPV).

. “Developing Custom-Defined Calculation Functions. or server level. Calculation Mode Specify the calculation mode (cell.Membername(@NPV(. See Chapter 30.. where you can select them to insert into a formula. Custom-developed functions must be written in the Java programming language and registered on the Essbase Server. Essbase tells you if you have mistyped a function name. See the Essbase Technical Reference. Date and Time Function The date function allows you to use dates with other functions. Custom-defined functions are displayed in the functions tree in Calculation Script Editor.” Checking Formula Syntax Essbase includes Essbase Server-based formula syntax checking that tells you about syntax errors in formulas. block.functions must be broken down into separate formulas so that each formula contains only one financial function (for example. to be used in formulas and calculation scripts. 362 Developing Formulas . or top-down) that Essbase uses to calculate a formula Function @CALCMODE Note: You can also use the configuration setting CALCMODE to set calculation modes to BLOCK or BOTTOMUP at the database. application.)). bottom-up. Essbase may connect you to validate unknown names. If you are not connected to a server or the application associated with the outline. MemberName(@NPV(.. Custom-Defined Functions You can create custom-defined functions. For example.))).. to perform calculations not otherwise supported by the Essbase calculation scripting language. Unknown names can be validated against a list of custom-defined macro and function names. The Essbase calculator framework calls them as external functions. Date Conversion Convert date strings to numbers that can be used in calculation formulas Function @TODATE Calculation Mode Function The calculation mode function allows you to specify which calculation mode that Essbase uses to calculate a formula.

For example. “Designing Partitioned Applications” and Chapter 14. Essbase Server writes a message in the application log that indicates what the error is and displays the incorrect formula. You can view the updated comment when you reopen the outline. Estimating Disk Size for a Calculation You can estimate the disk size required for a single CALC ALL for a full data load or a partial data load. If Essbase finds one or more syntax errors. even though it contains errors. see “Creating and Editing Formulas in Outlines” in Essbase Administration Services Online Help. Essbase displays the syntax checker results at the bottom of the Formula Editor. or computers. and a calculation that includes that member is run.A syntax checker cannot tell you about semantic errors in a formula. To find semantic errors. ➤ To estimate disk size for a calculation. You can view this comment in Outline Editor by closing and reopening the outline. the formula is ignored during the calculation. it displays the number of the line that includes the error and a brief description of the error. expected semicolon If a formula passes validation in Formula Editor or Outline Editor. but Essbase Server detects semantic errors when the outline is saved. See “Estimating Calculation Affects on Database Size” on page 870. Estimating Disk Size for a Calculation 363 . ➤ To check formula syntax. see ESTIMATEFULLDBSIZE in the Essbase Technical Reference. “Creating and Maintaining Partitions”. it displays the “No errors” message. if you do not include a semicolon endof-line character at the end of a formula. run the calculation and check the results to ensure that they are as you expect. The message indicates that the incorrect formula was not loaded. check the following: ● ● The incorrect formula is saved as part of the outline. ● ● After you have corrected the formula and saved the outline. Semantic errors occur when a formula does not work as you expect. Using Formulas in Partitions An Essbase partition can span multiple Essbase Servers. Essbase displays a message similar to the following message: Error: line 1: invalid statement. See Chapter 13. the message in the member comment is deleted. If you do not correct the member formula. If Essbase finds no syntax errors. Essbase Server writes an error message to the comment field of the member associated with the incorrect formula. processors.

364 Developing Formulas . Essbase has to retrieve the data from the other database when calculating the formula. however. See “Transparent Partitions and Member Formulas” on page 209 and “Performance Considerations for Transparent Partition Calculations” on page 208. just as you use formulas on your local database. therefore. ensure that the referenced values are up-to-date and carefully consider the performance impact on the overall database calculation. carefully consider how you use formulas on the data target. See “Writing Calculation Scripts for Partitions” on page 454. If. a formula you use in one database references a value from another database.You can use formulas in partitioning. With transparent partitions.

......................................... as shown: Inventory (~) (Label Only) Opening Inventory (+) (TB First) (Expense Reporting) IF(NOT @ISMBR(Jan)) Additions (~) (Expense Reporting) Ending Inventory (~) (TB Last) (Expense Reporting) To calculate period-to-date values for the year and for the current quarter............................. And you would add this formula on the YTD member: Calculating Period-to-Date Values 365 ... “Reviewing Examples of Calculation Scripts.. you would add this formula to the QTD member: @PTD(Apr:May).......................................... For examples of using formulas in calculation scripts............................... For example: QTD (~) @PTD(Apr:May) YTD (~) @PTD(Jan:May). Assuming that the current month is May...................................................... 365 Calculating Rolling Values................................. see “Developing Formulas on Aggregate Storage Outlines” on page 937......................................22 In This Chapter Reviewing Examples of Formulas Calculating Period-to-Date Values..................................... add two members to the Year dimension: QTD for quarter-to-date and YTD for year-to-date.... Calculating Period-to-Date Values If the outline includes a dimension tagged as accounts... you can use the @PTD function to calculate period-to-date values.. 368 This chapter provides examples of formulas............................. 367 Testing for #MISSING Values ..................................... 368 Calculating an Attribute Formula ...........” The information in this chapter does not apply to aggregate storage outlines.......... For information about developing formulas in MDX for aggregate storage outline members......... The example in this topic uses the Inventory branch of the Measures dimension from the Sample Basic database....................... which you may want to adapt for your own use...................... see Chapter 28........ 366 Calculating Monthly Asset Movements............................

Sales. Last. The SKIPNONE parameter means that all values are included. Essbase takes these values and treats them accordingly. @CURRMBRRANGE(Year. First. Ending Inventory has a Last tag. 0)). Essbase takes the first value in the current quarter. Essbase calculates the average Sales values across the months in the dimension tagged as time. even #MISSING values. See “Consolidating #MISSING Values” on page 900. You would add this formula to the AVG_Sales member: @AVGRANGE(SKIPNONE. Essbase takes the first value in the year. which is Apr. assume that a database contains monthly Sales data values and that the database outline includes the members AVG_Sales and YTD_Sales. . which is Jan. Opening Inventory. as appropriate. “Calculating Time Series Data. has a time balance tag. Essbase places the results in AVG_Sales. And you would add this formula on the YTD_Sales member: @ACCUM(Sales). For QTD. Opening Inventory has a First tag. Essbase takes the last value in the year. For example. Note: You can also use Dynamic Time Series members to calculate period-to-date values. which is also May.@PTD(Jan:May). See Chapter 26. 0. LEV.” Calculating Rolling Values You can use the @AVGRANGE function to calculate rolling averages and the @ACCUM function to calculate rolling year-to-date values. and Average Values” on page 425. For YTD. Essbase sums the values for the range of months. which is May. The following table provides an example of the calculation results for the members in the Inventory branch and for the Sales member: Measures -> Time Opening Inventory Additions Sales Ending Inventory Jan 100 110 100 110 Feb 110 120 110 120 Mar 120 100 110 110 Apr 110 160 130 140 May 140 180 190 130 QTD 110 340 320 130 YTD 100 670 640 130 The values for Sales and Additions have been summed. Last. For YTD. and Ending Inventory has a time balance tag. The following table shows the results when Essbase calculates the cumulative Sales values and places the results in YTD_Sales: 366 Reviewing Examples of Formulas . however. For QTD. See “Calculating First. Essbase takes the last value in the current quarter.

You would add this formula on the Asset_MVNT member: IF(@ISMBR(Jan)) Asset_MVNT = Assets . You can calculate the difference between the assets values of successive months (the asset movement) by subtracting the previous month’s value from the present month’s value. This table shows the results when Essbase calculates the difference between the values of assets in successive months: Assets -> Time Assets Asset_MVNT Opening_Balance 1200 Jan 1400 200 Feb 1300 -100 Mar 1800 500 Essbase cycles through the months. performing these calculations: 1. ENDIF. AVG_Sales -> Mar is an average of Sales for Jan. This check is necessary because the Asset_MVNT value for Jan cannot be calculated by subtracting the previous month’s value.@PRIOR(Assets). and Mar.Measures -> Time Sales AVG_Sales YTD_Sales Jan 100 100 100 Feb 200 150 300 Mar 300 200 600 Qtr1 600 #MISSING #MISSING The values for AVG_Sales are averages of the months-to-date. Assume these three members manage the asset values for the database: ● ● ● Assets for the monthly asset values Asset_MVNT for the asset movement values Opening_Balance for the asset value at the beginning of the year For Jan. For example.Opening_Balance. ELSE Asset_MVNT = Assets . the Asset_MVNT value is calculated by subtracting the Opening_Balance value from the Jan value. For example. The IF statement and @ISMBR function check to see if the current member on the Year dimension is Jan. So YTD_Sales -> Feb is the sum of Sales -> Jan and Sales -> Feb. Feb. assume that a database contains assets data values that are stored on a month-bymonth basis. Calculating Monthly Asset Movements You can use the @PRIOR function to calculate values based on a previous month’s value. Calculating Monthly Asset Movements 367 . The values for YTD_Sales are the cumulative values up to the current month.

See “Calculating Attribute Data” on page 166. 2.1.1. ELSE Commission = #MISSING. When applied to a Commission member in the database outline. Essbase places #MISSING in the Commission member. to calculate profitability by ounce for products sized in ounces. you need to associate it with the Commission member as shown: Commission(IF(Sales <> #MISSING) Commission = Sales * . See “Consolidating #MISSING Values” on page 900. In the Sample Basic database. Essbase subtracts the previous month’s assets from the current month’s assets. the Ratios branch of the Measures dimension contains a member called Profit per Ounce. Calculating an Attribute Formula You can perform specific calculations on attribute-dimension members in a database. For example. performing the following calculations: 368 Reviewing Examples of Formulas . 3. Essbase multiplies the value in the Sales member by 0.1 and places the result in the Commission member. Essbase cycles through the Products dimension.). It places the result in the current month’s Asset_MVNT value. 3. ENDIF. you can use the @ATTRIBUTEVAL function in a calculation formula. If you place the formula in a calculation script. If Sales is not #MISSING. the following formula calculates Commission: IF(Sales <> #MISSING) Commission = Sales * . Essbase subtracts the Opening_Balance from the Jan -> Assets value and places the result in Jan -> Asset_MVNT. Essbase cycles through the database. ENDIF. performing the following calculations: 1.2. the @PRIOR function obtains the value for the previous month’s assets. Assume that a database outline contains a member called Commission. The formula on this member is: Profit/@ATTRIBUTEVAL(@NAME(Ounces)). If the current member on the Year dimension is Jan. Testing for #MISSING Values You can test for #MISSING values in a database. If the current member on the Year dimension is not Jan. Commission is paid at 10% of sales when the Sales value for the current member combination is not #MISSING. If Sales is #MISSING. ELSE Commission = #MISSING. The IF statement checks to see if the value of the Sales member for the current member combination is not #MISSING.

Note: The @NAME function is required to process the string “Ounces” before passing it to the @ATTRIBUTEVAL function. see the Essbase Technical Reference. Calculating an Attribute Formula 369 . For each base member that is associated with a member from the Ounces attribute dimension.1. 12 for the member 12 under Ounces). 2. Note: For an explanation of the functions that you use to perform calculations on attributes in formulas. Essbase then divides Profit by the result of @ATTRIBUTEVAL to yield Profit per Ounce. For more information about the @ATTRIBUTEVAL function. the @ATTRIBUTEVAL function returns the numeric attribute value (for example. see “Using Attributes in Calculation Formulas” on page 170.

370 Reviewing Examples of Formulas .

........................................................................ Data Storage in Data Blocks Essbase stores data values in data blocks............................... You should understand the concepts of data blocks and of sparse and dense dimensions (see “Sparse and Dense Dimensions” on page 54) and the use of levels and generations (see “Generations and Levels” on page 53)............. 378 Data Block Renumbering...................... see “Understanding How Dynamic Calculation Changes Calculation Order” on page 414............................ 387 This chapter describes the order in which Essbase calculates a block storage database...................... and Scenario dimensions are dense.............. If you use dynamic calculations............................................. Calculation order does not apply to aggregate storage databases............................................... In the Sample Basic database.............................. the Product and Market dimensions are sparse: Data Storage in Data Blocks 371 ............................... 380 Calculation Passes...................................................................................................................................... Each data block contains all the dense dimension member values for its unique combination of sparse dimension members............... the Year........ Measures.................................................................................... Essbase creates a data block for each unique combination of sparse dimension members (providing that at least one data value exists for the combination)..........................23 In This Chapter Defining Calculation Order Data Storage in Data Blocks... 386 Calculation of Shared Members .......... 380 Cell Calculation Order ......................................................... 373 Block Calculation Order .......................................... 371 Member Calculation Order ....

level 0 member combinations or (2) sparse. Input blocks can be level 0 or upper level blocks. and Scenario values for 100-10.” Essbase creates a data block for each unique combination of members in the Product and Market dimensions (providing that at least one data value exists for the combination). upper level member combinations. You can categorize data blocks as: ● Input These blocks are created by loading data to cells in a block. Input blocks can be created for (1) sparse. So 100-10. member combinations are denoted by the cross-dimensional operator. meaning that attribute data is not stored in the database. For example. New York is written 100-10 -> New York. when at least one of the sparse members is a parent level member. New York. These dimensions are sparse. New York. This data block contains all the Year. The symbol for the cross-dimensional operator is -> (a hyphen followed by a greater than symbol). it creates one data block for the combination of 100-10. Dynamic Calc. Measures. See Chapter 10. 372 Defining Calculation Order .Figure 114 Dimensions from the Sample Basic Database Note: Sample Basic also contains five attribute dimensions. “Working with Attributes. Figure 115 Product and Market Dimensions from the Sample Basic Database In Essbase.

Dense dimensions (in the order they display in the database outline) 2. the block did not exist before calculation). The database outline tells Essbase how to order the blocks. do not affect calculation order. Upper level blocks can be input or noninput blocks. in Sample Basic. Essbase calculates the dimensions in this order: ● If both a dimension tagged as accounts and a dimension tagged as time exist. Dimension tagged as time 3. a level 0 noninput block is created during an allocation process. Dimension tagged as accounts 2. for example. overall. Within each block. New York -> Cola is a level 0 block because New York and Cola are level 0 members of their respective sparse dimensions.● Noninput These blocks are created through calculations. which are not included in the database consolidation. “Working with Attributes. Essbase calculates the values in order according to the hierarchy in the database outline. Essbase calculates the blocks in order. in Sample Basic. ● Level 0 These blocks are created for sparse member combinations when all of the sparse members are level 0 members. ● Upper level These blocks are created for sparse member combinations when at least one of the sparse members is a parent level member. For example. bringing one or more blocks into memory and calculating the required values within the block. Essbase calculates in this order: 1. where data is loaded at a parent level and then allocated down to level 0. Essbase calculates in this order: 1. When you perform a default calculation (CALC ALL) on a database. See Chapter 10. Level 0 blocks can be input or noninput blocks. and if formulas are applied to members on the accounts dimension. For example. See “Generations and Levels” on page 53 and “Data Blocks and the Index System” on page 62. Member Calculation Order Essbase calculates a database at the data block level. according to their block numbers. the East -> Cola block is created during a sparse calculation process (that is.” Member Calculation Order 373 . Other dense dimensions (in the order they are displayed in the database outline) 4. Therefore. Essbase calculates a database based on the database outline. Sparse dimensions (in the order they display in the database outline) Note: Attribute dimensions. Other sparse dimensions (in the order they are displayed in the database outline) ● Otherwise.

Scenario. This example assumes that the parent members are not tagged as Dynamic Calc. “Developing Calculation Scripts. and Mar.” Figure 116 Year Dimension from the Sample Basic Database Jan is the first member in the first branch. parent value. “Dynamically Calculating Data Values. Within each branch of a dimension. Product. The same applies to Feb and Mar. Essbase calculates Qtr1 by consolidating Jan. The calculation order is shown on the left. ^) to the members in the database outline. Essbase calculates the Year member by consolidating the values of Qtr1 through Qtr4. See Chapter 25. Figure 116 shows the Year dimension from the Sample Basic database. You can override the default order by using a calculation script. *. Then the level 0 values of the next branch are calculated followed by their level 1. the other two members in the branch. In this example. and Market. level 0 values are calculated first followed by their level 1. Feb. /. See Chapter 27. the dimensions are calculated in this order: Measures. Jan has no formula so it is not calculated. The calculation continues in this way until all levels are calculated. parent value.In the Sample Basic database. Essbase then calculates the Qtr2 through Qtr4 branches in the same way. Determining Member Consolidation You can choose how Essbase consolidates members by applying any calculation operator (+.” Understanding the Effects of Member Relationships The order of calculation within each dimension depends on the relationships between members in the database outline. These members are added. ~. %. Finally. Year. these members are added. -. 374 Defining Calculation Order .

Using the Calculation Operators *. Note: If you use dynamic calculations. and Average Values” on page 425. See “Calculating First. Measures is calculated first. and calculate percentages (%) for members in the database outline. ● You do not need to consider calculation order if you use only calculation operators to add (+) and subtract (–) members in the database outline and you do not use formulas in the outline. and % If you use calculation operators to multiply (*). If you attach a formula to Margin on the Measures dimension. If a member has a ^ tag. If a parent member has a label only tag. Member Calculation Order 375 . See “Cell Calculation Order” on page 380. or calculate percentages (%) for members in the database outline. Essbase consolidates it accordingly. If a member has a ~ tag. Essbase may use a different calculation order. The required calculated values may be overwritten by a subsequent calculation on another dimension. For example. tagged as accounts. Essbase calculates the formula when it calculates the Measures dimension. the Sample Basic database has a Measures dimension. multiply (*). tagged as time. and a Year dimension. divide (/ ). or Average). See “Calculation Order for Dynamic Calculation” on page 414. consider the calculation order of the dimensions. Placing Formulas on Members in the Database Outline If you place formulas on members in the database outline. the Sample Basic database has a Measures dimension. A formula that is attached to a member on one dimension may be overwritten by a subsequent calculation on another dimension. /. the calculated results may be overwritten when Essbase consolidates values on the Year dimension. If you multiply members on the Measures dimension. tagged as time. Measures is calculated first. See “Cell Calculation Order” on page 380. and a Year dimension. and Year second. Last. Essbase does not consolidate the member in any dimension. Ordering Dimensions in the Database Outline To ensure the required calculation results. and Year second. tagged as accounts. consider the calculation order of the dimensions. For example. Essbase does not calculate the parent from its children. consider the calculation order of the dimensions in the database outline if you do either of these tasks: ● Use calculation operators to divide (/). Place formulas on members in the database outline. Last.If an accounts member has a time balance tag (First. Essbase then overwrites the formula when it consolidates the Year dimension. Essbase does not consolidate the member up to its parent.

Essbase starts with Child 1. It. To calculate the correct result. and dividing it by Child 1. if Child 1 is the first member. ensure that the outline does not contain forward calculation references. Obviously. however. You can apply a formula to a member on the database outline to achieve the same result. Figure 117 Calculation Operators in the Database Outline In Figure 117 on page 376. Two shared members and one non-shared member have forward calculation references. Essbase then adds Child 2 and Child 3. assume that the user wants to divide the total of Child 2 and Child 3 by Child 1. Forward calculation references occur when the value of a calculating member is dependent on a member that Essbase has not yet calculated. In these cases. consider this Product dimension: Figure 118 Example Product Dimension This Product dimension has three forward calculation references. The result is #MISSING.When you use a multiplication (*). carefully order the members in the branch to achieve the required result. this result is not the required one. Avoiding Forward Calculation References To obtain the calculation results you expect. or percentage (%) operator to consolidate members. make Child 1 the last member in the branch. For example. division (/ ). Essbase may not produce the required calculation results. as shown in Figure 119 on page 377: 376 Defining Calculation Order . However. starting with the value #MISSING. is far more efficient to use these calculation operators on members as shown in Figure 117 on page 376.

Consider the five members under Diet. Essbase identifies shared members with forward calculation references. when you verify the outline. The members P200-20 and P400-20 calculate correctly. has its own formula. Verifying the outline does not identify non-shared members that have forward calculation references. even though Essbase calculates the shared member P200-20 before it calculates the real member P200-20. P300-20.Figure 119 Example Product Dimension Showing Forward Calculation References In Outline Editor. see “Verifying Outlines” in the Essbase Administration Services Online Help. One referenced member. and P500-20 have forward calculation references: ● P100-20 (+) (Shared Member): Essbase calculates the shared member P100-20 before it calculates the real member P100-20. even though the formula that is applied to P400-20 references a member that Essbase has not yet Member Calculation Order 377 ● ● ● ● . Essbase needs to calculate the real member by adding its children before it can accurately calculate the shared member P100-20. P300-20 (+) (Shared Member): Essbase calculates the shared member P300-20 before it calculates the real member P300-20. The real member P200-20 has no calculation dependencies (no children and no formula). ➤ To verify the outline. P300-20. The members P100-20. P400-20 (+) (“P200-10” * 2): P400-20 is not a forward calculation reference. Essbase needs to calculate the real member before it can accurately calculate the shared member P300-20. and Essbase needs to calculate P300-20 before it can accurately calculate P500-20. P200-20 (+) (Shared Member): P200-20 is not a forward calculation reference. P500-20 (+) (“P200-20” + “P300-20”): The formula applied to P500-20 references members that Essbase has not yet calculated. Essbase simply takes the value of the real member. You can save and use an outline containing forward calculation references. Because the real member P100-20 has children. as they do not have forward calculation references. Because the real member P300-20 has a formula. Therefore Essbase does not need to calculate the real member before the shared member.

So. change the order of members in the outline. It defines the sparse member combinations from this first dimension.calculated. P300-20. The real member P300-20 before the shared member P300-20. Essbase takes the first sparse dimension in a database outline as a starting point. before the member P500-20. P200-10 is the only member in the formula. By placing the Diet shared members after the Regular members. Product is the first sparse dimension in the database outline. So. ● ● Block Calculation Order Essbase calculates blocks in the order in which the blocks are numbered. Figure 120 Changed Product Dimension Without Forward Calculation References Now Essbase calculates: ● The real member P100-20 before it calculates the shared member P100-20. P300-20. P100-20 no longer has a forward calculation reference. P500-20 no longer has a forward calculation reference. The referenced member with a formula. In the Sample Basic database. and P200-10 does not itself have children or a formula. The member referenced in the formula does not itself have calculation dependencies. you ensure that Essbase calculates the members in the required order. P300-20 no longer has a forward calculation reference. So. and P500-20. To get accurate calculation results for P100-20. Essbase accurately calculates P400-20. Figure 121 Dimensions in the Sample Basic Database 378 Defining Calculation Order .

The following table shows the sparse member combinations for the first 5 of these 19 data blocks: Block # 0 1 2 3 4 Product Member Cola (100-10) Diet Cola (100-20) Caffeine Free Cola (100-30) Colas (100) Old Fashioned (200-10) Market Member New York New York New York New York New York The next member in the Market dimension is Massachusetts. for which Essbase does not create data blocks). Product has 19 members (excluding the shared members.”. the first 19 data blocks in the database are numbered according to the calculation order of members in the Product dimension. which is New York. See Chapter 10. are not included in the database consolidation and do not affect block calculation order. The first 19 data blocks contain the first member to be calculated in the Market dimension. Therefore. The following table shows the sparse member combinations for the block numbers 19 through 23: Block Calculation Order 379 . “Working with Attributes. Essbase creates the next 19 data blocks for sparse combinations of each Product member and Massachusetts. Figure 122 Product Dimension from the Sample Basic Database The other sparse dimension is Market.Note: The attribute dimensions in the Sample Basic outline (not shown in the figure above).

The order in which Essbase calculates the cells within each block depends on how you have configured the database. However. 380 Defining Calculation Order . How you have configured the database defines the member calculation order of dense dimension members within each block. according to its block number.Block # 19 20 21 22 23 Product Member Cola (100-10) Diet Cola (100-20) Caffeine Free Cola (100-30) Colas (100) Old Fashioned (200-10) Market Member Massachusetts Massachusetts Massachusetts Massachusetts Massachusetts Essbase continues until blocks have been created for all combinations of sparse dimension members for which at least one data value exists.” Data Block Renumbering Essbase renumbers the data blocks when you make any of these changes: ● ● ● ● ● ● Move a sparse dimension Add a sparse dimension Change a dense dimension to a sparse dimension Move any member in a sparse dimension Delete any member in a sparse dimension Add a member to a sparse dimension Cell Calculation Order Each data block contains all the dense dimension member values for its unique combination of sparse dimension members. if no data values exist for Old Fashioned Root Beer (200-10) in Massachusetts. When you run a default calculation (CALC ALL) on a database. If you have Intelligent Calculation turned on and if the block does not need to be calculated. see Chapter 24. For example. Essbase creates a data block only if at least one value exists for the block. Essbase does reserve the appropriate block number for 200-10 -> Massachusetts in case data is loaded for that member combination in the future. then Essbase does not create a data block for 200-10 -> Massachusetts. each block is processed in order. It also defines the calculation order of blocks that represent sparse dimension members. Each data value is contained in a cell of the data block. For information about how intelligent calculation is used to optimize performance. then Essbase skips the block and moves on to the next block. “Understanding Intelligent Calculation.

Jan -> East 4. Essbase calculates the shaded cells. The cell with multiple consolidation paths is darkly shaded. Qtr1 -> Massachusetts 3. Qtr1 -> East Qtr1 -> East has multiple consolidation paths. Feb -> East. When consolidated on Year. In the above example. Essbase calculates dense dimensions in the order that they display in the database outline.Use these sections to better understand cell calculation order: ● ● ● ● ● “Cell Calculation Order: Example 1” on page 381 “Cell Calculation Order: Example 2” on page 382 “Cell Calculation Order: Example 3” on page 383 “Cell Calculation Order: Example 4” on page 384 “Cell Calculation Order for Formulas on a Dense Dimension” on page 385 Cell Calculation Order: Example 1 Consider the simplest case in which both of these conditions are true: ● ● No dimensions have time or accounts tags. The following table shows a subset of the cells in a data block. When consolidated on Market. The cells are calculated in this order: 1. it is a consolidation of Jan -> East. Cell Calculation Order 381 . Feb -> East 5. Assuming that the Year dimension is displayed before the Market dimension in the database outline. and Mar -> East. it is a consolidation of Qtr1 -> New York and Qtr1 -> Massachusetts. It can be consolidated on Market or on Year. Mar -> East 6. The setting for consolidating #MISSING values is turned on. the Year dimension is calculated before the Market dimension. The numbers in bold show the calculation order for these cells. it calculates Qtr1 -> East only once and uses the consolidation path of the dimension calculated last. this dimension is Market. Qtr1 -> New York 2. Data values have been loaded into the input cells. Essbase knows that Qtr1 -> East has multiple consolidation paths. Therefore. Market and Year are both dense dimensions.

Qtr1 -> Massachusetts 3. you can use a calculation script to calculate the dimensions in the order you choose. If required. Assuming the Year dimension is positioned before the Market dimension in the database outline. “Developing Calculation Scripts. Essbase calculates the shaded cells. The cells are calculated in this order: 1. See Chapter 27.The results are shown in this table: Note: Qtr1 -> East has been calculated only once by consolidating the values for Qtr1. Feb -> East 382 Defining Calculation Order .” Cell Calculation Order: Example 2 Consider a second case in which both of these conditions are true: ● ● No dimensions have time or accounts tags. Qtr1 -> East 4. the formula is calculated when Essbase consolidates Qtr1 -> East on the Market consolidation path. Market and Year are both dense dimensions. The numbers in bold show the calculation order for these cells. The following table shows a subset of the cells in a data block. The setting for consolidating #MISSING values is turned off (the default). you can see that if you place a member formula on Qtr1 in the database outline. Jan -> East 5. Qtr1 -> New York 2. Essbase calculates dense dimensions in the order they are defined in the database outline. Essbase ignores it when calculating Qtr1 -> East. The cell with multiple consolidation paths is darkly shaded. From the calculation order. If you place a member formula on East in the database outline. Data values have been loaded into the input cells. the Year dimension is calculated before the Market dimension.

However. the data that is loaded at parent levels is not overwritten by the #MISSING values below it. Qtr1 -> East has been calculated twice. the result is retained because the Market consolidation path is calculated last. Qtr1 -> East Qtr1 -> East is calculated on both the Year and Market consolidation paths. Essbase does not consolidate the #MISSING values. Second. and Mar -> East. Data values have been loaded into cells at the parent level. you can see that if you place a member formula on Qtr1 in the database outline. Assuming the Year dimension is positioned before the Market dimension in the database outline. From the calculation order. Cell Calculation Order 383 . The results are identical to the previous case. Essbase calculates dense dimensions in the order that they are defined in the database outline. its result is overwritten when Essbase consolidates Qtr1 -> East on the Market consolidation path. Feb -> East. The setting for consolidating #MISSING values is turned off (the default). If you place a member formula on East in the database outline. The following table shows a subset of the cells in a data block. Thus. First. Qtr1 -> East is calculated on both the Year and Market consolidation paths. This fact is significant when you need to load data at parent levels (see “Cell Calculation Order: Example 3” on page 383). it is calculated as an consolidation of Qtr1 -> New York and Qtr1 -> Massachusetts. Because the setting for consolidating #MISSING values is turned off. it is calculated as an consolidation of Jan -> East. Market and Year are both dense dimensions. Data values have been loaded at parent levels. The cells are calculated in the same order as in Example 2.6. the Year dimension is calculated before the Market dimension. Mar -> East 7. Cell Calculation Order: Example 3 Consider the previous example but in which all of these conditions are true: ● ● ● No dimensions have time or accounts tags.

00. Second. which is not the required result. it does not consolidate the #MISSING values in Qtr1 -> New York and Qtr1 -> Massachusetts and so the value in Qtr1 -> East is not overwritten. Cell Calculation Order: Example 4 Consider a case in which all of these conditions are true: ● ● ● The Year dimension is tagged as time. The numbers in bold show the calculation order for these cells. Figure 123 shows the Profit branch of the Measures dimension in the Sample Basic database. Feb -> East. The Measures dimension is tagged as accounts. This table shows the results: Essbase needs to calculate the Qtr1 -> East cell twice in order to ensure that a value is calculated for the cell. The setting for consolidating #MISSING values is turned off (the default).” Figure 123 Profit Branch of the Measures Dimension in the Sample Basic Database The following table shows a subset of the cells in a data block. See Chapter 25. and Mar -> East. 384 Defining Calculation Order . these values are consolidated and overwrite the parent values. This example assumes that Total Expenses is not a Dynamic Calc member. “Dynamically Calculating Data Values. it calculates on the Market consolidation path. Cells with multiple consolidation paths are darkly shaded. For example. The Marketing. if any of the child data values were not #MISSING. Payroll. this value overwrites the values loaded at parent levels. and Misc Expenses values have been loaded at the Qtr1. Essbase calculates the shaded cells. parent level.However. However. the result is #MISSING. Essbase first correctly calculates the Qtr1 -> East cell by consolidating Jan -> East. if Jan -> New York contains 50000. Data values have been loaded into the input cells. If Qtr1 -> East is calculated according to only the last consolidation path.

“Developing Formulas. in the above example. and proceeds with the data block calculation. The results are shown in this table: From the calculation order. When Essbase encounters a formula in a data block.Essbase calculates a dimension tagged as accounts first. the dimension calculated last overwrites previous cell calculations for cells with multiple consolidation paths. If required. Margin in the database outline. Cell Calculation Order for Formulas on a Dense Dimension The cell calculation order within a data block is not affected by formulas on members. you can see that if you place a member formula on. As described in the examples above. “Developing Calculation Scripts” and Chapter 21.” Cell Calculation Order 385 . followed by a dimension tagged as time. it locks any other required data blocks. its result is overwritten by the consolidation on Qtr1. Three cells have multiple consolidation paths: ● ● ● Margin -> Qtr1 Total Expenses -> Qtr1 Profit -> Qtr1 Because the setting for consolidating #MISSING values is turned off. When placing a formula on a dense dimension member. carefully consider the cell calculation order. See Chapter 27. Essbase does not consolidate the #MISSING values. you can use a calculation script to change the order in which the dimensions are calculated. calculates the formula. for example. Measures is calculated before Year. Thus. Therefore. any data that is loaded at parent levels is not overwritten by the #MISSING values and Essbase calculates the three cells with multiple consolidation paths twice.

386 Defining Calculation Order . in some situations. Thus. Also see “Grouping Formulas and Calculations” on page 445. the number of calculation passes Essbase needs to perform depends upon the calculation script. The following table shows the number of calculation passes Essbase performs if you have dimensions that are tagged as time or accounts. it reads each of the required data blocks into memory only once. performs further calculations on them. Essbase may have to do more than one calculation pass through the database. and you have at least one formula on the accounts dimension: Dimension Tagged As: Accounts Dense or Sparse Dense Dense Time None Dense Sparse Calculation Passes 1 1 2 During each calculation pass. Essbase automatically displays the calculation order of the dimensions for each pass through the database and tells you how many times Essbase has cycled through the database during the calculation. On subsequent calculation passes. full calculation of a database (CALC ALL). If you have dimensions that are tagged as accounts or time. Essbase writes data values at the end of each pass. Data retrievals that occur between passes can pick up intermediate values. When you calculate a database. Essbase may need to do an extra calculation pass to calculate these formulas. If the isolation level is set for committed access and multiple passes are required. However. and saves them again. Essbase calculates a database in one calculation pass through the database. When you use a calculation script to calculate a database. performing all relevant calculations on the data block and saving it. Essbase attempts to calculate the database in one calculation pass. See “Using Two-Pass Calculation” on page 889. Essbase calculates based on: All dimensions All dimensions Pass 1: Accounts and time dimensions Pass 2: Other dimensions Sparse Sparse 2 Pass 1: Accounts and time dimensions Pass 2: Other dimensions Sparse Dense 2 Pass 1: Accounts dimension Pass 2: Other dimensions If you are using formulas that are tagged as Two-Pass. See “Calculation Passes” on page 386 and “Understanding Multiple-Pass Calculations” on page 398. Essbase needs to perform more than one calculation pass through a database. Essbase brings data blocks back into memory. When you perform a default. Essbase displays this information in the ESSCMD window and in the application log.Calculation Passes Whenever possible.

If the block is a level 0 block or an input block. “Understanding Intelligent Calculation. Root Beer. Essbase either consolidates the values or performs a sparse calculation on the data block. For example. The formula affects only the member on the sparse dimension. Essbase consolidates the values. If the chosen sparse dimension is a default consolidation. See “Data Storage in Data Blocks” on page 371. taking the values of the previously calculated child data blocks. Each cell in the block is calculated. see “Viewing the Essbase Server and Application Logs” on page 737. Essbase decides whether to do a dense or a sparse calculation. The sparse member combination of each upper level block contains at least one parent member. each block is processed in order. and Diet Cream are consolidated under two different parents. or an upper level block. Based on the chosen sparse dimension. See “Member Calculation Order” on page 373. If the sparse member combination for the block has more than one parent member. Essbase evaluates each cell in the data block. For each data block. and Cream Soda. Calculation of Shared Members 387 . Essbase chooses the Market dimension. which contains East. if the upper level block is for Product -> Florida from the Sample Basic database. Essbase chooses the last dimension in the calculation order that includes a parent member. ❍ Calculation of Shared Members Shared members are those that share data values with other members.” If the block needs recalculating. according to its block number. They are consolidated under Diet. For example. in the Sample Basic database. Essbase checks to see if the block is a level 0. Essbase performs a dense calculation on the block. Diet Root Beer. Essbase performs a formula calculation on the sparse dimension. an input. Essbase either consolidates the values or performs a sparse calculation on the data block: ❍ ● ● ● If a formula is applied to the data block member on the chosen sparse dimension. if the block is for Product -> East and you perform a default calculation on the Sample Basic database. If the block is an upper level block. See Chapter 24. The Market dimension is last in the default calculation order because it is placed after the Product dimension in the database outline. so overall calculation performance is not significantly affected. They are also consolidated under their individual product types—Colas. The type of calculation it chooses depends on the type of values within the data block.➤ To display the application log. Essbase consolidates or calculates the block based on the parent member’s dimension. When you run a default calculation (CALC ALL) on a database. Essbase calculates the blocks using this procedure: ● If you have Intelligent Calculation turned on and if the block does not need to be calculated (if it is marked as clean). Essbase skips the block and moves on to the next block. For example. See “Cell Calculation Order” on page 380. then Essbase chooses the Product dimension. Diet Cola.

388 Defining Calculation Order . If you use the FIX command to calculate a subset of a database and the subset includes a shared member. Essbase calculates the real member. A calculation on a shared member is a calculation on the real member.Figure 124 Calculating Shared Members The members under the Diet parent are shared members. See “Understanding Shared Members” on page 139.

...................... with some exceptions...24 In This Chapter Understanding Intelligent Calculation Introducing Intelligent Calculation.......... it tracks which data blocks it calculates........... “Dynamically Calculating Data Values” Chapter 55............................. See “Limitations of Intelligent Calculation” on page 391... “Designing Partitioned Applications” Chapter 25... “Optimizing Calculations” Introducing Intelligent Calculation By default.......... Intelligent Calculation is turned on. See the Essbase Technical Reference.................. You can change this default setting in the essbase...... 392 Using the SET CLEARUPDATESTATUS Command......................... on subsequent calculations.cfg file....... 396 Understanding the Effects of Intelligent Calculation ................................. Benefits of Intelligent Calculation Intelligent Calculation is designed to provide significant calculation performance benefits for these types of calculations: ● A full calculation of a database (CALC ALL)....... This process is called Intelligent Calculation... 394 Calculating Data Blocks .. You can also turn Intelligent Calculation on or off in a calculation script........................ If you then load a subset of data........................................ and those calculated blocks that require recalculation because of the new data........ Essbase calculates only those data blocks that have not yet been calculated................ Introducing Intelligent Calculation 389 .................................. when Essbase performs a full calculation of a database........................... see these chapters: ● ● ● Chapter 13......................... By default..................................... 389 Using Intelligent Calculation ........................... For information on other calculation optimization methods........ 402 This chapter provides information on how using Intelligent Calculation can optimize the performance of Essbase calculations. See “Turning Intelligent Calculation On and Off” on page 392..................................

Assuming that Intelligent Calculation is turned on (the default). Essbase marks a data block as clean after certain calculations. Year. For database calculations that cannot use Intelligent Calculation for the full calculation. For example.● ● A calculation script that calculates all members in one CALC DIM statement. Market. Compare this calculation script to a calculation script that calculates all the members with two CALC DIM statements: 390 Understanding Intelligent Calculation . Essbase checks the status of the data blocks in a database. For example. When disabled. enable Intelligent Calculation for the default consolidation and then disable Intelligent Calculation for the allocation. regardless of whether they are marked as clean or dirty. enable Intelligent Calculation again Intelligent Calculation and Data Block Status To provide Intelligent Calculation. When Intelligent Calculation is enabled. you may be able to use Intelligent Calculation for part of the calculation. to significantly improve calculation performance for a case in which you calculate a database by doing a default consolidation and then an allocation of data. create a calculation script to perform these steps for a partial Intelligent Calculation: ❍ ❍ ❍ ❍ ❍ Enable Intelligent Calculation. Scenario). Essbase calculates only dirty blocks and their dependent parents. Essbase calculates all data blocks. Product. Data blocks have a calculation status of either clean or dirty. See these topics: ● ● ● “Marking Blocks As Clean” on page 390 “Marking Blocks as Dirty” on page 391 “Maintaining Clean and Dirty Status” on page 391 Marking Blocks As Clean Essbase marks data blocks as clean in these types of calculations: ● ● A full calculation (CALC ALL) of a database (the default calculation). the following calculation script calculates all members in the Sample Basic database: CALC DIM(Measures. A calculation script that calculates all the dimensions in one CALC DIM statement. if it is disabled Use CALC ALL to calculate the database Use the SET UPDATECALC command to disable Intelligent Calculation Allocate data Optionally.

A CALC ALL requires two passes through the database if either of the following conditions is true: ● Introducing Intelligent Calculation 391 . see “Using the SET CLEARUPDATESTATUS Command” on page 394 and the Essbase Technical Reference. Marking Blocks as Dirty Essbase marks a data block as dirty in the following situations: ● Calculating the data block for a partial calculation of the database only if SET CLEARUPDATESTATUS AFTER is not part of the partial calculation statement in the calculation script Loading data into the data block Restructuring the database (for example. Limitations of Intelligent Calculation Consider the following limitations and situations when using Intelligent Calculation: ● Intelligent Calculation works on a data block level and not on a cell level. you must manage these markers carefully. Using two CALC DIM statements causes Essbase to do at least two calculation passes through the database. consider carefully the implications of how Essbase marks data blocks as clean. In this calculation. for example. turn Intelligent Calculation off or perform a CALC DIM for each dimension (rather than a CALC ALL for the database). if you load a data value into one cell of a data block. See “Maintaining Clean and Dirty Status” on page 391. To avoid this problem. The problem occurs because blocks that are marked clean during the first pass are skipped during the second pass. when you calculate a subset of a database. When using Intelligent Calculation. unless you use the SET CLEARUPDATESTATUS command in a calculation script. A CALC ALL that requires two passes through the database may calculate incorrectly. you must accurately maintain the clean and dirty status of the data blocks to ensure that Essbase recalculates the database as efficiently as possible. For example. Essbase marks calculated data blocks as clean only in situations described above. For example. Scenario). by default.CALC DIM(Measures. Year. You can ensure that the newly calculated blocks are marked as clean by using the SET CLEARUPDATESTATUS AFTER command in a calculation script. Because Intelligent Calculation depends on accurate clean and dirty status. Essbase does not. by adding a member to a dense dimension) Copying data to the data block. See “Using the SET CLEARUPDATESTATUS Command” on page 394. Product). CALC DIM(Market. using DATACOPY ● ● ● Maintaining Clean and Dirty Status If you want to use Intelligent Calculation when calculating a subset of a database or when performing multiple calculation passes through a database. the newly calculated data blocks are not marked as clean by default. Before creating the calculation script. the whole data block is marked as dirty. mark the data blocks as clean.

cfg file. ● ● Using Intelligent Calculation This section provides information on turning Intelligent Calculation on and off and on using Intelligent Calculation with different types of calculations: ● ● ● “Turning Intelligent Calculation On and Off” on page 392 “Using Intelligent Calculation for a Default. Essbase does not mark the affected blocks as dirty. When SET CREATENONMISSINGBLK is set to ON in a calculation script. Full Calculation” on page 392 “Using Intelligent Calculation for a Calculation Script. You may. You can change the default by using the UPDATECALC setting in the essbase. You must recalculate the appropriate data blocks. When you use a calculation script.❍ ❍ When the accounts dimension is sparse When the accounts dimension is dense. Whenever possible. Intelligent Calculation is turned on. Partial Calculation” on page 393 Turning Intelligent Calculation On and Off By default. See “Changing Formulas and Accounts Properties” on page 402. Therefore. If you do a full calculation of a database. disable Intelligent Calculation before recalculating formulas. however. See the Essbase Technical Reference. You can turn Intelligent Calculation on and off for the duration of a calculation script by using the SET UPDATECALC command in a calculation script. Using Intelligent Calculation for a Default. Unless you have changed the default. 392 Understanding Intelligent Calculation . regardless if they are marked clean or dirty. leave Intelligent Calculation turned on (the default) to take advantage of the performance benefits that it provides. the time dimension is sparse. a full calculation (CALC ALL) is the default calculation for a database. Full Calculation Intelligent Calculation provides significant performance benefits when you do a full calculation (CALC ALL) of a database. and there is at least one more dense dimension in the outline ● Changing a formula on the database outline or changing an accounts property on the database outline does not cause Essbase to restructure the database. Intelligent Calculation is turned off and affected blocks are calculated. Essbase calculates formulas that are tagged as two pass and in the dimension tagged as accounts as part of the main calculation of a database. need to use a calculation script to calculate some formulas twice.

The following calculation scripts do not cause Essbase to mark the calculated data blocks as clean: FIX(“New York”) CALC DIM(Product. Scenario). Essbase calculates every existing block. Partial Calculation Essbase marks a data block as clean when it calculates the data block on a full calculation (CALC ALL) or when it calculates all dimensions in one CALC DIM command. Using Intelligent Calculation 393 .➤ To check the current calculation setting. Checking the data blocks has a 5% to 10% performance overhead. unless you use the SET CLEARUPDATESTATUS command. For example. if you calculate a subset of a database or calculate a database in two calculation passes. Using Intelligent Calculation for a Calculation Script. Essbase does not mark the calculated blocks as clean. note the information in “Limitations of Intelligent Calculation” on page 391. CALC DIM(Market. If. Caution! When using Intelligent Calculation. disable Intelligent Calculation. this small performance overhead is insignificant when compared to the performance gained by enabling Intelligent Calculation. Recalculating When you do a full recalculation of a database with Intelligent Calculation turned on. Use SET CLEARUPDATESTATUS to avoid unnecessary recalculations. Essbase does not mark calculated data blocks as clean. unless you use the SET CLEARUPDATESTATUS command in a calculation script. See “Intelligent Calculation and Data Block Status” on page 390. ENDFIX CALC DIM(Measures. you recalculate a database in which more than approximately 80% of the values have changed. See “Marking Blocks As Clean” on page 390. Measures). Year. however. In any other calculations. Product). Calculating for the First Time When you do a full calculation of a database for the first time. see “Setting the Default Calculation” in the Essbase Administration Services Online Help. the overhead of Intelligent Calculation may outweigh the benefits. During most recalculations. Essbase checks each block to see if it is marked as clean or dirty. In this case. The performance is the same whether you have Intelligent Calculation turned on or off.

● SET CLEARUPDATESTATUS OFF. ● 394 Understanding Intelligent Calculation . See these topics: ● ● ● “Understanding SET CLEARUPDATESTATUS” on page 394 “Choosing a SET CLEARUPDATESTATUS Setting” on page 394 “Reviewing Examples That Use SET CLEARUPDATESTATUS” on page 395 Also see “Intelligent Calculation and Data Block Status” on page 390. Data blocks are not marked as clean. Do not use the SET CLEARUPDATESTATUS AFTER command with concurrent calculations unless you are certain that the concurrent calculations do not need to calculate the same data block or blocks. To manually mark data blocks as clean for purposes of Intelligent Calculation. Essbase does not recalculate the data blocks if the data blocks are already marked as clean by the other concurrent calculation. and OFF. Choosing a SET CLEARUPDATESTATUS Setting When you use the SET CLEARUPDATESTATUS command to mark calculated data blocks as clean. See “Handling Concurrent Calculations” on page 397.Using the SET CLEARUPDATESTATUS Command In some cases. If you try to calculate the same data blocks on a subsequent pass with Intelligent Calculation enabled. use the SET CLEARUPDATESTATUS command in a calculation script. for example. If concurrent calculations attempt to calculate the same data blocks. Essbase calculates the data blocks but does not mark the calculated data blocks as clean. be aware of these recommendations before selecting the parameter (AFTER. Essbase marks the specified data blocks as clean but does not calculate the data blocks. Essbase does not recalculate the data blocks because they are already marked as clean. it marks the data blocks as clean. The existing clean or dirty status of the calculated data blocks remains unchanged. Understanding SET CLEARUPDATESTATUS The SET CLEARUPDATESTATUS command has three parameters—AFTER. ● SET CLEARUPDATESTATUS ONLY. even on a full calculation (CALC ALL) of a database. OFF): ● ● Only calculated data blocks are marked as clean. ONLY. with Intelligent Calculation enabled. When Essbase calculates data blocks on a first calculation pass through a database. Essbase marks calculated data blocks as clean. This parameter provides the same result as AFTER. even if it is calculating a subset of a database. if you calculate a subset of a database or calculate a database in two calculation passes. ONLY. ● SET CLEARUPDATESTATUS AFTER. but without calculation. Essbase does not mark calculated blocks as clean.

Essbase does not mark the level 0 data blocks as clean because they are not calculated. These examples show different ways of using SET CLEARUPDATESTATUS: ● ● ● “Example 1: CLEARUPDATESTATUS AFTER” on page 395 “Example 2: CLEARUPDATESTATUS ONLY” on page 395 “Example 3: CLEARUPDATESTATUS OFF” on page 395 Example 1: CLEARUPDATESTATUS AFTER SET CLEARUPDATESTATUS AFTER. but does not calculate the data blocks. Essbase marks the dirty parent data blocks as clean. Using the SET CLEARUPDATESTATUS Command 395 . FIX(“New York”) CALC DIM(Product). see Chapter 23. The calculated data blocks remain dirty. Essbase searches for dirty parent data blocks for New York (for example New York -> Colas. CALC ALL. in which Colas is a parent member on the Product dimension). ENDFIX In this example. CALC TWOPASS. For information on level 0 blocks. Essbase does not mark the level 0 data blocks as clean because they are not calculated.” Example 2: CLEARUPDATESTATUS ONLY SET CLEARUPDATESTATUS ONLY. ENDFIX Essbase searches for dirty parent data blocks for New York (for example New York -> Colas. It calculates these dirty blocks and marks them as clean.Reviewing Examples That Use SET CLEARUPDATESTATUS Assume a scenario using the Sample Basic database: ● ● ● Sparse dimensions are Market and Product. “Defining Calculation Order. it remains dirty. CALC ALL. if New York -> 100-10 (a level 0 block) is dirty. Example 3: CLEARUPDATESTATUS OFF SET CLEARUPDATESTATUS OFF. in which Colas is a parent member on the Product dimension). In this example. For example. Intelligent Calculation is turned on (the default). FIX(“New York”) CALC DIM(Product). New York is a member on the sparse Market dimension. Essbase does not mark them as clean. Essbase first calculates all the dirty data blocks in the database. SET CLEARUPDATESTATUS ONLY.

the data block New York -> Colas represents all the member values on the Year. Essbase then searches for all the dirty blocks in the database and marks them as clean. which is a dense dimension. level 0.Essbase then calculates the members tagged as two pass that are in the dimension tagged as accounts. For example. Measures. Therefore. Again. the following calculation script is based on the Sample Basic database: SET CLEARUPDATESTATUS AFTER. Essbase calculates data values in every data block. the following calculation script is based on the Sample Basic database: 396 Understanding Intelligent Calculation . See these topics: ● ● ● ● “Calculating Dense Dimensions” on page 396 “Calculating Sparse Dimensions” on page 396 “Handling Concurrent Calculations” on page 397 “Understanding Multiple-Pass Calculations” on page 398 These sections assumes that you are familiar with the concepts of upper level. This script calculates the Year dimension. Calculating Dense Dimensions When you calculate a dense dimension and do not use a FIX command. Therefore. CALC DIM(Year). Calculating Sparse Dimensions When you calculate a sparse dimension. Essbase recalculates them. See “Data Storage in Data Blocks” on page 371. For example. and Scenario dimensions for the sparse combination New York -> Colas. Essbase calculates at least some of the data values in every data block in the database. Because Year is dense. the Market and Product dimensions are sparse. Each data block represents all dense dimension member values for that unique combination of sparse dimension members. every data block in the database includes members of the Year dimension. It does not calculate the blocks. even though a CALC ALL command is used. Calculating Data Blocks Essbase creates a data block for each unique combination of sparse dimension members. it does not mark the calculated data blocks as clean. Because the data blocks are still marked as dirty. For example. Because the script uses the SET CLEARUPDATESTATUS AFTER command. and input data blocks. Essbase marks all the data blocks as clean. in the Sample Basic database. provided that at least one data value exists for the combination. Essbase may not need to calculate every data block in the database.

even though the script uses the SET CLEARUPDATESTATUS AFTER command. Because the script uses the SET CLEARUPDATESTATUS AFTER command. Essbase may not recalculate the data blocks because they are already marked as clean. one data block exists for New York -> Colas and another for New York -> 100-10. CALC DIM(Product). Upper Level Effects Colas is a parent level member on the Product dimension. Essbase needs to calculate values for Colas. so Essbase calculates this data block. Essbase marks the data block as clean. When Essbase calculates a sparse dimension. Calculating Data Blocks 397 . Handling Concurrent Calculations If concurrent calculations attempt to calculate the same data blocks and Intelligent Calculation is turned on. This script calculates the Product dimension. Therefore. Note: Essbase calculates level 0 data blocks if a corresponding sparse. Unnecessary Calculation You can avoid unnecessary calculation by calculating at least one dense dimension. Because Product is sparse. when you recalculate only a sparse dimension or dimensions. When you calculate a dense dimension and do not use the FIX command. which is a sparse dimension. a data block exists for each member on the Product dimension. including the level 0 blocks. So the level 0 blocks are marked as clean. even though the upper level blocks were originally clean. The data values for New York -> 100-10 are input values. For example. If you subsequently calculate only a sparse dimension or dimensions. Essbase does not need to calculate this data block. it recalculates an upper level data block if the block is dependent on one or more dirty child blocks. Therefore. the level 0 blocks remain dirty. Level 0 Effects The data block New York -> 100-10 is a level 0 block. they are loaded into the database. If you load data into a database. data values are calculated in every data block. Essbase recalculates all upper-level data blocks because the upper-level blocks are marked as dirty if their child blocks are dirty. because Essbase does not calculate them. level 0 member has a formula applied to it.SET CLEARUPDATESTATUS AFTER. it does not represent a parent member on either sparse dimension (Market or Product). the level 0 data blocks into which you load data are marked as dirty. Nor does Essbase mark the data block for New York -> 100-10 as clean.

In the following example. Essbase marks the calculated data blocks as clean. FIX(“New York”. Essbase calculates a database in one calculation pass through the database. the number of calculation passes that Essbase performs depends upon the calculation script. New York -> Colas -> Actual and New York -> Colas -> Budget. Reviewing Examples and Solutions for Multiple-Pass Calculations These examples describe situations that produce incorrect calculation results and provide a solution to obtain correct results: ● “Example 1: Intelligent Calculation and Two Pass” on page 399 398 Understanding Intelligent Calculation . for example. Understanding Multiple-Pass Calculations Whenever possible. because they are already marked as clean. Actual and Budget are members of the dense Scenario dimension. FIX(“New York”. The calculation results for Budget are not correct. the Budget values have not yet been calculated. Essbase calculates the Actual values for all data blocks that represent New York. Essbase does not recalculate the specified data blocks. For example. Year). the second calculation script correctly calculates Budget data block. See “Calculation Passes” on page 386. SET CLEARUPDATESTATUS AFTER. Essbase does not recalculate the data blocks because they are already marked as clean. even though not all the data values in each calculated block have been calculated. For example. Year). Then the Actual and Budget values are in different data blocks. In this case. each data block in the database contains both Actual and Budget values. assume Essbase calculates data blocks on a first calculation pass through a database and then marks them as clean. When you use a calculation script to calculate a database. ENDFIX If User 2 runs the following calculation script to calculate the Budget values for New York.Do not use the SET CLEARUPDATESTATUS AFTER command with concurrent calculations unless you are certain that the concurrent calculations do not calculate the same data block or blocks. ENDFIX One way to solve this problem is to make the Scenario dimension sparse. If you then attempt to calculate the same data blocks on a subsequent pass and Intelligent Calculation is enabled. See “Intelligent Calculation and Data Block Status” on page 390 and “Grouping Formulas and Calculations” on page 445. If User 1 runs the following calculation script. Because Scenario is dense. Actual) CALC DIM(Product. Budget) CALC DIM(Product. SET CLEARUPDATESTATUS AFTER. which is based on the Sample Basic database.

New York -> Root Beer. The calculation results are not correct.● ● “Example 2: SET CLEARUPDATESTATUS and FIX” on page 399 “Example 3: SET CLEARUPDATESTATUS and Two CALC DIM Commands” on page 400 “Example 4: Two Separate Calculation Scripts” on page 401 ● The examples are based on the Sample Basic database and assume that Intelligent Calculation is turned on. FIX(“New York”) CALC DIM(Product). Essbase then needs to recalculate the members tagged as two pass in the dimension tagged as accounts. Essbase does not recalculate the specified data blocks because they are already marked as clean. CALC TWOPASS. even though not all data values in each calculated block have been calculated. Error Essbase calculates the dirty data blocks in the database and marks all the data blocks as clean. The calculation is based on the Product dimension. Because the SET CLEARUPDATESTATUS AFTER command is used. Example 2: SET CLEARUPDATESTATUS and FIX This calculation script calculates data values for New York. Error Essbase performs the following processes: 1. Essbase cycles through the database calculating the dirty data blocks that represent New York. and then only calculates the aggregations and formulas for the Product dimension. 2. ENDFIX CALC TWOPASS. Example 1: Intelligent Calculation and Two Pass This calculation script does a default calculation and then a two-pass calculation: CALC ALL. New York -> Colas. Essbase calculates only the blocks that represent a parent member on the Product dimension (for example. and New York -> Fruit Soda). Calculating Data Blocks 399 . However. Solution You can calculate the correct results by disabling Intelligent Calculation for the two pass calculation. The calculation is based on the Product dimension: SET CLEARUPDATESTATUS AFTER. Essbase marks the calculated data blocks as clean. Thus.

Essbase does two calculation passes through the database: SET CLEARUPDATESTATUS AFTER. Essbase marks the calculated data blocks as clean. CALC DIM(Product). However. See “Member Calculation Order” on page 373. The recalculation is based on the Year dimension. The calculation is based on the Product dimension. as in “Example 2: SET CLEARUPDATESTATUS and FIX” on page 399. 3. Essbase calculates the dimensions in the default calculation order and not in the order in which you list them in the command. even though not all data values in each calculated block have been calculated. Note: When you calculate several dimensions in one CALC DIM command. Year). as a result of the calculation in 2. The following calculation script calculates the correct results: SET CLEARUPDATESTATUS AFTER. however. some of these data blocks are already marked as clean from the calculation in 2. CALC DIM(Product. Essbase should recalculate the members tagged as two pass in the dimension tagged as accounts. Example 3: SET CLEARUPDATESTATUS and Two CALC DIM Commands This calculation script bases the database calculation on the Product and Year dimensions. The calculation results are not correct. Essbase does not recalculate the data blocks that are already marked as clean.3. CALC DIM(Year). Solution You can calculate the correct results by using one CALC DIM command to calculate both the Product and Year dimensions. Because the SET CLEARUPDATESTATUS AFTER command is used. Essbase calculates both dimensions in one calculation pass through the database. 2. Solution You can calculate the correct results by disabling Intelligent Calculation for the two pass calculation. 400 Understanding Intelligent Calculation . Because two CALC DIM commands are used. Essbase cycles through the database calculating the dirty data blocks. The calculation results are not correct. some of the data blocks are already marked as clean and Essbase does not recalculate them. Error Essbase performs the following processes: 1. Essbase should recalculate the data blocks.

Essbase should calculate all data blocks that include New York. Solution You can calculate the correct results by telling Essbase not to mark the calculated data blocks as clean. and only calculates the aggregations and formulas for the Product dimension. Because the calculation is based on the Product dimension. Calculating Data Blocks 401 . Essbase marks the calculated data blocks as clean. although within each block Essbase calculates only the aggregations and formulas for the Year dimension. FIX(“New York”) CALC DIM(Product). The second calculation script calculates the Year dimension: SET CLEARUPDATESTATUS AFTER. ENDFIX Essbase calculates the data blocks that include New York. unlike the SET CLEARUPDATESTATUS AFTER command. Essbase does not recalculate these data blocks with the second calculation script because the data blocks are already marked as clean. some of the data blocks for New York are already marked as clean. The calculation results are not correct. FIX(“New York”) CALC DIM(Year). The first calculation script calculates the Product dimension: SET CLEARUPDATESTATUS AFTER. Error As a result of the first calculation. New York -> Root Beer. Because of the CLEARUPDATESTATUS AFTER command. FIX(“New York”) CALC DIM(Product). The following calculation script calculates the correct results: SET CLEARUPDATESTATUS OFF. and New York -> Fruit Soda). even though not all data values in each calculated block have been calculated. ENDFIX Essbase calculates the data blocks that represent New York.Example 4: Two Separate Calculation Scripts This example calculates data values for New York but calculates based on two different dimensions using two separate calculation scripts. Because the calculation is based on the Year dimension. Essbase calculates dirty data blocks but does not to mark them as clean. New York -> Colas. ENDFIX SET CLEARUPDATESTATUS AFTER. Essbase calculates only the dirty blocks that include a parent member on the Product dimension (for example. FIX(“New York”) CALC DIM(Year). which is a dense dimension. ENDFIX With the SET CLEARUPDATESTATUS OFF command.

Product). use a calculation script to perform any of the following tasks: ● ● Disable Intelligent Calculation and calculate the member formula that has changed. Essbase does not restructure the database and does not mark the affected blocks as dirty. When you subsequently run a default calculation with Intelligent Calculation turned on. ENDFIX Because you have not used the SET CLEARUPDATESTATUS AFTER command.This solution assumes that the data blocks are not already marked as clean from a previous partial calculation of the database. The following calculation script calculates all specified data blocks. To recalculate the appropriate data blocks. Understanding the Effects of Intelligent Calculation Using Intelligent Calculation may have implications for the way you administer a database. You can ensure that all data blocks are calculated. Disable Intelligent Calculation and use the FIX command to calculate the appropriate subset of a database. Disable Intelligent Calculation and perform a default CALC ALL on a database. irrespective of their clean or dirty status: SET UPDATECALC OFF. This section discusses the implications of each of the following actions: ● ● ● ● ● “Changing Formulas and Accounts Properties” on page 402 “Using Relationship and Financial Functions” on page 403 “Restructuring Databases” on page 403 “Copying and Clearing Data” on page 403 “Converting Currencies” on page 403 Changing Formulas and Accounts Properties Because neither changing a formula in the database outline nor changing an accounts property in the database outline causes Essbase to restructure the database. For example. data blocks affected by such a change are not marked as dirty. Essbase does not mark calculated data blocks as clean. by disabling Intelligent Calculation. irrespective of their clean or dirty status. FIX(“New York”) CALC DIM(Year. ● 402 Understanding Intelligent Calculation . the changes are not calculated. if you change a time balance tag in the dimension tagged as accounts.

@PRIOR or @NEXT) or financial functions (for example. @ACCUM. Restructuring Databases When you restructure a database (for example. by adding a member to a dense dimension). Converting Currencies When you convert currencies using the CCONV command. or @INTEREST) in a formula on a sparse dimension or a dense dimension. Essbase calculates the block when you recalculate a database. all data blocks potentially need recalculating. See the Essbase Technical Reference. When you calculate the restructured database.Using Relationship and Financial Functions If you use relationship functions (for example. See “Changing Formulas and Accounts Properties” on page 402. all blocks are calculated. Essbase calculates all converted blocks when you recalculate a database. the resulting data block is marked as dirty. Note: Changing a formula in the database outline or changing an accounts property in the database outline does not cause Essbase to restructure the database. You must recalculate the appropriate data blocks. @NPV. Essbase marks all data blocks as dirty. Copying and Clearing Data When you copy values to a data block by using the DATACOPY command. Essbase clears all the blocks regardless of whether they are marked as clean or dirty. the resulting data blocks are marked as dirty. Essbase always recalculates the data block that contains the formula. When you clear data values by using the CLEARDATA and CLEARBLOCK commands. Understanding the Effects of Intelligent Calculation 403 . Therefore.

404 Understanding Intelligent Calculation .

...... and data blocks................... 421 Restructuring Databases ........................... 417 Using Dynamic Calculations with Standard Procedures.......... 407 Using Dynamic Calculation..................... 408 Choosing Values to Calculate Dynamically ...................................... instead of pre-calculating the member combinations during a batch database calculation. it may be more efficient to calculate some member combinations when you retrieve their data........................................ 405 Benefitting from Dynamic Calculation........ The information in this chapter assumes that you are familiar with the concepts of member combinations.............................. Understanding Dynamic Calculation When you design the overall database calculation................................................................................. 409 Choosing Between Dynamic Calc and Dynamic Calc and Store....... 422 This chapter explains how to calculate data values dynamically in block storage databases................................................... This definition tells Essbase to calculate a data value for the member as users request it........................................ Dynamic calculation shortens batch database calculation time............................................ you can define a member to have a dynamic calculation................................................................................. Understanding Dynamic Calculation 405 .............................25 In This Chapter Dynamically Calculating Data Values Understanding Dynamic Calculation .......................................................................................... 421 Dynamically Calculating Data in Partitions ... dense and sparse dimensions... See “Reducing the Impact on Retrieval Time” on page 417.....” Note: This chapter is not relevant to aggregate storage databases................................. See Chapter 3.............. Dynamically calculating some of the values in a database can significantly improve the performance of an overall database calculation........................................................................................... In Essbase.................. but may increase retrieval time for the dynamically calculated data values...... 414 Reducing the Impact on Retrieval Time ........ “Understanding Multidimensional Databases.. 412 Understanding How Dynamic Calculation Changes Calculation Order...................................... 420 Creating Dynamic Calc and Dynamic Calc and Store Members ...............................................................

however. If the data block needs recalculating. when you retrieve the data into Essbase Spreadsheet Add-in for Excel or Smart View. it recalculates the value for each subsequent retrieval. See “Data Blocks and the Index System” on page 62. in the same way as for a Dynamic Calc member. Instead. Essbase detects the need and places an indicator on the data block when any of the following situations occur: ● You perform a batch calculation. 406 Dynamically Calculating Data Values . Recalculation of Data When Essbase detects that the data value for a Dynamic Calc and Store member needs recalculating. Understanding Dynamic Calc and Store Members Essbase calculates the data value for a member that is tagged as Dynamic Calc and Store when you retrieve the data. Essbase stores the data value that is calculated dynamically. Essbase places the indicator on the data block containing the value and not on the data value itself. so that Essbase knows to recalculate the block on the next retrieval of the data value. it places an indicator on the data block that contains the value. Essbase calculates the data value upon retrieval (for example. For a Dynamic Calc and Store member. Essbase calculates a data value dynamically when you request the data value in either of two ways: ● ● By retrieving the data value into Essbase Spreadsheet Add-in for Excel or Smart View By running a report script that displays the data value Essbase does not store the calculated value. meaning Essbase tracks Dynamic Calc and Store members at the data block level. Essbase does not calculate its data value during a batch database calculation (for example. Subsequent retrievals of that data value do not require recalculation.) Specifically. unless Essbase detects that the value needs recalculating.In Essbase you specify dynamic calculations on a per-member basis. during a CALC ALL). You can define a member in the database outline as one of two types of a dynamically calculated member: ● ● Dynamic Calc Dynamic Calc and Store See these topics: ● ● ● “Understanding Dynamic Calc Members” on page 406 “Understanding Dynamic Calc and Store Members” on page 406 “Retrieving the Parent Value of Dynamically Calculated Child Values” on page 407 Understanding Dynamic Calc Members For a member tagged as Dynamic Calc.

You do a Lock and Send from Essbase Spreadsheet Add-in for Excel. you need to perform a batch calculation of the database or use the CLEARBLOCK DYNAMIC calculation command to ensure that the Dynamic Calc and Store members are recalculated. By calculating some data values dynamically. even if they are Dynamic Calc and Store members. However. The parent member is recalculated only during the next batch calculation. If you load data into the children of a Dynamic Calc and Store member. Essbase does not store the child values. Benefitting from Dynamic Calculation 407 . You use the CLEARBLOCK DYNAMIC calculation command. Essbase calculates East and West. and the member is a consolidation of its child members. Essbase must dynamically calculate the child member combinations before calculating the parent value. Benefitting from Dynamic Calculation Dynamically calculating some database values can significantly improve the performance of an overall database calculation. Essbase does not know to recalculate the Dynamic Calc and Store member during the next retrieval. Retrieving the Parent Value of Dynamically Calculated Child Values If you retrieve a parent value that is calculated from Dynamic Calc or Dynamic Calc and Store child members. After loading data.● ● You restructure the database. assume that Market is a parent member and that East and West are Dynamic Calc and Store child members that consolidate up to Market. you reduce: ● Batch calculation time of the database because Essbase has fewer member combinations to calculate. Essbase does not store the values of East or West. See the Essbase Technical Reference. Essbase recalculates the indicated data blocks when you next retrieve the data value. Consider the following two scenarios: ● ● You do a data load. Effect of Updated Values on Recalculation Because Essbase does not detect that a data block needs recalculating and does not place an indicator on the data block when you update the data. even though you have not specifically retrieved them. updated blocks are recalculated only during the next batch calculation. See the Essbase Technical Reference. When you retrieve a data value for Market. For example.

For example. Figure 125 Sample Basic Outline Showing Dynamic Calc Members In Essbase Spreadsheet Add-in for Excel or Smart View. See “Restructuring Databases” on page 421. Essbase takes less time to perform a backup. Using Dynamic Calculation You can tag any member as Dynamic Calc or Dynamic Calc and Store. spreadsheet designers may want to use the spreadsheet Navigate Without Data option. When developing spreadsheets that include dynamically calculated values. 408 Dynamically Calculating Data Values . The time that is required to back up the database. You can estimate the retrieval time for dynamically calculated members. Outline Editor shows which members are Dynamic Calc and which members are Dynamic Calc and Store. Because database size is reduced. See “Choosing Values to Calculate Dynamically” on page 409.● Disk usage because Essbase stores fewer calculated data values. Database size and index size are also reduced. except the following members: ● ● ● Level 0 members that do not have a formula Label-Only members Shared members Which members you choose to calculate dynamically depends on the database structure and on the balance between (1) the need for reduced calculation time and disk usage and (2) the need for speedy data retrieval for users. adding or deleting a Dynamic Calc member in a dense dimension does not change the data block size. and so Essbase does not need to restructure the database for such additions and deletions. See the Essbase Spreadsheet Add-in for Excel Online Help and the Hyperion Smart View for Office Online Help. ● ● Data values that Essbase calculates dynamically can take longer to retrieve. users can display visual cues to distinguish dynamically calculated values. Database restructure time. so that Essbase does not dynamically calculate and store values while test spreadsheets are being built. See “Reducing the Impact on Retrieval Time” on page 417.

A complex formula requires Essbase to perform an expensive calculation. For example. ● Do not tag members of dense dimensions as Dynamic Calc and Store. Formulas containing. Use the guidelines described in the following sections when deciding which members to calculate dynamically: ● ● ● ● ● ● ● ● “Dense Members and Dynamic Calculation” on page 409 “Sparse Members and Dynamic Calculation” on page 409 “Two-Pass Members and Dynamic Calculation” on page 410 “Parent-Child Relationships and Dynamic Calculation” on page 410 “Calculation Scripts and Dynamic Calculation” on page 410 “Formulas and Dynamically Calculated Members” on page 410 “Dynamically Calculated Children” on page 411 “Choosing Between Dynamic Calc and Dynamic Calc and Store” on page 412 Dense Members and Dynamic Calculation Consider making the following changes to members of dense dimensions: ● ● Tag upper level members of dense dimensions as Dynamic Calc. See “Using Complex Formulas” on page 880. Try tagging level 0 members of dense dimensions with simple formulas as Dynamic Calc. and reduces database restructure time. financial functions or cross-dimensional operators (->) are complex formulas. lowers disk usage. any formula that contains a financial function is a complex formula. Sparse Members and Dynamic Calculation Consider making the following changes to members of sparse dimensions: ● Tag some upper level members of sparse dimensions that have six or fewer children as Dynamic Calc or Dynamic Calc and Store. for example. ● ● Tag upper level members in a dimension that you frequently restructure as Dynamic Calc or Dynamic Calc and Store. Choosing Values to Calculate Dynamically 409 . and assess the increase in retrieval time. Simple formulas do not require Essbase to perform an expensive calculation. but increases retrieval time for dynamically calculated data values. Tag sparse-dimension members with complex formulas as Dynamic Calc or Dynamic Calc and Store.Choosing Values to Calculate Dynamically Dynamically calculating some data values decreases calculation time.

the calculation script fails. If you specify a Dynamic Calc or Dynamic Calc and Store member explicitly in a calculation script. However. For information about the interaction of members tagged as two-pass and attribute members. sparse-dimension members that have 20 or more descendants as Dynamic Calc or Dynamic Calc and Store. even if the member is not on an accounts dimension. see “Comparing Attribute and Standard Dimensions” on page 157. if Qtr1 is a Dynamic Calc member.● Do not tag upper level. you can place the following formula on Qtr1 in the database outline: 410 Dynamically Calculating Data Values . you must also tag the parent as Dynamic Calc. if a member set function (for example. do not tag the member as Dynamic Calc. Similarly. Colas) Qtr1. For example. Essbase bypasses the calculation of any Dynamic Calc or Dynamic Calc and Store members in the resulting list. Parent-Child Relationships and Dynamic Calculation If a parent member has a single child member and you tag the child as Dynamic Calc. if you tag the child as Dynamic Calc and Store. For example. you must tag also the parent as Dynamic Calc and Store. ENDFIX Formulas and Dynamically Calculated Members You can include a dynamically calculated member in a formula when you apply the formula to the database outline. you do not have to tag the child as Dynamic Calc or Dynamic Calc and Store. tag two-pass members as Dynamic Calc. it bypasses the calculation of Dynamic Calc and Dynamic Calc and Store members. Similarly. If you want to use a calculation script to calculate a member explicitly. See “Using Two-Pass Calculation” on page 889. You can tag any Dynamic Calc or Dynamic Calc and Store member as two-pass. Two-Pass Members and Dynamic Calculation To reduce the amount of time needed to perform batch calculations. You cannot do a calculation script calculation of a Dynamic Calc or Dynamic Calc and Store member. the following calculation script is valid only if Qtr1 is not a Dynamic Calc member: FIX (East. if a parent member has a single child member and the parent is a Dynamic Calc or Dynamic Calc and Store member. @CHILDREN or @SIBLINGS) is used to specify the list of members to calculate. Calculation Scripts and Dynamic Calculation When Essbase calculates a CALC ALL or CALC DIM statement in a calculation script. See “Choosing Between Dynamic Calc and Dynamic Calc and Store” on page 412.

it must consolidate the values of its children. Therefore. Year. Essbase has to calculate the child members first during the batch database calculation in order to calculate the parent. Its parent. you can use the following formula in a calculation script: Year = Qtr1 + Qtr2. For example. See the Essbase Technical Reference. Dynamically Calculated Children If the calculation of a member depends on the calculation of Dynamic Calc or Dynamic Calc and Store child members. Choosing Values to Calculate Dynamically 411 . If a script contains any runtime dependent formulas. if Qtr1 is a Dynamic Calc or Dynamic Calc and Store member. If Qtr1 is a Dynamic Calc or Dynamic Calc and Store member and Year is neither Dynamic Calc nor Dynamic Calc and Store. there is no reduction in regular calculation time. therefore. This requirement applies to members of sparse dimensions and members of dense dimensions. Feb. Scripts and Dynamically Calculated Members The preprocessing phase of a calculation script cannot determine if an outline contains dense Dynamic Calc members. Its children. and Mar. This formula is valid because Essbase is not assigning a value to the dynamically calculated member. For example. Essbase displays a syntax error if you include the following formula in a calculation script: Qtr1 = Jan + Feb. Essbase does not reserve memory space for a dynamically calculated value and. Essbase must calculate all dense Dynamic Calc members when the script is executed. Using the SET FRMLRTDYNAMIC OFF calculation command improves performance by stopping calculation of these Dynamic Calc members. Note: When you reference a dynamically calculated member in a formula in the database outline or in a calculation script. This interruption can significantly lower calculation performance. including Qtr1. You cannot make a dynamically calculated member the target of a formula calculation in a calculation script. it must take the additional time to calculate Qtr1 even though Qtr1 is a Dynamic Calc member. When Essbase calculates Year during a batch database calculation. are not dynamic members. in the following outline. cannot assign a value to it. Qtr1 is a Dynamic Calc member.Qtr1 = Jan + Feb. is not a dynamic member. Therefore. Jan. Essbase interrupts the regular calculation to do the dynamic calculation.

412 Dynamically Calculating Data Values . If Essbase needs to calculate any intermediate data blocks in order to calculate the requested data blocks. Thus. Essbase needs to calculate and store the whole data block. even if the requested data values are a subset of the data block. Showing Qtr1 as a Dynamic Calc Member Choosing Between Dynamic Calc and Dynamic Calc and Store In most cases. For example. and Central -> Cola. Essbase calculates the intermediate data blocks—East -> Cola. However. See these topics: ● ● ● ● “Recommendations for Sparse Dimension Members” on page 412 “Recommendations for Members with Specific Characteristics” on page 413 “Recommendations for Dense Dimension Members” on page 413 “Recommendations for Data with Many Concurrent Users” on page 413 Recommendations for Sparse Dimension Members In most cases. tag the member as Dynamic Calc instead of Dynamic Calc and Store. using Dynamic Calc and Store members is optimal. the calculation takes longer and the initial retrieval time is greater. Calculating the intermediate data blocks can significantly increase the initial retrieval time. These values can be a subset of the data block. Essbase stores only the data blocks that contain the requested data values. West -> Cola. Essbase calculates only the requested values of the relevant data block. When a user retrieves the data value for the member combination Market -> Cola -> Jan -> Actual -> Sales. Market and Product are the sparse dimensions. it does not store the intermediate blocks. when you want to calculate a sparse dimension member dynamically. Essbase does not store these intermediate data blocks. Assume that Market and the children of Market are Dynamic Calc and Store members. However. when Essbase calculates data values for a member combination that includes a Dynamic Calc and Store member. Essbase calculates and stores the Market -> Cola data block. In order to calculate and store Market -> Cola. in specific situations. in the Sample Basic database. South -> Cola.Figure 126 Sample Basic Outline. When Essbase calculates data values for a member combination that includes a Dynamic Calc member. you can optimize calculation performance and lower disk usage by using Dynamic Calc members instead of Dynamic Calc and Store members.

subsequent retrievals are faster than for Dynamic Calc members. Choosing Between Dynamic Calc and Dynamic Calc and Store 413 . Essbase needs to retrieve the value from the remote database. speedy retrieval time is very important. you probably want to tag Market as Dynamic Calc and Store and its children as Dynamic Calc. ● If users frequently retrieve an upper level member of a sparse dimension.Recommendations for Members with Specific Characteristics Using Dynamic Calc and Store may slow initial retrieval. if most users retrieve data at the Market level. For example. in the Sample Basic database. Dynamic Calc and Store member retrieval time increases as the number of concurrent user retrievals increases. However. which increases retrieval time. If many users are concurrently retrieving Essbase data. ● A sparse dimension member with a complex formula. Market is Dynamic Calc and Store Member Recommendations for Dense Dimension Members Use Dynamic Calc members for dense dimension members. For example. If many users are concurrently accessing data. Defining members as Dynamic Calc and Store on a dense dimension provides only a small decrease in retrieval time and in batch calculation time. Recommendations for Data with Many Concurrent Users Use Dynamic Calc members for data with concurrent users. any formula that contains a financial function or a cross-dimensional member is a complex formula. Use Dynamic Calc and Store instead of Dynamic Calc for the following members: ● An upper-level sparse dimension member with children on a remote database. you may see significantly lower retrieval times if you use Dynamic Calc members instead of Dynamic Calc and Store members. See “Dynamically Calculating Data in Partitions” on page 422. Figure 127 Sample Basic Outline. In addition. Dynamic Calc member retrieval time does not increase as concurrent user retrievals increase. database size (disk usage) does not decrease significantly because Essbase reserves space in the data block for the data values of the members. A complex formula requires Essbase to perform an expensive calculation. the initial retrieval time for Dynamic Calc and Store members can be significantly higher than for Dynamic Calc members. however.

Dimension tagged as time. the use of attribute members in your query causes Essbase to disregard the value of the Time Balance member in the dynamic calculations. Two-pass calculations See Chapter 23.Understanding How Dynamic Calculation Changes Calculation Order Using dynamically calculated data values changes the order in which Essbase calculates the values and can have implications for the way you administer a database. Time series calculations d. if dense c. Dimension tagged as accounts 2. the last step in the calculation order is the summation of the attributes. Other sparse dimensions (in the order they appear in the database outline) 5. “Defining Calculation Order. During batch calculations. Remaining dense dimensions e. Essbase calculates the database in the following order: 1. Dimension tagged as accounts. on retrieval. Dense dimensions a. Dimension tagged as time 3. Essbase calculates the values by calculating the database in the following order: 1.” For dynamically calculated values. Attributes If your data retrieval uses attribute members. Sparse dimensions ● If the dimension tagged as time is sparse and the database outline uses time series data. it calculates the data in an order that is different from the batch database calculation order. Otherwise. Essbase bases the calculation on the dimension that it normally uses for a batch calculation. However. Two-pass calculations f. See these topics: ● ● ● “Calculation Order for Dynamic Calculation” on page 414 “Calculation Order for Dynamically Calculating Two-Pass Members” on page 415 “Calculation Order for Asymmetric Data” on page 415 Calculation Order for Dynamic Calculation When Essbase dynamically calculates data values. During retrievals 414 Dynamically Calculating Data Values . Other dense dimensions (in the order they appear in the database outline) 4. ● 2. if dense b. Essbase bases the sparse calculation on the time dimension.

Essbase performs the dynamic calculation in the first pass. Calculation Order for Dynamically Calculating Two-Pass Members Consider the following information to ensure that Essbase produces the required calculation result when it dynamically calculates data values for members that are tagged as two-pass (see “Using Two-Pass Calculation” on page 889). Two-pass members in the remaining dense dimensions in the order in which the dimensions appear in the outline For example. and then calculates the two-pass members in the following order: 1. So. in some database outlines you may get different calculation Understanding How Dynamic Calculation Changes Calculation Order 415 . if any exist 3. if any exist 2. During retrievals that do not use attributes. Two-pass members in the time dimension. If more than one Dynamic Calc or Dynamic Calc and Store dense dimension member is tagged as two-pass. Essbase calculates Margin% (from the Measures dimension) and then calculates Variance (from the Scenario dimension). If Scenario is a sparse dimension. You can avoid this problem by making Scenario a dense dimension. However.that do not use attributes. assume the following: ● Margin% in the dense Measures dimension (the dimension tagged as accounts) is tagged as both Dynamic Calc and two-pass. predictable results for upper level time members that are dynamically calculated. the value of the Time Balance member is applied to the calculations. Two-pass members in the accounts dimension. during retrievals that do use attributes. Essbase then calculates Margin%. ● Essbase calculates the accounts dimension member first. following the regular calculation order for dynamic calculations. See “Calculation Order for Dynamic Calculation” on page 414. because Essbase still calculates Margin% first. The difference in calculation order produces two different. apply the time balance functionality properly. This calculation order does not produce the required result because Essbase needs to calculate Margin % -> Variance using the formula on Margin %. Essbase calculates Variance first. the summation of the attribute is the last step applied. This problem does not occur if the Measures dimension (the accounts dimension) is sparse. Variance in the dense Scenario dimension is tagged as both Dynamic Calc and two-pass. The difference in calculation procedure between the use and non-use of attribute members generates different results for any upper level time members that are dynamically calculated. Calculation Order for Asymmetric Data Because the calculation order used for dynamic calculations differs from the calculation order used for batch database calculations. in the Sample Basic database. therefore. these dynamically calculated members are calculated in the last step and. and not the formula on Variance.

Feb. Calculating along the Market dimension. subtract Qtr1 -> COGS from Qtr1 -> Sales: 600–300=300 Asymmetric data calculations calculate differently along different dimensions. adding the values for New York.results if you tag certain members as Dynamic Calc or Dynamic Calc and Store. Using the following data set: Table 26 Example of a Symmetric Calculation Jan 100 50 50 Feb 200 100 100 Mar 300 150 150 Qtr1 600 300 300 Time -> Accounts Sales COGS Profit (Sales – COGS) The calculation for Qtr1-> Profit produces the same result whether you calculate along the dimension tagged as time or the dimension tagged as accounts. East is a sparse dimension. multiplying the value East -> Price by the value East -> UnitsSold produces incorrect results: 15*50=750 In the following outline. add the values for Jan. and Accounts is a dense dimension: 416 Dynamically Calculating Data Values . Symmetric data calculations produce the same results no matter which dimension is calculated. and Connecticut produces the correct results: 50+100+100=250 Calculating along the accounts dimension. Using the following data set: Table 27 Example of an Asymmetric Calculation New York 10 5 50 Florida 20 5 100 Connecticut 20 5 100 East 50 15 250 Market -> Accounts UnitsSold Price Sales (Price * UnitsSold) The calculation for East -> Sales produces the correct result when you calculate along the Market dimension. Florida. Calculating along the time dimension. and Mar: 50+100+150=300 Calculating along the accounts dimension. These differences happen when Essbase dynamically calculates asymmetric data. but produces an incorrect result when you calculate along the accounts dimension.

and Connecticut 2. The increase in retrieval time may be significant when you tag members of sparse dimensions as Dynamic Calc or Dynamic Calc and Store. Sparse East dimension—aggregating the calculated values for UnitsSold.If East and Sales are tagged as Dynamic Calc. Florida. and Sales for New York. and Sales for New York. Essbase calculates a different result than it does if East and Sales are not tagged as Dynamic Calc. Price. see “Choosing Between Member Set Functions and Performance” on page 897. Essbase produces the correct result by calculating the: 1. Dense Accounts dimension—calculating the values for UnitsSold. do not tag the Sales member as Dynamic Calc or Dynamic Calc and Store. Price. Essbase produces an incorrect result by calculating the: 1. Sparse East dimension—aggregating the values for UnitsSold. The following sections discuss ways you can analyze and manage the effect of Dynamic Calc members on a database: ● ● ● ● ● “Displaying a Retrieval Factor” on page 418 “Displaying a Summary of Dynamically Calculated Members” on page 418 “Increasing Retrieval Buffer Size” on page 419 “Using Dynamic Calculator Caches” on page 419 “Reviewing Dynamic Calculator Cache Usage” on page 419 Note: For a list of functions that have the most significant effect on query retrieval. Reducing the Impact on Retrieval Time 417 . Price. Values for East -> Sales—taking the aggregated values in the East data blocks and performing a formula calculation with these values to obtain the value for Sales To avoid this problem and ensure that you obtain the required results. Reducing the Impact on Retrieval Time The increase in retrieval time when you dynamically calculate a member of a dense dimension is not significant unless the member contains a complex formula. and Connecticut to obtain the values for East 2. Florida. Florida. and Connecticut to obtain the Sales values for East If East and Sales are Dynamic Calc members. If East and Sales are not Dynamic Calc members. and Sales for New York.

It does not consider the retrieval impact of formulas. An outline with a high retrieval factor (for example. see “Viewing the Essbase Server and Application Logs” on page 737. Displaying a Summary of Dynamically Calculated Members When you add Dynamic Calc or Dynamic Calc and Store members to a database outline and save the outline. If the database has Dynamic Calc or Dynamic Calc and Store members in dense dimensions only (no Dynamic Calc or Dynamic Calc and Store members in sparse dimensions). Essbase displays the summary in the application log. Dynamic Time Series members are included in this count. The retrieval factor takes into account only aggregations. and two in the fifth dimension. the actual impact on retrieval time also depends on how many dynamically calculated data values a user retrieves. ➤ To view an estimated retrieval factor. greater than 2000) can cause long delays when users retrieve data. 418 Dynamically Calculating Data Values . However. Essbase displays the retrieval factor value in the application log. In some applications. ➤ To view a summary of dynamically calculated members. Essbase calculates a retrieval factor for a database outline when you save the outline. The retrieval factor is the number of data blocks that Essbase must retrieve from disk or from the database in order to calculate the most expensive block. six in the second dimension. using Dynamic Calc members may reduce retrieval time because the database size and index size are reduced. Essbase calculates this retrieval factor based on the dynamically calculated data block that is the most expensive for Essbase to calculate. A message similar to this sample indicates a retrieval factor: [Wed Sep 20 20:04:13 2000] Local/Sample///Info (1012710) Essbase needs to retrieve [1] Essbase kernel blocks in order to calculate the top dynamically-calculated block. see “Viewing the Essbase Server and Application Logs” on page 737. A message similar to this sample is displayed: [Wed Sep 20 20:04:13 2000]Local/Sample///Info(1007125) The number of Dynamic Calc Non-Store Members = [ 8 6 0 0 2] [Wed Sep 20 20:04:13 2000]Local/Sample///Info(1007126) The number of Dynamic Calc Store Members = [ 0 0 0 0 0] This message tells you that there are eight Dynamic Calc members in the first dimension of the database outline. The retrieval factor is only an indicator. the retrieval factor is 1. This message tells you that Essbase needs to retrieve one block in order to calculate the most expensive dynamically calculated data block. Essbase provides a summary of how many members are tagged as Dynamic Calc and Dynamic Calc and Store.Displaying a Retrieval Factor To help you estimate any increase in retrieval time.

the retrieval buffer size is 10 KB. Increasing Retrieval Buffer Size When you retrieve data into Essbase Spreadsheet Add-in for Excel or use Report Writer to retrieve data. Increasing the retrieval buffer size can significantly reduce retrieval time because Essbase can process larger sections of data at one time. Using the Essbase dynamic calculator cache enables centralized control of memory usage for dynamic calculations. See “Setting the Retrieval Buffer Size” on page 905. use a tool: Tool Administration Services MaxL ESSCMD Topic Setting the Size of Retrieval Buffers alter database SETDBSTATEITEM Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Using Dynamic Calculator Caches By default. Managing data blocks in the dynamic calculator cache also reduces the overall memory space requirement and can improve performance by reducing the number of calls to the operating system to do memory allocations. the first message describes the total amount of time required for the retrieval: [Thu Aug 03 14:33:00 2005]Local/Sample/Basic/aspen/Info(1001065) Reducing the Impact on Retrieval Time 419 . Essbase processes the data in sections. for a query). However. In the following example. you may speed up retrieval time if you set the retrieval buffer size greater than 10 KB. Reviewing Dynamic Calculator Cache Usage Essbase writes two messages to the application log for each data retrieval. it writes all blocks needed for the calculation into an area in memory called the dynamic calculator cache. See “Sizing the Calculator Cache” on page 834. ➤ To set the retrieval buffer size. Note: The dynamic calculator cache and the calculator cache use different approaches to optimizing calculation performance. when Essbase calculates a Dynamic Calc member in a dense dimension (for example. Essbase uses the retrieval buffer to optimize the retrieval. By default.This example does not include Dynamic Calc and Store members. it expands them to include all Dynamic Calc members in the dense dimensions. When Essbase writes these blocks into the dynamic calculator cache.

531] seconds [Thu Aug 03 14:33:00 2005]Local/Sample/Basic/aspen/Info(1001401) Regular Extractor Big Blocks Allocs -. See “Effect of Updated Values on Recalculation” on page 407. ● Converting currencies You cannot specify a Dynamic Calc or Dynamic Calc and Store member as the target for the CCONV command.Cache : [0] If a dynamic calculator cache is used. you need to ensure that Essbase recalculates Dynamic Calc and Store members.Calc. The CLEARDATA command has no effect on data values for Dynamic Calc members.Calc. If the specified maximum size is all that you can afford for all dynamic calculator caches on the server and if using memory outside the calculator cache to complete dynamically calculated retrievals results in unacceptable delays (for example. so that Essbase knows to recalculate the blocks. ● Exporting data 420 Dynamically Calculating Data Values . To determine if the dynamic calculator cache is being used effectively. a second message displays the number of blocks calculated within the data calculator cache (Dyn. if the message indicates that blocks were calculated outside and in a dynamic calculator cache.Regular Extractor Elapsed Time : [0.Cache: [n]) and the number of blocks calculated in memory outside dynamic calculator cache (non-Dyn. You can use the CLEARDATA command to mark Dynamic Calc and Store data blocks.Calc.Calc. after loading data.Cache : [30] non-Dyn. See the Essbase Technical Reference. To place data into Dynamic Calc and Dynamic Calc and Store members. ● Loading data When you load data.Dyn. ● Copying data You cannot copy data to a dynamically calculated data value. review both of these messages and consider what your settings are in the essbase. set DYNCALCCACHEWAITFORBLK to TRUE. Essbase skips these members during data load and does not display an error message. For example. You cannot specify a Dynamic Calc or Dynamic Calc and Store member as the target for the DATACOPY calculation command. you may need to increase the DYNCALCCACHEMAXSIZE setting.Cache: [n]). You can use the GETPERFSTATS command in ESSCMD to view a summary of dynamic calculator cache activity.cfg file. Using Dynamic Calculations with Standard Procedures Using dynamic calculations with standard Essbase procedures affects these processes: ● Clearing data and data blocks You can use the CLEARBLOCK DYNAMIC command to remove data blocks for Dynamic Calc and Store member combinations. Essbase does not load data into member combinations that contain a Dynamic Calc or Dynamic Calc and Store member. because of swapping or paging activity).

therefore. See “Using the Data Source to Work With Member Properties” on page 259. or move a dense dimension Dynamic Calc member. Essbase does reserve space in the relevant data blocks for the member’s values and. Essbase does not need to restructure the database. ● Including dynamic members in calculation scripts When calculating a database. Essbase skips the calculation of any Dynamic Calc or Dynamic Calc and Store members. ➤ To create Dynamic Calc and Dynamic Calc and Store members during a dimension build. When you add a Dynamic Calc or a Dynamic Calc and Store member to a sparse dimension. use the property X for Dynamic Calc and the property V for Dynamic Calc and Store.Essbase does not calculate dynamically calculated values before exporting data. See “Index Manager” on page 755. Creating Dynamic Calc and Dynamic Calc and Store Members 421 . in the dimension build data file. when you add a Dynamic Calc and Store member to a dense dimension. See the <SPARSE command in the Essbase Technical Reference. needs to restructure the database. delete. Essbase displays an error message if you attempt to do a member calculation of a Dynamic Calc or Dynamic Calc and Store member in a calculation script. In the following cases. Therefore. Essbase updates the index but does not change the relevant data blocks. which is very fast): ● Add. ● Reporting data Essbase cannot use the SPARSE data extraction method for dynamically calculated members. Essbase does not export values for Dynamic Calc members. See “Calculation Scripts and Dynamic Calculation” on page 410. Creating Dynamic Calc and Dynamic Calc and Store Members ➤ To create Dynamic Calc and Dynamic Calc and Store members using Outline Editor. However. Essbase exports values for Dynamic Calc and Store members only if a calculated value exists in the database from a previous user retrieval of the data. see “Setting Member Storage Properties” in the Essbase Administration Services Online Help. Essbase does not reserve space in the data block for the member’s values. Restructuring Databases When you add a Dynamic Calc member to a dense dimension. The SPARSE data extraction method optimizes performance when a high proportion of the reported data rows are #MISSING. Essbase does not restructure the database nor changes the index (Essbase only has to save the database outline. Essbase can save changes to the database outline significantly faster if it does not have to restructure the database.

Essbase restructures the database: ● Add. ● ● In the following cases. or move sparse dimension Dynamic Calc or Dynamic Calc and Store members. delete. Change a dense dimension Dynamic Calc member to a Dynamic Calc and Store member. the impact on subsequent retrieval time might be too great. South. Change the storage property of a sparse dimension Dynamic Calc or Dynamic Calc and Store member to a non-dynamic storage property. Change the storage property of a non-dynamic member in a dense dimension to Dynamic Calc. See Chapter 13. ● ● See “Types of Database Restructuring” on page 846. delete. West. because Essbase retrieves child values from the other database. and Central. You can use Dynamic Calc instead of Dynamic Calc and Store. or linked regions of the partitions. Dynamically Calculating Data in Partitions You can define Dynamic Calc and Dynamic Calc and Store members in transparent. sparse dimension member with children that are on a remote database (transparent database partition) as Dynamic Calc and Store. retrieval time is increased.Essbase does restructure the database if the member is Dynamic Calc and Store. replicated. ● ● ● Change a dense dimension Dynamic Calc and Store member to a Dynamic Calc member. Essbase does not restructure the database if the member is Dynamic Calc. For example. Essbase does not restructure the database but does restructure the database index (restructuring the index is significantly faster than restructuring the database): ● ● Add. assume that the local database is the Corporate database. if a member is tagged as Dynamic Calc in the local 422 Dynamically Calculating Data Values . For example. Rename any Dynamic Calc or Dynamic Calc and Store member. “Designing Partitioned Applications”. however. Change the storage property of a non-dynamic member in a sparse dimension Dynamic Calc or Dynamic Calc and Store. or move a dense dimension Dynamic Calc and Store member. ● Change the storage property of a dense dimension member from Dynamic Calc and Store member to a non-dynamic storage property. In a transparent partition. Change the storage property of a dense dimension member from a non-dynamic value to Dynamic Calc and Store. For example. the definition on the remote database takes precedence over any definition on the local database. which has transparent partitions to the regional data for East. You can tag the parent member Market as Dynamic Calc and Store. If you tag an upper level. In the following cases. Change the storage property of a dense dimension from Dynamic Calc member to a nondynamic value.

Essbase does not retrieve the child blocks from the remote database and. therefore. data blocks and time stamps do not exist. However. Essbase always replicates dynamically calculated data. Note: When Essbase replicates data. consider using Dynamic Calc members instead of Dynamic Calc and Store members. If the source data block is more recent. Dynamically Calculating Data in Partitions 423 . for dynamically calculated data. Essbase retrieves the value from the remote database and does not do the local calculation. the impact on retrieval time is not great. If you are using a replicated partition. Therefore. When calculating replicated data. Essbase replicates the data in the data block.database but not in the remote database. it checks the time stamp on each source data block and each corresponding target data block.

424 Dynamically Calculating Data Values .

you must have a dimension tagged as accounts and a dimension tagged as time. you can use accounts tags. the Opening Inventory member in the Measures dimension (the accounts dimension) has a time balance property of First........................ You use the First................... Last.. For example...... parent in the Essbase usually calculates a dimension tagged as time by consolidating or calculating the formulas on the parent’s children... You can also calculate period-to-date values... The dimensions you tag as time and accounts can be either dense or sparse dimensions...... if you tag a parent member in the accounts dimension with a time balance property of First.. you can tell Essbase how to perform time balance calculations on accounts data....... This chapter includes the following sections: Calculating First...... Last............. you can do inventory tracking by calculating the first and last values for a specific time period.... and Average Values 425 .............. 433 This chapter explains how to calculate time series data in block storage databases. For example.......... This member represents the inventory at the beginning of the time period...... For example. 429 Using Dynamic Time Series Members in Transparent Partitions.. and Average tags (time balance properties) and the Expense tag (variance reporting property) only on members of a dimension tagged as accounts.. If the time period is Qtr1..... Last................. Last. Opening Inventory represents the inventory available at the beginning of Jan (the first member in the Qtr1 branch).. 425 Calculating Period-to-Date Values............... and Average Values .. to consolidate a different kind of value........26 In This Chapter Calculating Time Series Data Calculating First........ such as time balance and variance reporting tags...... However............................................ Essbase calculates the member by consolidating the value of the member’s first child. To use accounts tags.......... Calculating First...... and Average Values Using time balance and variance reporting tags on the dimension tagged as accounts....... Time series calculations assume that you have Dynamic Time Series members defined in the outline... in the Sample Basic database....

For example. see “Creating a Time Dimension” on page 132 and “Creating an Accounts Dimension” on page 132.Note: For cells of time balance account members. and the Year dimension is tagged as time. Reporting the Last Value for Each Time Period For an accounts dimension member. the member is. Specifying Accounts and Time Dimensions When you tag a dimension as accounts. Essbase knows that the dimension contains members with accounts tags. you can tell Essbase to move the last value for each time period up to the next level. a member in any dimension other than the time dimension that is set with the ^ consolidation property is excluded from the Average calculation. changing accounts tags in the database outline does not cause Essbase to restructure the database. In the Sample Basic database. set the member’s time balance property as Last. the accounts member Ending Inventory consolidates the value for the last month in each quarter and uses that value for that month’s parent. To report the last value for each time period. Essbase knows that this dimension is the one on which to base the time periods for the accounts tags. For a discussion of how and why to perform a recalculation.) For example. You may have to tell Essbase explicitly to recalculate the required data values. 426 Calculating Time Series Data . however. the TB Last tag is displayed. in the Sample Basic database. the value for Qtr1 is the same as the value for Mar. the Measures dimension is tagged as accounts. Note: If you are using Intelligent Calculation. see “Changing Formulas and Accounts Properties” on page 402. When you tag a dimension as time. Figure 128 Sample Basic Outline Showing Accounts and Time Tags For information on tagging accounts and time dimensions. included in First and Last calculations. (In the database outline.

You can choose to skip these values. By default. By default.) For example. For a discussion of how and why to skip #MISSING values. see “Setting Time Balance Properties” on page 133. Essbase does not skip #MISSING or zero (0) values when calculating a parent value. Figure 130 Sample Basic Outline Showing First Tag For information on tagging an accounts member as First. and Average Values 427 . Essbase does not skip #MISSING or zero (0) values when calculating a parent value. (The tag displays as TB First in the database outline. For example. Reporting the First Value for Each Time Period For an accounts dimension member. set the member’s time balance property as First. For a discussion of how and why to skip #MISSING values. You can choose to skip these values. Last. see “Skipping #MISSING and Zero Values” on page 428. To report the first value for each time period. in the Sample Basic database. see “Setting Time Balance Properties” on page 133. you can tell Essbase to move the first value for each time period up to the next level. see “Skipping #MISSING and Zero Values” on page 428. Calculating First. the value for Qtr1 is the same as the value for Jan.Figure 129 Sample Basic Outline Showing Last Tag For information on tagging an accounts member as Last. the accounts member Opening Inventory consolidates the value of the first month in each quarter and uses that value for that month’s parent.

results of a calculation on an account with Average and Skip Missing is incorrect unless you use Dynamic Calc or Two Pass tags. set the member’s time balance property as Average. when it calculates the average. To report the average value for each time period. see “Setting Time Balance Properties” on page 133. By default. and Average tags on accounts dimension members. For example. Considering the Effects of First. You can override this default by setting a skip property. A calculation performed with Average and Skip None produces correct results because no data is skipped. regardless of whether the children have #MISSING or zero values. By default. You can tell Essbase to skip #MISSING and zero values. For example. Skipping #MISSING and Zero Values You can tell Essbase how to treat #MISSING and zero (0) values when doing time balance calculations. Essbase does not skip #MISSING or 0 (zero) values when calculating a parent value. For a discussion of how and why to skip #MISSING values. Essbase does not skip #MISSING or zero (0) values when it calculates a parent value. then Essbase consolidates the last non-missing child to the parent. does not contain any meaningful value. you can tell Essbase to average the values for Jan. Last. you can tell Essbase to average values across time periods and consolidate the average up to the next level. and Mar and then use that value for the Qtr1 value. Last.Reporting the Average Value for Each Time Period For an accounts dimension member. But because grandparents with children are consolidated by summing the averages. For information on tagging an accounts member as Average. For a discussion of how skip properties work. Thus. Consider the following example: Accounts -> Time Accounts Member (Last. see “Setting Skip Properties” on page 134. Feb. Essbase aggregates the child values and divides by the number of children. see “Skipping #MISSING and Zero Values” on page 428. A #MISSING value is a marker in Essbase that indicates that the data in this location does not exist. if you tag an accounts dimension member as Last and Skip Missing. and Average Tags The following table shows how Essbase consolidates the time dimension based on the time balance (TB) First. Accounts -> Time Accounts Member1 Jan 11 Feb 12 Mar 13 Qtr1 36 Value of Jan+Feb+Mar 428 Calculating Time Series Data . or was never entered. Skip Missing) Jan 60 Feb 70 Mar #MI Qtr1 70 Tagging an account as Average and Skip Missing may produce different results from tagging that account as Average and Skip None.

Any member formula that is placed on Qtr1 in the database outline is overwritten by this time balance calculation. Calculating Period-to-Date Values 429 . you enable a predefined Dynamic Time Series member and associate it with an appropriate generation number. See “Specifying Accounts and Time Dimensions” on page 426. Feb. In Essbase. when a user requests the values. Consider the following example from Sample Basic. For an example using the @PTD function to calculate period-to-date values. the quarter total is the total of the values for April and May. Instead. Using Dynamic Time Series members is the most efficient method in almost all cases. you need to use a Dynamic Time Series member for a period on the dimension tagged as time. see “Calculating Period-to-Date Values” on page 365. using Dynamic Time Series members This section explains how to use Dynamic Time Series members to dynamically calculate periodto-date values.Accounts -> Time Accounts Member2 (TB First) Accounts Member3 (TB Last) Accounts Member4 (TB Average) Jan 20 25 20 Feb 25 21 30 Mar 21 30 28 Qtr1 20 30 26 Value of Jan Value of Mar Average of Jan. You do not create the Dynamic Time Series member directly in the database outline. Calculating Period-to-Date Values You can calculate period-to-date values for data. using a standard calendar quarter. in which Opening Inventory is tagged as First: Measures -> Year Opening Inventory: First Jan 30000 Feb 28000 Mar 27000 Qtr1 30000 Because Opening Inventory is tagged as First. it may be overwritten by a time balance calculation. Essbase calculates Opening Inventory for Qtr1 by taking the Opening Inventory for Jan value. If the current month is May. Using Dynamic Time Series Members In order to calculate period-to-date values dynamically. you can calculate the sales values for the current quarter up to the current month. using the @PTD function Dynamically. For example. you can calculate period-to-date values in two ways: ● ● During a batch calculation. Mar Placing Formulas on Time and Accounts Dimensions If you place a member formula on a time or accounts dimension. This procedure creates a Dynamic Time Series member for you.

daily. the generation containing quarters is generation number 2. If the database contains monthly data for the past 5 years. irrespective of the data. If the database tracks data for seasonal time periods. Qtr3. Essbase creates a Dynamic Time Series member called QT-D and associates it with generation 2. H-T-D (history-to-date) and Q-T-D (quarter-to-date) are active.For example. you 430 Calculating Time Series Data . and Qtr4 members. see “Enabling Dynamic Time Series Members” on page 431. For a brief discussion. you can report period-to-date (P-T-D) or season-to-date (S-T-D) information. Dynamic Time Series members are not displayed as members in the database outline. Essbase lists the currently active Dynamic Time Series members in a comment on the time dimension. and year-to-date (Y-T-D) information. if the database contains hourly. The Q-T-D member calculates monthly values up to the current month in the quarter. if you want to calculate quarter-to-date values. weekly. For example. You can associate a Dynamic Time Series member with any generation in the time dimension except the highest generation number. quarterto-date (Q-T-D). up to a specific year. week-to-date (W-T-D). which contains the Qtr1. In Sample Basic. monthly. month-to-date (M-T-D). In the following outline. Instead. For example. H-T-D is associated with generation 1. you can report day-to date (D-T-D). you enable the Q-T-D member and associate it with the generation to which you want to apply the Dynamic Time Series member. if you choose. you can report year-to-date (Y-T-D) and history-to-date (H-T-D) information. Qtr2. quarterly. and yearly data. How many members you use and which members you use depends on the data and the database outline. Figure 131 Sample Basic Outline Showing Dynamic Time Series Essbase provides eight predefined Dynamic Time Series members: ● ● ● ● ● ● ● ● HTD (History-to-date) Y-T-D (Year-to-date) S-T-D (Season-to-date) P-T-D (Period-to-date) Q-T-D (Quarter-to-date) M-T-D (Month-to-date) W-T-D (Week-to-date) D-T-D (Day-to-date) These eight members provide up to eight levels of period-to-date reporting. Q-T-D is associated with generation 2.

If required. Enabling Dynamic Time Series Members To use Dynamic Time Series members. for the Q-T-D Dynamic Time Series member. Q-T-D) (Dynamic Calc) Disabling Dynamic Time Series Members To disable a Dynamic Time Series member. ➤ To enable Dynamic Time Series members. ➤ To disable Dynamic Time Series members. Skip Missing) to members set for dynamic calculations if you plan to use these members in Dynamic Time Series calculations. Calculating Period-to-Date Values 431 . you can specify aliases for Dynamic Time Series members. For a brief discussion. Doing so may retrieve incorrect values for the parent members in your accounts dimension. You cannot associate Dynamic Time Series members with the highest generation (level 0 members). Essbase Spreadsheet Add-in for Excel. see “Specifying Alias Names for Dynamic Time Series Members” on page 431. tell Essbase not to use the predefined member. see “Enabling Dynamic Time Series Members” in the Essbase Administration Services Online Help. You can then use the alias names to retrieve the Dynamic Time Series members in Smart View. Last. Specifying Alias Names for Dynamic Time Series Members You can specify alias names for predefined Dynamic Time Series members.can use the P-T-D member to report quarter-to-date information. you need to enable them. You cannot associate Dynamic Time Series members with level 0 members of the time dimension. or in a report. You can create up to eight alias names for each Dynamic Time Series member. After you enable Dynamic Time Series members in the database outline. Average. Note: We recommend you avoid assigning time balance properties (First. such as QtrToDate. see “Disabling Dynamic Time Series Members” in the Essbase Administration Services Online Help. Essbase adds a comment to the dimension tagged as time. Note: The number of generations displayed depends on the number of generations in the time dimension. the Year dimension from Sample Basic showing H-T-D and Q-T-D defined: Year Time (Active Dynamic Time Series Members: H-T-D. Essbase saves each alias name in the Dynamic Time Series alias table that you specify. for example.

see “Creating Aliases for Dynamic Time Series Members” in the Essbase Administration Services Online Help.➤ To create aliases for Dynamic Time Series members. Applying Predefined Generation Names to Dynamic Time Series Members When you enable a Dynamic Time Series member and associate it with a generation number. ➤ To display generation and level names. Essbase automatically creates and enables the corresponding Dynamic Time Series member for you. see “Setting Aliases” on page 143. The following table shows the Dynamic Time Series members and their corresponding generation names: Member H-T-D Y-T-D S-T-D P-T-D Generation Name History Year Season Period Member Q-T-D M-T-D W-T-D D-T-D Generation Name Quarter Month Week Day These member and generation names are reserved for use by Essbase. specify the latest period member name. Quarter contains quarterly data in the members Qtr1. in Sample Basic. see “Naming Generations and Levels” on page 147. you can create a generation name called Quarter for generation number 2. see “Naming Generations and Levels” in the Essbase Administration Services Online Help. For information on creating generation names. Essbase creates a predefined generation name for that generation number. Q-T-D(May) returns the quarter-to-date value by adding values for April and May. 432 Calculating Time Series Data . For example. This time period is known as the latest time period and must be a level 0 member on the time dimension. If you use one of these generation names to create a generation name on the time dimension. When you create the generation name Quarter. For information on specifying and displaying alias names. Place that name after the Dynamic Time Series member or alias name. Qtr2. Retrieving Period-to-Date Values When you retrieve a Dynamic Time Series member. and so on. Essbase creates and enables a Dynamic Time Series member called Q-T-D. you need to tell Essbase the time period up to which you want to calculate the period-to-date value. in Smart View or Essbase Spreadsheet Add-in for Excel. For example. ➤ Use the following methods to specify the latest time period: ● For a specific member.

The member-specific setting—for example. use one of the following methods to specify the latest time period: ❍ ❍ Use the <LATEST command in Report Writer.● For a retrieval. Q-T-D(May) displays the period-to-date value for May that is obtained by adding the values for Apr and May (8644 + 8929 = 17573).” Using Dynamic Time Series Members in Transparent Partitions 433 . and Chapter 14.cfg setting TARGETTIMESERIESOPT. Specify the Latest Time Period option in the Essbase Options dialog box in Essbase Spreadsheet Add-in for Excel. Q-T-D(May)—takes precedence over the <LATEST or Latest Time Series option setting. use the essbase. See TARGETTIMESERIESOPT in the Essbase Technical Reference. The following example shows Sample Basic data. “Creating and Maintaining Partitions. Figure 132 Spreadsheet Showing Period-To-Date Value for May Using Dynamic Time Series Members in Transparent Partitions To optimize query time across transparent partitions for outlines containing Dynamic Time Series members.

434 Calculating Time Series Data .

............................ Understanding Calculation Scripts 435 .....................csc extension. 455 This chapter explains how to develop and execute calculation scripts and how to use them to control the way Essbase calculates a block storage database............ which you may want to adapt for your own use. Note: This chapter is not relevant to aggregate storage databases.......... which may be used in calculation scripts or in an outline................... If you run a calculation script from Administration Services or from Smart View.. locking...... it is given a ............. “Reviewing Examples of Calculation Scripts..” For information about copying...................... it must have a ..... you can create calculation scripts by: ● ● ● Typing the contents of the calculation script directly into the text area of the script editor Using the UI features of the script editor to build the script Creating the script in the text editor and pasting the script text into Calculation Script Editor By default.............. and deleting calculation scripts................ “Developing Formulas....... 435 Understanding Calculation Script Syntax .. Understanding Calculation Scripts A calculation script contains a series of calculation commands... see “Using Essbase to Manage Artifacts” on page 712........... 442 Reviewing the Process for Creating Calculation Scripts .......... when you save a calculation script... renaming...... equations........27 In This Chapter Developing Calculation Scripts Understanding Calculation Scripts .................................csc extension. 437 Planning Calculation Script Strategy ......... It also provides some examples of calculation scripts.................” For information about developing formulas............... and formulas............. Using Calculation Script Editor in Administration Services Console................................. You use a calculation script to define calculations other than the calculations that are defined by the database outline..... Calculation scripts are text files..... see Chapter 21............ Also see Chapter 28....

for example. See “Copying Data” on page 447. ● ● Perform a currency conversion. See “About Calculation Script Editor” in the Essbase Administration Services Online Help. Essbase allows you to perform a default calculation (CALC ALL) or a calculation of your own choosing that you specify in a calculation script. Formulas in a calculation script override formulas in the database outline. See Chapter 12. Control how Essbase uses the Intelligent Calculation feature when calculating a database. For example. Use control of flow logic in a calculation. ● Force a recalculation of data blocks after you have changed a formula or an accounts property on the database outline. See “Declaring Data Variables” on page 440. For example. ● ● ● ● Define temporary variables for use in a database calculation. you can use MaxL or ESSCMD to run any text file as a calculation script. “Designing and Building Currency Conversion Applications. you can calculate part of a database or copy data values between members. Clear or copy data from specific members. For example. Market. the following calculation script calculates the Actual values in the Sample Basic database: FIX (Actual) CALC DIM(Year. Perform any two-pass calculation on a dimension without an accounts tag. ● ● Change the calculation order of the dense and sparse dimensions in a database. since a calculation script is basically a text file. See “Using Two-Pass Calculation” on page 889. Perform a complex calculation in a specific order or perform a calculation that requires multiple iterations through the data. You can design and run custom database calculations quickly by separating calculation logic from the database outline. Product). See “Calculating a Subset of a Database” on page 448. ENDFIX You can use a calculation script to specify exactly how you want Essbase to calculate a database. ● 436 Developing Calculation Scripts .However. you need to write a calculation script if you want to do any of the following tasks: ● Calculate a subset of a database.” ● Calculate member formulas that differ from formulas in the database outline. if you want to use the IF…ELSE… ENDIF or the LOOP…ENDLOOP commands. For example. Use an API interface to create a custom calculation dynamically. Measures. some two-pass calculations require a calculation script.

See Chapter 24. You can construct calculation scripts from commands and formulas. “Understanding Intelligent Calculation. ENDIF. you need to apply the following rules: ● End each formula or calculation script command with a semicolon (. See “About Calculation Script Editor” in the Essbase Administration Services Online Help. Computation. as shown in these examples. Measures).). the different elements of the script are color-coded to aid in script readability. Example 4: IF (Sales <> #MISSING) Commission = Sales * . You can enable auto-completion to help build scripts interactively as you type. see the Essbase Technical Reference. In Calculation Script Editor. You do not need to end the following commands with semicolons: IF ENDIF Understanding Calculation Script Syntax 437 . Understanding the Rules for Calculation Script Syntax When you create a calculation script. Example 2: DATACOPY Plan TO Revised_Plan. and data declarations are discussed in the following sections: ● ● ● ● ● ● “Understanding the Rules for Calculation Script Syntax” on page 437 “Understanding Calculation Commands” on page 439 “Controlling the Flow of Calculations” on page 439 “Declaring Data Variables” on page 440 “Specifying Global Settings for a Database Calculation” on page 440 “Adding Comments” on page 442 For a full list of calculation script commands. Example 3: "Market Share" = Sales % Sales -> Market.9. Example 1: CALC DIM(Product. ELSE Commission = #MISSING.” Understanding Calculation Script Syntax Essbase provides a flexible set of commands that you can use to control how a database is calculated. control of flow.

ELSE "Opening Inventory" = @PRIOR("Ending Inventory"). end each IF with an ENDIF statement. ENDIF.ENDIF statement. For example: Marketing (IF (@ISMBR(@DESCENDANTS(West)) OR @ISMBR(@DESCENDANTS (East))) Marketing = Marketing * 1. if that member name meets any of the following conditions: ❍ Contains spaces. For example: "Opening Inventory" = "Ending Inventory" . asterisk (*). ENDIF.Sales + Additions.100. “100” or “10Prod”. ❍ Is the same as an operator.. function name. The leading ampersand (&) is reserved for substitution variables. Filters. and slash (/ ). ENDIF. For example: "Opening Inventory" (IF (@ISMBR(Budget)) IF (@ISMBR(Jan)) "Opening Inventory" = Jan. For example. it is good practice to follow each ENDIF statement in a formula with a semicolon. or keyword. See “Using Dimension and Member Names in Calculation Scripts. Formulas. ❍ Includes any non-alphanumeric character.5. for example. hyphen (-).) ● ● You do not need to end ELSE or ELSEIF statements with ENDIF statements. Formulas. Filters. the following formula is associated with the Commission member in the database outline: Commission (IF(Sales < 100) Commission = 0. If you are using an IF statement that is nested within another IF statement. Do not enclose substitution variables in quotation marks in a calculation script. If a member name begins with &. ELSEIF(@ISMBR(@DESCENDANTS 438 Developing Calculation Scripts . Contains a dot (. Report Scripts.) ● End each IF statement in a formula with an ENDIF statement. for example. Begins with an ampersand (&).. enclose it in quotation marks. for example.). For example. Report Scripts. See “Using Dimension and Member Names in Calculation Scripts. ❍ ● If you are using an IF statement or an interdependent formula. ❍ ❍ Contains only numerals or starts with a numeral.ELSE ELSIF FIX EEXCLUDENDFIX ENDEXCLUDE LOOP ENDLOOP Note: Although not required. ● Enclose a member name in double quotation marks (" "). the previous formula contains a simple IF. and Substitution Variable Values” on page 1079. 1999. and Substitution Variable Values” on page 1079.Jan or . enclose the formula in parentheses to associate it with the specified member.

See “Checking Syntax” on page 456. When you write a calculation script.@DESCENDANTS(East)) CALC DIM(Year. ENDIF. based on the outline A specified dimension or dimensions All members tagged as two-pass on the dimension tagged as accounts The formula applied to a member in the database outline.1. where membername is the name of the member to which the formula is applied All members tagged as Average on the dimension tagged as accounts All members tagged as First on the dimension tagged as accounts All members tagged as Last on the dimension tagged as accounts Currency conversions Command CALC ALL CALC DIM CALC TWOPASS membername CALC AVERAGE CALC FIRST CALC LAST CCONV See the Essbase Technical Reference. you can use the Calculation Script Editor syntax checker to check the syntax.9. For example: FIX(Budget. Calculation The entire database. see the Essbase Technical Reference. you must supply an ENDIF for the IF statement. Product). ENDFIX ● End each EXCLUDE statement with an ENDEXCLUDE statement.(South))) Marketing = Marketing * . Understanding Calculation Script Syntax 439 . ELSE Marketing = Marketing * 1. Understanding Calculation Commands You can use the following calculation commands to perform a database calculation that is based on the structure and formulas in the database outline. Measures. Note: For detailed information on calculation script syntax. Controlling the Flow of Calculations You can use the following commands to manipulate the flow of calculations. ● End each FIX statement with an ENDFIX statement.) Note: If you use ELSE IF (with a space in between) rather than ELSEIF (one word) in a formula.

Declaring Data Variables You can use the following commands to declare temporary variables and. For a detailed discussion of each specific command. arrays are used to store variables as part of a member formula. 440 Developing Calculation Scripts . if required. You can also use substitution variables in a calculation script (see “Using Substitution Variables in Calculation Scripts” on page 446). Calculation Declare one-dimensional array variables Declare a temporary variable that contains a single value Commands ARRAY VAR For detailed information on the these commands. ARRAY Discount[Scenario]. You can use more than one array at a time. Specifying Global Settings for a Database Calculation You can use the following commands to define calculation behavior. You cannot report on the values of temporary variables. to set their initial values. Values stored in temporary variables exist only while the calculation script is running. See the Essbase Technical Reference. The size of the array variable is determined by the number of members in the corresponding dimension. # (pound sign). and _ (underscore) Typically. if the Scenario dimension has four members. Calculate a subset of a database by exclusion. see the Essbase Technical Reference. For example. Temporary variables store the results of intermediate calculations. Note: You cannot branch from one calculation script to another calculation script. Variable and array names are character strings that contain any of the following characters: ● ● ● Alphabetic letters: a through z Numerals: 0 through 9 Special characters: $(dollar sign).Calculation Calculate a subset of a database by inclusion. the following command creates an array called Discount with four entries. see the Essbase Technical Reference. Specify the number of times that commands are iterated Commands FIX … ENDFIX EXCLUDE … ENDEXCLUDE LOOP … ENDLOOP You can also use the IF and ENDIF commands to specify conditional calculations.

Calculation To specify how Essbase treats #MISSING values during a calculation To adjust the default calculator cache size To enable parallel calculation (see “Using Parallel Calculation” on page 871) To increase the number of dimensions used to identify tasks for parallel calculation (see “Using Parallel Calculation” on page 871) To optimize the calculation of sparse dimension formulas in large database outlines (see “Optimizing Formulas on Sparse Dimensions in Large Database Outlines” on page 881) To display messages to trace a calculation. CALC DIM(Measures). to restrict consolidations to parents that have the same defined currency (see “Calculating Databases” on page 189) SET UPDATECALC SET CLEARUPDATESTATUS SET LOCKBLOCK SET CREATEBLOCKEQ SET CREATENONMISSINGBLK SET UPTOLOCAL A SET command in a calculation script stays in effect until the next occurrence of the same SET command. Command SET AGGMISSG SET CACHE SET CALCPARALLEL SET CALCTASKDIMS SET FRMLBOTTOMUP SET MSG SET NOTICE To turn on and turn off Intelligent Calculation (see “Turning Intelligent Calculation On and Off” on page 392) To control how Essbase marks data blocks for the purpose of Intelligent Calculation (see “Using the SET CLEARUPDATESTATUS Command” on page 394) To specify the maximum number of blocks that Essbase can lock concurrently when calculating a sparse member formula To turn on and turn off the Create Blocks on Equation setting. However. Some SET calculation commands trigger additional passes through the database. SET MSG SUMMARY. Understanding Calculation Script Syntax 441 . CALC DIM(Year). Qtr1. SET AGGMISSG OFF. Consider this calculation script: SET AGGMISSG ON. Essbase displays messages at the detail level when calculating the Year dimension. This setting controls creation of blocks when you assign non-constant values to members of a sparse dimension (see “Non-Constant Values Assigned to Members in a Sparse Dimension” on page 882 To enable calculations on potential data blocks and save these blocks when the result is not #MISSING. when calculating the Measures dimension. Consider the following calculation script: SET MSG DETAIL. Essbase displays messages at the summary level. For currency conversions.

Also ee “Using Two-Pass Calculation” on page 889. or you can use the UI features of Calculation Script Editor to build the calculation script. start the comment with /* and end the comment with */. you can perform both of the following operations: ● Calculate a member formula on the database outline 442 Developing Calculation Scripts . Essbase ignores these comments when it runs the calculation script. Essbase calculates member combinations for Qtr1 with SET AGGMISSG turned on. Consider the following comment: /* This is a calculation script comment that spans two lines. ● ● ● ● ● ● ● ● ● ● ● ● “Using Formulas in a Calculation Script” on page 442 “Using a Calculation Script to Control Intelligent Calculation” on page 444 “Grouping Formulas and Calculations” on page 445 “Calculating a Series of Member Formulas” on page 445 “Calculating a Series of Dimensions” on page 446 “Using Substitution Variables in Calculation Scripts” on page 446 “Clearing Data” on page 447 “Copying Data” on page 447 “Calculating a Subset of a Database” on page 448 “Enabling Calculations on Potential Blocks” on page 452 “Writing Calculation Scripts for Partitions” on page 454 “Controlling Calculation Order for Partitions” on page 454 Using Formulas in a Calculation Script You can place member formulas in a calculation script. See the SET AGGMISSG command in the Essbase Technical Reference. they override any conflicting formulas that are applied to members in the database outline. To include a comment.East. In a calculation script.*/ Planning Calculation Script Strategy You can type a calculation script directly into the text area of Calculation Script Editor. Essbase then does a second calculation pass through the database and calculates member combinations for East with SET AGGMISSG turned off. When you place formulas in a calculation script. Adding Comments You can include comments to annotate calculation scripts.

“Developing Formulas. This formula overrides any formula placed on the Expenses member in the database outline. Planning Calculation Script Strategy 443 . If it is true that February sales are greater than January sales.● Define a formula To calculate a formula that is applied to a member in the database outline. manually apply a formula that you define in a calculation script.COGS. Member is a member name from the database outline. subtracting the values in COGS from the values in Sales and placing the result in Margin: Margin = Sales . Sales Increase Flag results in a 1 value.Cost) % Retail. Marketing. as follows: Member = mathematical expression. For example.). The following formula cycles through the database. Expenses = Payroll + Marketing + Misc. the result is a 0 value.txt file. See Chapter 21. adding the values in the members Payroll. and Misc and placing the result in the Expenses member. for example: Sales Increase Flag = Sales->Feb > Sales->Jan. See “Using Two-Pass Calculation” on page 889. This command calculates the formula applied to the Variance member in the database outline.” Basic Equations You can use equations in a calculation script to assign value to a member. Essbase evaluates the expression and assigns the value to the specified member. To override values that result from calculating an outline. and placing the results in Markup: Markup = (Retail . the following formula causes Essbase to cycle through the database. if false. Note: You cannot apply formulas to shared members or label only members. The next formula cycles through the database subtracting the values in Cost from the values in Retail. using Calculation Script Editor or by creating a . for example: Variance. simply use the member name followed by a semicolon (. calculating the resulting values as a percentage of the values in Retail. In this equation. To cycle through a database means that Essbase takes a calculation pass through the database. You can also use the > (greater than) and < (less than) logical operators in equations. and mathematical expression is any valid mathematical expression.

COGS) * 1. 2. The whole of the IF … ENDIF statement is enclosed in parentheses and associated with the Profit member.. If Sales is greater than 100. ELSE Profit = (Sales .).. Profit (IF(. "Ending Inventory" = "Opening Inventory" .) Essbase cycles through the database and performs the following calculations: 1. Essbase subtracts the value in COGS from the value in Sales.COGS) * 2. the same rules apply as for the IF statement. and places the result in Profit.. If Sales is less than or equal to 100. and places the result in Profit.Sales + Additions. You need to perform both of the following tasks: ● ● Associate the formula with a single member Enclose the formula in parentheses Consider the interdependent formula discussed earlier. Essbase subtracts the value in COGS from the value in Sales. ENDIF.) Using a Calculation Script to Control Intelligent Calculation Assume that you have a formula on a sparse dimension member and the formula contains either of the following: 444 Developing Calculation Scripts .5.5. you need to perform both of the following tasks: ● ● Associate the IF statement with a single member Enclose the IF statement in parentheses A sample IF statement is illustrated in the following example: Profit (IF (Sales > 100) Profit = (Sales . you enclose the whole formula in parentheses and associate it with the Opening Inventory member.). The IF statement checks to see if the value of Sales for the current member combination is greater than 100. Interdependent Formulas When you use an interdependent formula in a calculation script. 3. ENDIF. multiplies the difference by 1.Conditional Equations When you use an IF statement as part of a member formula in a calculation script. as follows: "Opening Inventory" (IF(NOT @ISMBR (Jan))"Opening Inventory" = @PRIOR("Ending Inventory")).. multiplies the difference by 2. If you place the formula in a calculation script.

“Understanding Intelligent Calculation. and Qtr3: Qtr1. see “Viewing the Essbase Server and Application Logs” on page 737. When you run a calculation script.5. Qtr3.) However. Calculating a Series of Member Formulas When you calculate formulas. calculating the formulas on the members Qtr1. Qtr3. Essbase automatically displays the calculation order of the dimensions for each pass through the database so that you can tell how many times Essbase has cycled through the database during the calculation. Qtr2. Market = East + West. Essbase writes these information messages in the application log. the inappropriately placed parentheses in the following example causes Essbase to perform two calculation passes through the database. the following configurations cause Essbase to cycle through the database only once. See “Calculating a Series of Member Formulas” on page 445 and “Calculating a Series of Dimensions” on page 446.” Grouping Formulas and Calculations You may achieve significant calculation performance improvements by carefully grouping formulas and dimensions in a calculation script. @PRIOR or @NEXT) A financial function (for example. Qtr2. or (Qtr1. Similarly.COGS) * 1. calculating both formulas in one pass: Profit = (Sales . The messages can also be viewed during your session in the following ways: ● ● In the Messages Panel of Administration Services Console In the standard output (command-line window) of MaxL Shell or ESSCMD ➤ To display the application log. See “Calculating Data Blocks” on page 396 and Chapter 24.● ● A relationship function (for example. avoid using parentheses unnecessarily. once calculating the formulas on the members Qtr1 and Qtr2 and once calculating the formula on Qtr3: Planning Calculation Script Strategy 445 . even if the data block is marked as clean for the purposes of Intelligent Calculation. The following formulas cause Essbase to cycle through the database once. @NPV or @INTEREST) Essbase always recalculates the data block that contains the formula. Qtr2.

becomes Qtr1. Substitution variables are useful. if you create a variable at the server level. it must be available to the calculation script. for example.(Qtr1. For example. You can create variables at the server. you can optimize performance by grouping the dimensions wherever possible. when you reference information or lists of members that change frequently. For example. Essbase treats any string that begins with a leading ampersand as a substitution variable. Calculating a Series of Dimensions When you calculate a series of dimensions. Essbase replaces the variable CurQtr with the value Qtr3 when it runs the calculation script. because Essbase cycles through once for each CALC DIM command: CALC DIM(Year). replacing the variable with its assigned value before parsing the calculation script. Qtr3. When you use a substitution variable in a calculation script. ENDFIX You then define the substitution variable CurQtr as the current quarter. &CurQtr. if you have given the substitution variable &CurQtr the value Qtr1. 446 Developing Calculation Scripts . application. it is only available to calculation scripts within the database. You create and specify values for substitution values in Administration Services. You can use the following calculation script to perform this calculation: FIX(&CurQtr) CALC DIM(Measures. Consider an example in which you want to calculate Sample Basic data for the current quarter. However. the following formula causes Essbase to cycle through the database only once: CALC DIM(Year. it is available to any calculation script on the server. When you include a substitution variable in a calculation script. Product). Using Substitution Variables in Calculation Scripts You can use substitution variables in calculation scripts. Qtr2. Essbase replaces the substitution variable with the value you specified for the substitution variable. For example. the following syntax causes Essbase to cycle through the database twice.) Qtr3. for example. Measures). Add the ampersand (&) character before a substitution variable in a calculation script. if you create a substitution variable at the database level. and database levels. See “Using Substitution Variables” on page 110. However. CALC DIM(Measures).

The other blocks remain: FIX(Actual) CLEARBLOCK NONINPUT. For example. The two ranges must be the same size. Essbase removes the entire block. If the Scenario dimension is dense. For more information.Clearing Data You can use the following commands to clear data. Copying Data You can use the DATACOPY calculation command to copy data cells from one range of members to another range of members in a database. the following formula removes only the blocks whose Scenario dimension member is Actual. unless CLEARBLOCK is inside a FIX command on members within the block. the following formula copies Actual values to Budget values for the month of January only: FIX (Jan) Planning Calculation Script Strategy 447 . If you want to clear an entire database.” Removes empty blocks Command CLEARDATA CLEARBLOCK CLEARBLOCK DYNAMIC CLEARBLOCK EMPTY The following examples are based on the Sample Basic database. including all the dense dimension members. Calculation Changes the values of the cells you specify to #MISSING. in the Sample Basic database. the following example removes all the data cells that do not contain input data values and intersect with member Actual from the Scenario dimension. see Chapter 25. in the Sample Basic database. ENDFIX For example. “Dynamically Calculating Data Values. You can use the FIX command with the CLEARDATA command to clear a subset of a database. the following formula copies Actual values to Budget values: DATACOPY Actual TO Budget. FIX(Actual) CLEARBLOCK NONINPUT. For example. You can use the FIX command to copy a subset of values. see “Clearing Data” in the Essbase Administration Services Online Help. Removes blocks for Dynamic Calc and Store member combinations. Removes the entire contents of a block. the following formula clears all the Actual data values for Colas: CLEARDATA Actual -> Colas. ENDFIX If the Scenario dimension is sparse. The data blocks are not removed.

Using the FIX Command The FIX … ENDFIX command and EXCLUDE. see “Calculating Lists of Members” on page 448. see “Using the FIX Command” on page 448. Use the FIX … ENDFIX commands to calculate a range of values by inclusion. Marketing. you can use the @IDESCENDANTS function to generate a list of all the descendants of a specified member. Calculating a Subset of a Database ➤ To calculate a subset of a database. See Chapter 24. In the Sample Basic database. When you use a member set function in a formula. For example. For information about using member lists. For detailed information on these and other member set functions.ENDEXCLUDE command are particularly useful to calculate a carefully defined subset of the values in a database.. @IDESCENDANTS("Total Expenses"). the following calculation script uses the FIX.” Calculating Lists of Members You can use a member set function to generate a list of members that is based on a member you specify. generates the following list of members—Total Expenses. and Misc. the newly calculated data blocks are not marked as clean after a partial calculation of a database.. Payroll. For examples of use of the FIX command. see the Essbase Technical Reference.. use one of the following methods: ● ● ● Create a formula using member set functions to calculate lists of members. For example.ENDFIX command to calculate only the Budget values for only 448 Developing Calculation Scripts .. “Understanding Intelligent Calculation. Use the FIX command when you want to define which members to include in the calculatoin. Essbase generates a list of members before calculating the formula. Using this command ensures that Essbase recalculates the database as efficiently as possible using Intelligent Calculation. ENDFIX For more information about the DATACOPY command.DATACOPY Actual TO Budget. Note: When you have Intelligent Calculation turned on. When you calculate a subset of a database. For more information about the FIX command. see “Using the FIX Command” on page 448. Use the EXCLUDE …ENDEXCLUDE commands to calculate a range of values by exclusion. you can use the SET CLEARUPDATESTATUS AFTER command to ensure that the newly calculated blocks are marked as clean. see the Essbase Technical Reference.

For example. this example fixes on the members 100-10. ENDFIX The next example uses a wildcard match to fix on member names that end in the characters -10. Essbase retrieves the block for the specified sparse dimension member or members. ENDFIX You cannot FIX on a subset of a dimension that you calculate within a FIX statement. and 400-10. combine FIX blocks to improve calculation performance. the following calculation script causes Essbase to cycle through the database only once. “Creating and Changing Database Outlines. Florida.1. For information on defining UDAs. Product). see Chapter 7. Thus. the following calculation script returns an error message because the CALC DIM operation calculates the entire Market dimension. this calculation script causes Essbase to cycle through the database twice."New Mkt")) Planning Calculation Script Strategy 449 . For example. FIX(@CHILDREN(East) AND @UDA(Market.1. When possible. Measures). ENDFIX However. Massachusetts.” FIX(@CHILDREN(East) AND @UDA(Market. "???-10")) Price = Price * 1. Essbase retrieves the entire block that contains the required value or values for the member or members that you specify. and the calculation performance time is improved. FIX(@MATCH(Product. Measures). In Sample Basic. ENDFIX The next example fixes on member combinations for the children of East that have a UDA of New Mkt. although the FIX above it fixes on specific members of the Market dimension. ENDFIX When you use the FIX command only on a dense dimension.Budget) CALC DIM(Year.the descendants of East (New York. 300-10. Measures). When you use the FIX command on a sparse dimension. and New Hampshire) in the Sample Basic database: FIX(Budget. I/O is not affected. ENDFIX FIX(Budget) CALC DIM(Year.@DESCENDANTS(East)) CALC DIM(Year. 200-10. Thus."New Mkt")) Marketing = Marketing * 1. I/O may be greatly reduced. Essbase cycles through the database once for each FIX command that you use on dense dimension members. once calculating the Actual data values and once calculating the data values for Budget: FIX(Actual) CALC DIM(Year. Connecticut. calculating both the Actual and the Budget values: FIX(Actual. Measures.

but in context of members to be excluded. you first specify the SET DATAEXPORTOPTIONS command to define options for export content. including the following options: For export data requirements use: ● DATAEXPORTLEVEL to specify all. DataExportRelationalFile ON | OFF.ENDEXCLUDE command to calculate a subset of the values in a database whereby you define members not to be calculated. DataExportColHeader dimensionName. For detailed information on the restrictions and on using the FIX command. Market). DataExportDryRun ON | OFF. For detailed information on using the EXCLUDE command and its restrictions.CALC DIM(Year. or directly to a relational database. DataExportDynamicCalc ON | OFF. DataExportDecimal n. DATAEXPORTCOND parameters. DataExportOverwriteFile ON | OFF. DataExportDimHeader ON | OFF. DataExportColFormat ON | OFF. ENDFIX Note: The FIX command has some restrictions. see the Essbase Technical Reference. Measures.. Product. or input data value 450 Developing Calculation Scripts . see the Essbase Technical Reference. FIX (fixMembers DATAEXPORT parameters. DataExportPrecision n. and process. To develop a calculation script that exports a subset of data. The following command sequence demonstrates the typical calculation script structure for export: SET DATAEXPORTOPTIONS { DataExportLevel parameters. format. Using the Exclude Command Use the EXCLUDE. level 0. A set of data-export-related calculation commands qualify what data to export and provide various output and formatting options...ENDFIX command.. }. Using DATAEXPORT to Export Data The DATAEXPORT command enables calculation scripts to export data in binary or text. ENDFIX. Use of this command is similar to using the FIX. It is sometimes easier to specify what members not to include in a calculation than it is to define what members to include.

.ENDEXCLUDE calculation commands to select a slice of the database to be exported..ENDFIX or EXCLUDE.● ● ● DATAEXPORTDYNAMICCALC to control export of dynamically calculated values DATAEXPORTDECIMAL to specify the number of decimal positions in the exported values DATAEXPORTPRECISION to specify the total number of positions in the exported values For output format specifications use: ● ● ● DATAEXPORTCOLFORMAT to specify columnar or non-columnar format DATAEXPORTCOLHEADER to specify a dense dimension for the column header DATAEXPORTDIMHEADER to include a header record that lists all dimension names in the same order as the data in the file DATAEXPORTRELATIONALFILE to format the text export file for importing the data into a relational database ● The DATAEXPORTDRYRUN option enables validating the set of calculation commands and viewing export statistics. use the DEXPSQLROWSIZE configuration setting to specify the number of rows to be inserted in batches to the SQL database. creating an output text file (see “Exporting Text Data Using Report Scripts” on page 569). Supports multiple targets: flat files... Report Writer can be used to select and format a database subset. with default values. Provides many flexible options for type and format or data. Options and parameters are optional.ENDEXCLUDE group. a faster way to back up and restore data because the compressed format used by binary export requires less storage for the export files. using a calculation script has the following advantages and disadvantages: Advantages ● ● ● ● ● Enables exporting a subset of data. including a time estimate—without having to perform the entire export process. and binary files. ● ● Disadvantages ● Planning Calculation Script Strategy 451 . through binary export-import. The SET DATAIMPORTIGNORETIMESTAMP calculation command enables you to manage the import requirement for a matching outline timestamp Other export methods include using ESSCMD... Then use FIX. See the Essbase Technical Reference. As part of a calculation script. relational databases. include the DATAEXPORT command. Can be used as a debug tool to trace batch calculation results by using the DATAEXPORT command before and after other calculation commands to track data changes. MaxL and Administration Services Console for database backup (see “Backing Up Data” on page 794). Provides. Compared to using other methods to export data.. can be easily deployed in a batch process. You can use the DATAIMPORTBIN calculation command to import a previously exported binary export file. Within the FIX. You can use a DATAEXPORTCOND command to select data based on data values.. Can be very fast when the dynamic calculation export option is not used because DATAEXPORT directly accesses Kernel storage blocks in memory.ENDFIX or EXCLUDE. Contains limited data formatting options compared to Report Writer formatting. To improve export performance to a relational database.

Consider an example from Sample Basic. Expenses = Expenses -> Actual * . are dense dimension members. as shown in the following example: DATACOPY Sales -> Actual TO Sales -> Budget. Essbase does not automatically create the required blocks. You can solve the problem using the following techniques. if the resultant values are from a dense dimension and the operand or operands are from a sparse dimension. DATACOPY Expenses -> Actual TO Expenses -> Budget. and the operand. in which you want to create budget sales and expense data from existing actual data. is in a sparse dimension. Expenses = Expenses -> Actual * . FIX(Budget (Sales = Sales -> Actual * 1. FIX(Budget) (Sales = Sales -> Actual * 1. the remaining part of the script changes the values.● Works with stored members and Dynamic Calc members only.1. with no support for attribute members and alias names. the calculation script above does not create the required data blocks and Budget data values are not calculated for blocks that do not already exist.) ENDFIX Essbase creates blocks that contain the Budget values for each corresponding Actual block that already exists. Does not support for aggregate storage databases. Cannot export data directly to the client. Budget and Actual are members in the sparse Scenario dimension. Using DATACOPY works well in the following circumstances: 452 Developing Calculation Scripts . and then perform calculations on the new blocks.1. each with its own advantages and disadvantages: ● ● “Using DATACOPY to Copy Existing Blocks” on page 452 “Using SET CREATENONMISSINGBLK to Calculate All Potential Blocks” on page 453 Using DATACOPY to Copy Existing Blocks You can use the DATACOPY command to create a block for each existing block. Sales and Expenses are members in the dense Measures dimension. Because Essbase executes dense member formulas only on existing data blocks. the results of the equations.) ENDFIX Note that Sales and Expenses. Actual.95. After the DATACOPY commands are finished. ● ● ● Enabling Calculations on Potential Blocks When you use a formula on a dense member in a dense dimension.95. Can significantly impact performance when exporting dynamic calculation data.

) ENDFIX The SET CREATENONMISSINGBLK calculation command can be useful when calculating values on dense or sparse dimensions. Using SET CREATENONMISSINGBLK to Calculate All Potential Blocks If you are concerned about unwanted values. potentially resulting in unwanted values. The disadvantage is that too many potential blocks may be materialized in memory. see the Essbase Technical Reference. If the formula only performs on a portion of the block. Sales and Expenses are members in the dense Measures dimension. If #MISSING values exist. None of the blocks that are copied contain only #MISSING values. the SET CREATENONMISSINGBLK ON temporarily overrides the Create Blocks on Equations setting until a SET CREATENONMISSINGBLK OFF command is encountered or the calculation script is completed. when applied on dense members. The advantage to using the SET CREATENONMISSINGBLK command is that. See “Non-Constant Values Assigned to Members in a Sparse Dimension” on page 882 or the SET CREATEBLOCKONEQ calculation command in the Essbase Technical Reference. Expenses = Expenses -> Actual * . Budget and Actual are members in the sparse Scenario dimension. in the preceding example. For example. only data cells that are affected by the member formula are saved. Caution! ● DATACOPY creates the new blocks with identical values in ALL cells from the source blocks. For additional information about this command. Note: If the Create Blocks on Equations setting for sparse dimensions is ON. blocks are written that contain only #MISSING values. Unneeded #MISSING blocks require Essbase resource and processing time. the Budget values can be calculated based on the existing Actual values. instead of using the DATACOPY approach described above. you can use the SET CREATENONMISSINGBLK ON calculation command. FIX(Budget) SET CREATENONMISSINGBLK ON (Sales = Sales -> Actual * 1.1. these copied cells will remain at the end of calculation.95. The SET CREATENONMISSINGBLK ON calculation command calculates all potential blocks in memory and then stores only the calculated blocks that contain data values. The following example script demonstrates using the SET CREATENONMISSINGBLK ON calculation command to create budget sales and expense data from existing actual data.● There is a mathematical relationship between values in existing blocks and their counterparts created by the DATACOPY. possibly affecting Planning Calculation Script Strategy 453 .

Qtr2. Replicate a value in the database that contains the applicable formula. and East databases transparently from the Corporate database.calculation performance. dynamically calculate. for example. “Creating and Maintaining Partitions. Choose one of the options previously discussed (redesign. For example. Writing Calculation Scripts for Partitions A partitioned application can span multiple servers. if you are replicating quarterly data for the Eastern region. ❍ ❍ ● Ensure that a referenced value is up-to-date when Essbase retrieves it. and Qtr4. When you use this command. “Designing Partitioned Applications” and Chapter 14.” You can achieve significant calculation performance improvements by partitioning applications and running separate calculations on each partition. by using FIX to restrict the scope of the blocks to be calculated. See Chapter 13. limit the number of potential blocks. or replicate) or calculate the referenced database before calculating the formula. Controlling Calculation Order for Partitions You need to calculate databases in a specific order to ensure that Essbase calculates the required results. see the Essbase Technical Reference. You might choose to use any of the following methods to improve performance: ❍ Redesign the overall calculation to avoid referencing remote values that are in a transparent partition in a remote database. Dynamically calculate a value in a remote database. and calculate the parent Year values locally. Qtr3. consider the following partitions in which you view information from the West. See “Dynamically Calculating Data in Partitions” on page 422. For example. replicate only the values for Qtr1. However. processors. when you use partitioning. or computers. Figure 133 Calculating Partitions 454 Developing Calculation Scripts . you need to perform both of the following tasks: ● Consider carefully the performance impact on the overall database calculation. For additional information about using the SET CREATENONMISSINGBLK ON calculation command. Central.

Corporate contains actual and budgeted values. “Checking the Results of Calculations” on page 458. and East. Reviewing the Process for Creating Calculation Scripts Use this process to create a calculation script: 1. Central. See “About Calculation Script Editor” in the Essbase Administration Services Online Help for information about: ● ● ● ● ● ● ● ● ● ● Associating a script with an outline Searching an outline tree for members Inserting dimensions. and aliases in a script from an outline tree Inserting functions and commands in a script from a tree Using syntax auto-completion Checking script syntax Executing scripts Viewing color-coded script elements Searching for text in a script Changing fonts 3. See “Saving Calculation Scripts” on page 456 and “Saving Scripts” in the Essbase Administration Services Online Help. Central. Execute the calculation script. Reviewing the Process for Creating Calculation Scripts 455 . members. Central. and East before you calculate Corporate. Save the calculation script. See “Creating Scripts” or “Opening Scripts” in the Essbase Administration Services Online Help. If necessary. Create a calculation script or open an existing calculation script. when Essbase calculates Corporate. 6. the data exists only in the West. perform other operations on the calculation script.West. See “Checking Syntax” on page 456 and “Checking Script Syntax” in the Essbase Administration Services Online Help. Enter or edit the contents of the calculation scripts. Central. it needs to take the latest values from West. 5. See “Executing Calculation Scripts” on page 457. and East data in the Corporate database. To obtain the required results. and East databases. 2. and “Executing Calculation Scripts” in the Essbase Administration Services Online Help. Therefore. it is not duplicated in the Corporate database. Validate the calculation script. and East contain only actual values. you need to calculate West. Central. Although you can view the West. 4.

If you run a calculation script from Administration Services or from a spreadsheet tool.csc extension by default. that is indicated in the messages panel. see “Checking Script Syntax” in the Essbase Administration Services Online Help. it usually displays the number of the line that includes the error and a brief description of the error. see the following topics: ● ● ● ● ● “Locking and Unlocking Objects” “Copying Scripts” “Renaming Scripts” “Deleting Scripts” “Printing Scripts” For more information on calculation scripts. Essbase tells you if you have typed a function name incorrectly. If Essbase finds no syntax errors. One error is displayed at a time. Semantic errors occur when a calculation script does not work as you expect. and check the results to ensure they are as you expect. A calculation script can also be a string defined in memory. However. a calculation script is a text file. always run the calculation. If Essbase finds one or more syntax errors. if you do not include a semicolon end-of-line character at the end of a calculation script command. The syntax checker cannot tell you about semantic errors in a calculation script. Thus. You can access this string via the API on an Essbase client or an Essbase Server. you can dynamically create a calculation script that is based on user selections.In the Essbase Administration Services Online Help. Essbase displays the syntax checker results in the messages panel in Administration Services Console. see “Understanding Calculation Scripts” on page 435. Essbase displays a message similar to the following: Error: line 1: invalid statement. it must have a . To find semantic errors. Saving Calculation Scripts Calculation scripts created using Administration Services are given a . Checking Syntax Essbase includes a syntax checker that tells you about any syntax errors in a calculation script. You can save a calculation script in the following locations: 456 Developing Calculation Scripts . For example. and you can use MaxL or ESSCMD to run any text file as a calculation script. Essbase displays the following message: No more errors ➤ To check the syntax of a calculation script in Calculation Script Editor. For example.csc extension. from dialog boxes. expected semicolon When you reach the first or last error.

➤ To execute a calculation script. Calculation scripts associated with a database are saved in the /ARBORPATH/app/appname/ dbname directory on the Essbase Server computer. ARBORPATH is the Essbase install directory. ❍ ➤ To save a calculation script using Calculation Script Editor. Calculation scripts associated with an application are saved in the /ARBORPATH/app/appname directory on the Essbase Server computer. which lets you run the script against the specified database. use a tool: Tool Administration Services Topic Executing Calculation Scripts Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference Essbase Spreadsheet Add-in for Excel User's Guide Hyperion Smart View for Office Online Help MaxL ESSCMD Essbase Spreadsheet Add-in for Excel execute calculation RUNCALC ESSBASE > CALCULATION Smart View Calculating Data Reviewing the Process for Creating Calculation Scripts 457 . see “Saving Scripts” in the Essbase Administration Services Online Help. which lets you run the script against any database in the application. and appname is the application with which you have associated the calculation script. When you use Administration Services to execute a calculation script.● ● As a file on a client computer. and dbname is the database with which you have associated the calculation script. save it on an Essbase Server. If you want other users to have access to the calculation script. you must save it as an artifact on the Essbase Server. Executing Calculation Scripts Before you can execute a calculation script in Administration Services. appname is the application containing the database. You can then check the status of the background process to see when the calculation has completed. A database. ARBORPATH is the Essbase install directory. You can associate the script with the following artifacts: ❍ An application and all the databases within the application. See “Saving Calculation Scripts” on page 456. or on a network. As an artifact on an Essbase Server. See “Executing Calculation Scripts” in the Essbase Administration Services Online Help. on a client computer. you can execute the calculation in the background so that you can continue working as the calculation processes.

When you execute a calculation using Administration Services or Smart View. you can use the SET MSG SUMMARY. For more information. SET MSG DETAIL. ➤ To display the application log. you can check the results of the calculation in the Essbase Spreadsheet Add-in for Excel or other appropriate tool. Copying Calculation Scripts You can copy calculation scripts to applications and databases on any Essbase Server. see “Viewing the Essbase Server and Application Logs” on page 737. you can view the messages in the ESSCMD window. Essbase displays the messages to the standard output (commandline window). Essbase provides the following information: ● ● The calculation order of the dimensions for each pass through the database The total calculation time You can use these messages to understand how the calculation is performed and to tune it for the next calculation. and SET NOTICE commands in a calculation script. ➤ To copy a calculation script. You can also copy scripts across servers as part of application migration. When you use ESSCMD to execute a calculation script. you can view the calculation messages in the application log. see “Specifying Global Settings for a Database Calculation” on page 440. When you use MaxL or ESSCMD to execute a calculation script. To display more detailed information. according to your permissions.Checking the Results of Calculations After you execute a calculation script. depending on the level of messages you have set to display in MaxL Shell or ESSCMD. use a tool: Tool Administration Services MaxL ESSCMD Topic Copying Scripts create calculation as COPYOBJECT Location Essbase Administration Services Online Help Essbase Technical Reference Essbase Technical Reference 458 Developing Calculation Scripts .

......... For examples that use the Intelligent Calculation commands SET UPDATECALC and SET CLEARUPDATESTATUS in calculation scripts...................................................................... 459 Calculating Database Subsets.................................... the information in this chapter is not relevant to them.... Calculating Variance The Sample Basic database includes a calculation of the percentage of variance between Budget and Actual values......................................................................................................................................... 462 Allocating Costs Across Products......................................................................................... which you may want to adapt for your own use.................... see “Reviewing Examples That Use SET CLEARUPDATESTATUS” on page 395 and “Reviewing Examples and Solutions for MultiplePass Calculations” on page 398................................... 472 The examples in this chapter illustrate different types of calculation scripts........ 461 Calculating Product Share and Market Share Values...................................................................................................................... Note: Since you do not use calculation scripts with aggregate storage databases............................ 460 Loading New Budget Values ............................................................................................................................. 464 Goal Seeking Using the LOOP Command.............. 463 Allocating Values Within or Across Dimensions ............. Figure 134 Calculating Variance and Variance % Calculating Variance 459 ...................28 In This Chapter Reviewing Examples of Calculation Scripts Calculating Variance ........... 468 Forecasting Future Values ...............

see the Essbase Technical Reference. Percentage values do not aggregate correctly. even though the variance calculation is a partial calculation of the database (by default. 2. 460 Reviewing Examples of Calculation Scripts . SET UPDATECALC OFF. 4. data blocks are marked as clean only after a full calculation of the database). The SET UPDATECALC OFF command turns off Intelligent Calculation. two-pass member. and Central need to calculate their respective areas of the database. Note: Alternatively. the Marketing managers of the regions East. SET CLEARUPDATESTATUS AFTER. Thus. see “Choosing Two-Pass Calculation Tag or Calculation Script” on page 892. For information on calculating statistical variance. See Chapter 25. two-pass member. “Dynamically Calculating Data Values. Essbase performs the following actions: 1. The dynamic calculation overwrites the incorrect values with the correctly calculated percentages. West.” See “Using Two-Pass Calculation” on page 889 for information about calculation of two-pass members. For information on using a calculation script for two-pass calculations. “Developing Formulas.During a default calculation of the Sample Basic database. If you choose not to tag Variance % as a Dynamic Calc. Essbase dynamically calculates Variance % values when they are retrieved. Variance % is tagged as a Dynamic Calc. "Variance %". Assuming that Intelligent Calculation is turned on (the default). South. the Variance % formula needs to be recalculated after the default calculation. Essbase uses the CALC ALL command to perform a default calculation of the database. Essbase cycles through the database calculating the formula for Variance %. Therefore. 3. run a default calculation of the database outline without using a calculation script. the following calculation script performs a default calculation and then recalculates the formula on Variance %: CALC ALL. In the Sample Basic outline.” Calculating Database Subsets In this example. use the following calculation script to recalculate Variance %. based on the Sample Basic database. Essbase aggregates the values on the Market and Product dimensions. The CLEARUPDATESTATUS AFTER command tells Essbase to mark the calculated blocks calculated by the variance formula of the calculation script as clean. See Chapter 21.

/* Calculate the Budget data values for the descendants of East */ FIX(Budget. 3. Measures. "Variance %". Essbase calculates the formula applied to Variance % in the database outline. Measures. Measures). Essbase calculates the formula applied to Variance in the database outline. 2. which require two passes */ Variance. Product). Essbase calculates all Budget values. Loading New Budget Values 461 . 4. Essbase aggregates the descendants of East and places the result in East. Notice how @DESCENDENTS(East) is used to limit the calculations to the Eastern region. Essbase fixes on the Budget values. The Year. 3. ENDFIX /* Consolidate East */ FIX(Budget) @DESCENDANTS(East). and Product dimensions for each child of East. Essbase fixes on the Budget values of the descendants of East. and Product dimensions are calculated in one pass of the database for all Budget values of the descendants of East. Essbase fixes on the Budget values for all members on the other dimensions.Figure 135 Market Dimension from the Sample Basic Database The marketing manager of the region East uses the following calculation script to calculate the data values for East:. @DESCENDANTS(East)) CALC DIM(Year. which contains Budget. Product. Essbase performs the following actions: 1. The CALC DIM command is used to calculate all the dimensions except for the Scenario dimension. ENDFIX /* Recalculate the Variance and Variance % formulas. Market. Essbase performs the following actions: 1. ENDFIX The script calculates the Year. 2. Loading New Budget Values This example calculates the Budget values of the Sample Basic database and then recalculates the Variance and Variance % members of the database: /* Calculate all Budget values */ FIX(Budget) CALC DIM(Year. 4. Measures.

based on the Sample Basic database. 5. Essbase calculates Product Share. The CALC DIM command is used to calculate the Year. Product Share. It takes the Sales value for each product in each market for each month. It calculates this Sales value as a percentage of the Sales value of the parent of the current member on the Market dimension. and Product %. The Scenario dimension is label only and therefore does not need to be consolidated. It takes the Sales value for each product in each market for each month. Essbase calculates Market %. It calculates this Sales value as a percentage of total Sales in all markets for each product (Sales -> Market). /* First consolidate the Sales values to ensure that they are accurate */ FIX(Sales) CALC DIM(Year. and Product dimensions.Calculating Product Share and Market Share Values This example. Sales). /* Calculate each product as a percentage its parent for each market */ "Product %" = Sales % @PARENTVAL(Product. Market. 4. 2. The product and market share values are calculated as follows: ● ● Each member as a percentage of the total Each member as a percentage of its parent Assume that you add four members to the Measures dimension—Market Share. It calculates this Sales value as a percentage of total Sales of all products in each market (Sales -> Product). /* Calculate each product as a percentage of the total product for each market */ "Product Share" = Sales % Sales -> Product. 3. Sales). The Measures dimension contains the Sales member and therefore is not consolidated. ENDFIX /* Calculate each market as a percentage of the total market for each product */ "Market Share" = Sales % Sales -> Market. Essbase fixes on the Sales values and consolidates all the Sales values. Market %. It uses the @PARENTVAL function to obtain the Sales value of the parent on the Market dimension. calculates product share and market share values for each market and each product. Market. It takes the Sales value for each product in each market for each month. Product). Essbase calculates Market %. /* Calculate each market as a percentage of its parent for each product */ "Market %" = Sales % @PARENTVAL(Market. It calculates this Sales value as a percentage of the Sales value of the parent of 462 Reviewing Examples of Calculation Scripts . It takes the Sales value for each product in each market for each month. Essbase performs the following actions: 1. Essbase cycles through the database and calculates Market Share.

Data values stored at parent levels are not overwritten. command means that #MISSING values are not aggregated to their parents. ENDFIX Essbase performs these calculations: 1. see “Consolidating #MISSING Values” on page 900. /* Allocate the overhead costs for Actual values */ FIX(Actual) OH_Costs (ALLOCQ=Sales/Sales->Product. If this is your system default. Essbase cycles through the member combinations for Actual and calculates OH_Costs. Notice that both of the equations are enclosed in parentheses ( ) and associated with the OH_Costs member. /*Turn the Aggregate Missing Values setting off. Assume that you add two members to the Measures dimension—OH_Costs for the allocated overhead costs and OH_TotalCost for the total overhead costs. ● Allocating Costs Across Products 463 . It then takes the Sales value for each product in each market for each month. /* Calculate and consolidate the Measures dimension */ CALC DIM(Measures). The SET AGGMISSG OFF. you can omit this line. It calculates this Sales value as a percentage of total Sales for all products in each market (Sales -> Product). Essbase uses ALLOCQ to store the value of Sales as a percentage of total Sales temporarily for each member combination. The size of ALLOCQ is based on the number of members in the Year dimension. If this is your system default. The overhead costs are allocated based on each product’s Sales value as a percentage of the total Sales for all products. /* Declare a temporary array called ALLOCQ based on the Year dimension */ ARRAY ALLOCQ[Year]. Allocating Costs Across Products The following example is based on the Sample Basic database. OH_Costs (equation1. ● ● ● Essbase fixes on the Actual values. It then takes the total overhead costs for all products (OH_TotalCost -> Product) and multiplies it by the value it has just placed in ALLOCQ.). OH_Costs = OH_TotalCost->Product * ALLOCQ. It places the result in OH_Costs. 2. omit this line */ SET AGGMISSG OFF. It places the result in ALLOCQ. For information on setting the default for aggregating #MISSING values. equation2. It allocates overhead costs to each product in each market for each month. Essbase creates a one-dimensional array called ALLOCQ.the current member on the Product dimension. It uses the @PARENTVAL function to obtain the Sales value of the parent on the Product dimension.).

Lease. you can allocate values to members in the same dimension or to members in multiple dimensions. respectively. Allocating Within a Dimension The following example uses the @ALLOCATE function to allocate budgeted total expenses across expense categories for two products.3. Essbase calculates and consolidates the Measures dimension. under Total Expenses in the Measures dimension Added a child. The allocated values need to be rounded to the nearest dollar. These values need to be allocated to each expense category. assume that data values of 1000 and 2000 are loaded into Budget -> Total Expenses for Colas and Root Beer. Assume that you have made the following changes to Sample Basic: ● ● ● Added a child. The budgeted total expenses are allocated based on the actual values for the prior year. evenly spreading the values based on the non-missing children of Total Expenses from PY Actual. 464 Reviewing Examples of Calculation Scripts . Allocating Values Within or Across Dimensions Using the @ALLOCATE and @MDALLOCATE functions. to the Scenario dimension Removed the Dynamic Calc tag from the Total Expenses member Figure 136 Modified Measures and Scenario Dimensions from the Sample Basic Database For this example. This calculation script defines the allocation: /* Allocate budgeted total expenses based on prior year */ /* Allocate budgeted total expenses based on prior year */ FIX("Total Expenses") Budget = @ALLOCATE(Budget->"Total Expenses". PY Actual. The following example is based on the Sample Basic database.

Using a FIX statement with @ALLOCATE may improve calculation performance. multiplies it by the value for Budget -> Colas -> Total Expenses (1000). performing the following calculations: 1. See 5 for more information. spread. Essbase takes the value from step 2 (.0. because there are 3 non-missing expense values for Budget -> Colas.roundAmt. there is a rounding error of 1 for Budget -> Colas -> Total Expenses. Allocating Values Within or Across Dimensions 465 .errorsToHigh) ENDFIX This table shows the results: Budget Colas Marketing Payroll Lease Misc Total Expenses Root Beer Marketing Payroll Lease Misc Total Expenses * ** PY Actual 150 #MI 200 100 450 300 200 200 400 1100 334* #MI 333 333 1000 500 500 500 500 2000 Rounding errors are added to this value. In this example. the allocated values are rounded to the nearest whole dollar. As specified in the calculation script. 5. Budget -> Colas -> Marketing (thus a value of 334). because the expense categories add up to 999.. and then rounds to the nearest dollar (333)."PY Actual". This value is placed in Budget -> Colas -> Marketing.SKIPMISSING. Essbase repeats steps 2–3 for each expense category for Budget -> Colas and then for Budget -> Root Beer.333). 3. For Budget -> Colas -> Marketing. 1 is divided by 3. Essbase cycles through the database. not 1000. Because all the allocated values are identical (333). 2. which is the allocation value. 4.@CHILDREN("Total Expenses"). Essbase makes a second pass through the block to make the sum of the rounded values equal to the allocation value (for example. Essbase fixes on the children of Total Expenses. the rounding error of 1 is added to the first value in the allocation range. Essbase divides 1 by the count of non-missing values for each expense category in PY Actual -> Colas for each month. 1000 for Budget -> Colas -> Total Expenses). In this case.

Assume that you have made the following modifications: ● ● ● Added a child.. This calculation script defines the allocation: /* Allocate budgeted total expenses based on prior year. to the Scenario dimension Copied data from Actual into PY Actual Cleared data from Budget For this example.@CHILDREN("Total Expenses"). ENDFIX This table shows the values for PY Actual: Jan PY Actual Marketing 100–10 New York Massachusetts Florida Connecticut New Hampshire 100-20 New York Massachusetts Florida Connecticut 94 23 27 40 15 199 #MI #MI 26 Payroll 51 31 31 31 31 175 #MI #MI 23 Misc 0 1 0 0 1 2 #MI #MI 0 Total Expenses 145 55 58 71 47 376 #MI #MI 49 466 Reviewing Examples of Calculation Scripts . PY Actual."PY Actual".@CHILDREN(“100”). FIX (East. The budgeted total expenses are allocated based on the actual values of the prior year. across 3 dimensions */ SET UPDATECALC OFF.3.@CHILDREN(East). “Total Expenses”) BUDGET = @MDALLOCATE(750. The following example is based on the Sample Basic database. a value of 750 (for Budget -> Total Expenses -> Product -> East -> Jan) needs to be allocated to each expense category for the children of product 100 across the states in the East. The allocation uses values from PY Actual to determine the percentage share that each category should receive. “100”.Allocating Across Multiple Dimensions The following example uses the @MDALLOCATE function to allocate a loaded value for budgeted total expenses across three dimensions.share).

Starting with PY Actual -> 100-10 -> New York. Allocating Values Within or Across Dimensions 467 . Essbase fixes on East. for each product-state combination. performing these calculations: 1. and places the allocated value in Budget -> 100-10 -> New York -> Marketing (see the next table). by the value for PY Actual-> 100-10 -> East -> Total Expenses to calculate the percentage share of that category. For example. 5.Jan PY Actual Marketing New Hampshire 100-30 New York Massachusetts Florida Connecticut New Hampshire 100 New York Massachusetts Florida Connecticut New Hampshire East #MI #MI 26 #MI #MI #MI #MI 12 12 94 23 237 Payroll #MI #MI 23 #MI #MI #MI #MI 22 22 51 31 220 Misc #MI #MI 0 #MI #MI #MI #MI 1 1 0 1 3 Total Expenses #MI #MI 49 #MI #MI #MI #MI 35 35 145 55 460 Essbase cycles through the database. Before performing the allocation. Essbase repeats step 4 for each expense category and for each product-state combination. Using a FIX statement with @MDALLOCATE may improve calculation performance. 4.4% figure calculated in 2. using the percentage shares from PY Actual calculated in 2 to 3. During the allocation. Essbase divides the value for the first expense category. 2. To determine the share. Essbase uses the percentage shares calculated in 2 to 3 to determine what share of 750 should be allocated to each child of Total Expenses from Budget. takes 20. Essbase uses the shares of each expense category from PY Actual. the children of 100. Essbase repeats 2 for each expense category. for each product-state combination. which yields a percentage share of approximately 20. for Marketing. Essbase uses the 20. and Total Expenses.4% for the Marketing category. for each product-state combination. Essbase divides the value for PY Actual -> 100-10 -> New York -> Marketing (94) by the value for PY Actual -> 100-10 -> East -> Total Expenses (460). For example. 3.4% of 750 (approximately 153). Marketing. Essbase needs to determine what share of 750 (the value to be allocated) each expense category should receive.

26 37.50 44. However.39 #MI #MI #MI #MI #MI #MI 19.41 358.41 89.54 88.54 86.54 50.22 24. This table shows the results of the allocation for Budget: Jan Budget Marketing 100–10 New York Massachusetts Florida Connecticut New Hampshire 100–20 New York Massachusetts Florida Connecticut New Hampshire 100–30 New York Massachusetts Florida Connecticut New Hampshire 100 New York Massachusetts Florida Connecticut New Hampshire East 153. the example assumes that no members are tagged as Dynamic Calc and that the Profit per Ounce member (under 468 Reviewing Examples of Calculation Scripts .15 50.70 Misc 0 1. Essbase consolidates the expense categories to yield the values for Total Expenses.6.46 115.63 0 0 1.22 44.67 174.56 115.54 50.26 37.02 65.76 133.67 94.87 83.63 #MI #MI 0 #MI #MI #MI #MI #MI #MI 1.02 386.63 0 1.76 76.26 4.50 86.54 #MI #MI 37.54 50.63 0 0 3.57 153.41 Payroll 83.63 #MI #MI 79.04 50.41 65.70 750 Goal Seeking Using the LOOP Command The following example is based on the Sample Basic database.89 #MI #MI #MI #MI #MI #MI 57.89 Total Expenses 236.07 236.15 50.41 89.46 #MI #MI 42.50 #MI #MI #MI #MI #MI #MI 35.

This example adjusts the Budget value of Sales to reach a goal of 15. Figure 137 Measures Dimension from the Sample Basic Database Assume that the data values before running the goal-seeking calculation script are as follows: Product.755.50 30.950.00 0 Label Only member Label Only member 60.45 24.Ratios in the Scenario dimension) is not included in the calculation.402. “Dynamically Calculating Data Values.00 19. Budget Profit Margin Sales COGS Total Expenses Marketing Payroll Misc Inventory Ratios Margin % Profit % Jan 12. see Dynamic Calc members.917. Market.195.00 14.50 49.00 17.00 3. The results are shown for product 100-10.” You want to know what sales value you have to reach in order to obtain a certain profit on a specific product. For an explanation of how you calculate values dynamically and how you benefit from doing so.000 Profit for Jan.58 This calculation script produces the goal-seeking results: /* Declare the temporary variables and set their initial values*/ VAR Target = 15000. in Chapter 25.001.515.278. Goal Seeking Using the LOOP Command 469 . AcceptableErrorPercent = .

Quit = 1. ELSE Quit = 1. 2. Sales = Sales + PctNewVarChange * Sales.(CurTarDiff / Slope). Product.). Essbase cycles through the member combinations. ENDLOOP CALC DIM(Measures). IF(DependencyCheck <> 0) CurTarDiff = Profit . /* Fix on the appropriate member combinations and perform the goal-seeking calculation*/ FIX(Budget. PctNewVarChange = (NxtVar . ENDFIX Essbase performs the following calculations: 1. if the Quit variable is set to 1. /*Declare a temporary array variable called Rollback and base it on the Measures dimension */ ARRAY Rollback [Measures]. 5. 4. ENDIF. Essbase uses Rollback to store the Budget values. AcceptableError = Target * (AcceptableErrorPercent). The LOOP command ensures that the commands between LOOP and ENDLOOP are cycled through 35 times for each member combination.PriorVar). Essbase fixes on the Jan -> Budget values for all Product and Market members. DependencyCheck. then the LOOP is broken and the calculation continues after the ENDLOOP command. Jan.Sales) / Sales. However. Market) LOOP (35.Target.). IF(@ABS(CurTarDiff) > @ABS(AcceptableError)) Slope = (Profit . Slope. NxtVar.PriorTar) / (Sales . ELSE Budget = Rollback. Quit = 0. The size of Rollback is based on the number of members in the Measures dimension. CurTarDiff.PriorTar. CALC DIM(Measures). Where appropriate. PriorTar. It declares the required temporary variables using the VAR command.AcceptableError. PriorTar = Profit. NxtVar = Sales . ENDIF. Quit) Sales (Rollback = Budget. PctNewVarChange = . 3.10. PriorVar = Sales. Sales (DependencyCheck = PriorVar . performing the following calculations: 470 Reviewing Examples of Calculation Scripts . the initial values are set. Essbase declares a one-dimensional array called Rollback. PriorVar.

The IF command checks that DependencyCheck is not 0 (zero). It calculates the acceptable error. and places the result in Sales. adds the current Sales value. Essbase places the value in the Rollback array into Budget. Budget Profit Margin Sales COGS Total Expenses Marketing Payroll Misc Inventory Jan 15. It retains the current Sales value. The IF command checks to see if the absolute value (irrespective of the + or – sign) of CurTarDiff is greater than the absolute value of the acceptable error (AcceptableError).a. Essbase breaks the LOOP command by setting the value of Quit to 1. If it is. It subtracts the PriorTar value from the PriorVar value and places the result in the DependencyCheck temporary variable.00 14. The calculation continues after the ENDLOOP command. The calculation continues after the ENDLOOP command.00 3. c. b. It multiplies the Target value (15000) by the AcceptableErrorPercent value (0. h. It calculates a new Sales value.917.00 32. Essbase calculates and consolidates the Measures dimension. It places the Profit value for the current member combination in the PriorTar temporary variable. It multiplies the PctNewVarChange value (0.917. f. ● If DependencyCheck is 0.00 17. 6. The results are shown in this table: Product. NxtVar. then Essbase subtracts the Target value (15000) from the current Profit and places the result in the CurTarDiff temporary variable. Essbase calculates and consolidates the Measures dimension. If it is not greater than AcceptableError.671. d. It retains the current Profit value. Market.000. e.755. Essbase places the Budget -> Sales value in the Rollback temporary array variable.1) by the current Sales value.001) and places the result in the AcceptableError variable. ● If DependencyCheck is not 0. It places the Sales value for the current member combination in the PriorVar temporary variable. Essbase breaks the LOOP command by setting the value of Quit to 1.00 52.515.00 0 Label Only member Goal Seeking Using the LOOP Command 471 . g.50 19. Essbase calculates the Slope. and PctNewVarChange temporary variables.402.

12.49489762 Forecasting Future Values The following example uses the @TREND function to forecast sales data for June through December.@LIST(Jan. @LIST(1. or the underlying variable values for which the forecast is sought. The @LIST function is needed to group the three members as a comma-delimited list and to keep the list separate from other parameters.Mar. or the members that contain the known data values.3. The following example is based on the Sample Basic database.Apr) @LIST(6. The @RANGE function combines the ErrorLR member with Ylist (Jan.10. Essbase needs to number the Ylist values accordingly (1. Market. The goodness-of-fit results are placed in this member. This calculation script defines the forecasting: Sales (@TREND(@LIST(Jan.). Represents the YforecastList.10. Represents the errorList. assuming that data currently exists only up to May.Apr). Assume that the Measures dimension contains an additional child. or the member list where results of the goodness of fit of the trend line to Ylist are placed. The extra comma after the Xlist parameter indicates that a parameter has been skipped. or line.3.Product. Apr) to produce a member list.Mar. Represents the XforecastList.7.12) Jun:Dec 472 Reviewing Examples of Calculation Scripts .8. ErrorLR.9.. Using the linear regression forecasting method. The default weight of 1 is used for this example.8.3.11. or the member list into which the forecast values are placed. Since Feb and May are skipped. that starts with the known data values from selected previous months and continues with forecasted values based on the known values.Apr) Description Represents the Ylist. or the underlying variable values.Mar. Mar. in this case.10. In this example. the weightList parameter. @LIST(6. Represents the Xlist.9. @LIST(Jan. so the values are simply 6. @RANGE(ErrorLR.12). The values placed in errorList are the differences between the data points in Ylist and the data points on the trend line produced.9. @RANGE(ErrorLR. values are forecast for Jun through Dec based on the values for Jan.4).Apr)).4) . this example demonstrates how to check the results of the trend for “goodness of fit” to the known data values.@LIST(1. Jun:Dec.47839913 62.LR). This example forecasts values consecutively for Jun through Dec. this example produces a trend.4).11.7.Mar. Budget Ratios Margin % Profit % Jan Label Only member 28. and Apr.7. Mar.11. In addition. This table explains each parameter: Parameter @LIST(Jan.8.

performing the following calculations: 1.57 #MI -13.57) means that after Essbase calculates the trend line. Essbase finds the known data values on which to base the trend (Sales for Jan.49 2303. Mar.14 #MI #MI #MI #MI #MI #MI #MI #MI Essbase cycles through the database. the value in ErrorLR for Jan (4.71 2295.57.86 2292 ErrorLR 4. Mar.71 9. as specified for the Ylist and Xlist parameters in the calculation script.29 2307.Parameter LR Description Specifies the Linear Regression method. as specified for the YforecastList parameter in the calculation script. Essbase calculates the goodness of fit of the trend line to the data values for Jan.14 2311. the difference between the Sales value for Jan (2339) and the Jan value on the trend line is 4. This table shows the results of the calculation script: 100 West Actual Sales Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2339 2298 2313 2332 2351 2315. For example. Essbase calculates the trend line using Linear Regression and places the results in Sales for Jun through Dec. and Apr and places the results in ErrorLR for those months. 2. 3. The ErrorLR values for Feb and May are #MISSING since these months were not part of Ylist. Apr).57 2299. Forecasting Future Values 473 .

474 Reviewing Examples of Calculation Scripts .

.... Essbase requires that you have a security level of Database Manager or higher to create and manage custom-defined macros...... You should register custom-defined macros globally only after you have tested them and are ready to use them as part of a production environment............ 478 Copying Custom-Defined Macros................... 475 Viewing Custom-Defined Macros ............29 In This Chapter Developing Custom-Defined Calculation Macros Understanding Custom-Defined Macros ................................. Understanding Custom-Defined Macros Custom-defined macros use an internal macro language that enables you to combine calculation functions and operate on multiple input parameters.......................................................................... Viewing Custom-Defined Macros View a custom-defined macro to determine whether a macro has been successfully created or whether a custom-defined macro is local or global........ Understanding Custom-Defined Macros 475 ......................................................... make sure to create and test new macros locally within a test application..................... 478 Updating Custom-Defined Macros ............. Macros enable you to combine multiple calculation functions into a single function............................................... Note: The information in this chapter is not relevant to aggregate storage databases................. See the Essbase Technical Reference............................ 476 Using Custom-Defined Macros ................................................................................................................... Custom-defined macros are written with calculator functions and special macro functions.......... When developing and testing custom-defined macros........................................................................ 475 Creating Custom-Defined Macros ............................... 479 This chapter explains how to develop custom-defined macros and how to use them in calculation scripts and formulas............................................................ 479 Removing Custom-Defined Macros...........................

use a tool: Tool Administration Services MaxL Topic Viewing Custom-Defined Macros display macro Location Essbase Administration Services Online Help Essbase Technical Reference Creating Custom-Defined Macros When you create a custom-defined macro. do not create the macros as global (using a macro name without the AppName. prefix). the macro is available to all applications on the server where it was created. all Essbase applications can use it. For rules about naming custom-defined macros. When you create a global custom-defined macro. Caution! When testing macros. the macro is only available in the application in which it was created. because global macros are difficult to update. Essbase records the macro definition and stores it for future use. 476 Developing Custom-Defined Calculation Macros . When you create a local customdefined macro.➤ To view a custom-defined macro. Be sure you test custom-defined macros in a single application (and create them only in that application) before making them global macros. Create the macro once. Use these sections to understand more about creating custom-defined macros and to find instructions for creating them: ● ● ● ● “Understanding Scope” on page 476 “Naming Custom-Defined Macros” on page 477 “Creating Macros” on page 477 “Refreshing the Catalog of Custom-Defined Macros” on page 478 Understanding Scope You can create custom-defined macros locally or globally. see “Updating Custom-Defined Macros” on page 478. When you create a global custom-defined macro. see “Naming Custom-Defined Macros” on page 477. For information about the methods for updating custom-defined macros. and then you can use it in formulas and calculation scripts until the macro is updated or removed from the catalog of macros.

Macro names must be different from each other. numbers. @RANGE(@@S))' spec '@COUNTRANGE(MemberRange)' comment 'counts all non-missing values'. @RANGE(@@S))' spec '@COUNTRANGE(MemberRange)' comment 'counts all non-missing values'.'@COUNTRANGE'(Any) AS '@COUNT(SKIPMISSING. and _. If an application contains a local macro that has the same name as a global macro. Creating Custom-Defined Macros 477 . This prefix assigns the macro to an application. Macros must have unique names. and from the names of existing calculation functions. the local macro takes precedence and is used for calculation. The names of custom-defined macros which are only called by other macros should start with “@_” to distinguish them from general use macros and functions.Naming Custom-Defined Macros Remember these requirements when you create macro names: ● The names of custom-defined macro must start with an “@” symbol. so the macro is only available within that application.) as a prefix before the name of the local macro. For example. and the following symbols: @. The rest of a macro name can contain letters. $. from the names of custom-defined functions. For example. use the following MaxL statement to create a local macro named @COUNTRANGE used only in the Sample application: create macro Sample. #. use a tool: Tool Administration Services MaxL Topic Creating Custom-Defined Macros create macro Location Essbase Administration Services Online Help Essbase Technical Reference Add the application name plus a period (. @MYMACRO. use the following MaxL statement to create a global macro named @COUNTRANGE: create macro'@COUNTRANGE'(Any) AS '@COUNT(SKIPMISSING. Sample is the prefix for the local macro name. Macro names can not contain spaces. ● ● Creating Macros ➤ To create a custom-defined macro. In this example. for example.

Using Custom-Defined Macros After creating custom-defined macros. restart the server. For information about creating and running calculation scripts. prefix on the macro name—are only available for use in calculation scripts or formulas within the application in which they were created. use the refresh custom definitions MaxL statement. you can use them like native calculation commands. ● If the custom-defined macro was registered locally—within a specific application—you must use a calculation script or formula within that application. For a review 478 Developing Custom-Defined Calculation Macros . you can use any calculation script or formula on any application on the server. or replace “Sales. To use the custom-defined macro shown earlier in this chapter. you must determine whether the macro is registered locally or globally.” Updating Custom-Defined Macros When you update a custom-defined macro. Jan:Dec). or open an existing calculation script or formula.Refreshing the Catalog of Custom-Defined Macros ➤ To refresh the catalog of custom-defined macros for all applications on a server. ➤ To refresh the catalog of custom-defined macros for a single application. ● 2 Add the custom-defined macro to a new or existing calculation script or formula. and then run it as usual. “Developing Formulas. Global macros—created without the AppName. 3 Save the calculation script or formula. see Chapter 21.” For information about creating and running formulas. See “Creating Custom-Defined Macros” on page 476. ➤ To use a custom-defined macro: 1 Create a calculation script or formula. prefix—are available to all calculation scripts and formulas on the server where they were created. Use this calculation script with the Sample Basic database. “Developing Calculation Scripts. Local macros—created using the AppName. Local custom-defined macros are created using an AppName prefix in the macro name and can be used only within the application where they were created. For example. If the custom-defined macro was registered globally. Jan:Dec” with a range of members in a test database. see Chapter 27. use the following MaxL statement to refresh the catalog of custom-defined macros for the Sample application: refresh custom definition on application sample. type the following calculation script: CountMbr = @COUNTRANGE(Sales.

Copying Custom-Defined Macros You can copy custom-defined macros to any Essbase Server and application to which you have appropriate access. so verify that no calculation scripts or formulas on the server are using a global customdefined macro before removing it. see “Viewing Custom-Defined Macros” on page 475. see “Viewing Custom-Defined Macros” on page 475. use a tool: Tool Administration Services MaxL Topic Copying Custom-Defined Macros create macro Location Essbase Administration Services Online Help Essbase Technical Reference Removing Custom-Defined Macros When removing a custom-defined macro. use the following MaxL statement to change the global macro @COUNTRANGE: create or replace macro '@COUNTRANGE'(Any) as '@COUNT(SKIPMISSING. For a review of methods used to determine whether a custom-defined macro is local or global. see “Refreshing the Catalog of Custom-Defined Macros” on page 478. ➤ To copy a custom-defined macro. you must first determine whether the macro is registered locally or globally. @RANGE(@@S))'. Before removing custom-defined macros. use the following MaxL statement to change the local macro @COUNTRANGE which is used only in the Sample application: create or replace macro Sample. verify that no calculation scripts or formulas are using them. For a review of the methods used to update the catalog of macros after you change a custom-defined macro. ➤ To update a custom-defined macro.'@COUNTRANGE'(Any) as '@COUNT(SKIPMISSING. use a tool: Tool Administration Services MaxL Topic Editing Custom-Defined Macros create or replace macro Location Essbase Administration Services Online Help Essbase Technical Reference For example.of the methods used to determine whether a custom-defined macro is local or global. @RANGE(@@S))'. For example. Copying Custom-Defined Macros 479 . Global custom-defined macros can be used in calculation scripts and formulas across a server. The procedure for removing global custom-defined macros is more complex than that for removing local custom-defined macros and should only be performed by a DBA.

'@COUNTRANGE'. ➤ To remove a custom-defined macro. use the following MaxL statement to remove the global macro @COUNTRANGE: drop macro '@COUNTRANGE'. use a tool: Tool Administration Services MaxL Topic Deleting Custom-Defined Macros drop macro Location Essbase Administration Services Online Help Essbase Technical Reference For example. 480 Developing Custom-Defined Calculation Macros . use the following MaxL statement to remove the local macro @COUNTRANGE which is used only in the Sample application: drop macro Sample. For example. see “Refreshing the Catalog of Custom-Defined Macros” on page 478.For a review of methods used to update the catalog of macros after you remove a custom-defined macro.

........... 487 Updating Custom-Defined Functions........................... Note: The information in this chapter is not relevant to aggregate storage databases........ 490 Copying Custom-Defined Functions ............................... see the Hyperion Essbase . No custom-defined functions are displayed until they have been created and registered..... Viewing Custom-Defined Functions You can view custom-defined functions to determine whether a function has been registered successfully and whether it is registered locally or globally......................... 492 This chapter explains how to develop custom-defined functions and use them in Essbase formulas and calculation scripts...................... Viewing Custom-Defined Functions 481 .................................................. Essbase does not supply sample customdefined functions.......................................30 In This Chapter Developing Custom-Defined Calculation Functions Viewing Custom-Defined Functions .............................................................................System 9 Installation Guide........... Essbase does not provide tools for creating Java classes and archives.............................. Custom-defined functions are written in the JavaTM programming language and enable you to create calculation functions not otherwise supported by the Essbase calculation scripting language................................... For information on compatible versions of Java............................. 491 Considering How Custom-Defined Functions Affect Performance and Memory . This chapter assumes that you have a compatible version of the Java Development Kit (JDK) and a text editor installed on the computer you use to develop custom-defined functions........................ see the Essbase Technical Reference......... 481 Creating Custom-Defined Functions......................................................................................................... 482 Using Registered Custom-Defined Functions......................................... For additional examples of custom-defined functions....... 488 Removing Custom-Defined Functions .........

For instructions.➤ To view a custom-defined function. Write a public Java class that contains at least one public. Install the Java class created in step 2. For instructions. see “Installing Java Classes on Essbase Server” on page 485. 482 Developing Custom-Defined Calculation Functions . The display function statement lists global functions without an application name to indicate that they are global. Creating and testing these Java classes and methods is the first step toward creating a custom-defined function. Register the custom-defined function as a local or global function. If the application contains a function with the same name as a global function. 4. Creating Custom-Defined Functions There are several steps required to create a custom-defined function: 1. Understanding Java Requirements for Custom-Defined Functions The basis of a custom-defined function is a Java class and method created by a DBA or Java programmer to perform a particular type of calculation. use a tool: Tool Administration Services MaxL Topic Viewing Custom-Defined Functions display function Location Essbase Administration Services Online Help Essbase Technical Reference For example. static method to be used as a custom-defined function. For instructions. See the following sections for more information: ● ● ● ● ● “Understanding Java Requirements for Custom-Defined Functions” on page 482 “Understanding Method Requirements for Custom-Defined Functions” on page 483 “Understanding Security and Custom-Defined Functions” on page 484 “Understanding Scope and Custom-Defined Functions” on page 484 “Naming Custom-Defined Functions” on page 484 2. see “Creating and Compiling the Java Class” on page 485. 3. see “Registering Custom-Defined Functions” on page 486. only the local function is listed. Learn the requirements for custom-defined functions. use the following MaxL statement to view the custom-defined functions in the Sample application and any registered global functions: display function Sample.

For more information. However.String com. FALSE.calculator. The method return data type can be void or any of the preceding data types. because registering functions globally makes it more difficult to update them if you find problems. they may not be recorded or displayed correctly in Essbase. Do not register functions globally for testing.lang.CalcBoolean arrays of any of these types Type boolean char short. it is recommended that you create all the methods you want to use as custom-defined functions in a single class. in the documentation for the JDK. In general. Double variables should be checked for infinite or Not-a-Number values and set to finite values before being returned to Essbase. if you want to add new custom-defined functions that are not going to be used across all applications on the Essbase Server. Strings are mapped to a string type. see the entry for the class. int. Duplicate class names cause methods in the duplicate class not to be recognized. double CalcBoolean is an Essbase-specific data type that can include three values—TRUE.essbase. verify that each class name is unique. see the documentation for the JDK. long float. For more information about the other listed data types. Creating Custom-Defined Functions 483 . When you are satisfied with the output of the methods. Double. Returned data types are converted to Essbase-specific data types. After creating the Java classes and methods for custom-defined functions. Note: Double variables returned with infinite or Not-a-Number values are not supported by Essbase. create them in a new class and add them to the Essbase Server in a separate . Boolean values are mapped to the CalcBoolean data type. When creating multiple Java classes that contain methods for use as custom-defined functions. and you cannot register those methods as custom-defined functions.jar file. Understanding Method Requirements for Custom-Defined Functions Methods in custom-defined functions can have any combination of the following supported data types as input parameters: Table 28 Data Types Allowed As Input Parameters Type byte java. install them on Essbase Server and register them in a single test application. All other values are mapped to a double type. test them using test programs in Java.You can create more than one method in a class for use as a custom-defined function.hyperion. and #MISSING. If these values are returned from a Java program.

The rest of a function name can contain letters. for example. ● ● ● For information about and instructions for registering custom-defined functions. and from the names of existing calculation functions. #. Understanding Security and Custom-Defined Functions Essbase requires that you have these security permissions: ● Creating. deleting.For additional examples of Java custom-defined functions. This name is used in calculation scripts and formulas and is distinct from the Java class and method name used by the function. The names of custom-defined functions which are called only by custom-defined macros should start with “@_” to distinguish them from general use functions and macros. it is available to all applications on the Essbase Server on which it was registered. and managing global (server-wide) custom-defined functions requires a security permission of Administrator. deleting. Creating. Function names must be different from each other. the local function is used for calculation. Function names cannot contain spaces. from the names of custom-defined macros. and _. Naming Custom-Defined Functions When you register a custom-defined function in Essbase. You should never register custom-defined functions globally until you have thoroughly tested them and are ready to use them as part of a production environment. ● Understanding Scope and Custom-Defined Functions Custom-defined functions are registered as either local (application-wide) or global (Essbase Server-wide) in scope. 484 Developing Custom-Defined Calculation Functions . and managing local (application-wide) custom-defined functions requires a security permission of Application Manager or higher. $. When developing and testing custom-defined functions. If an Essbase application contains a local function that has the same name as a global function. Remember these requirements when you create function names: ● Custom-defined function names must start with an @ symbol. see the MaxL statement create function in the Essbase Technical Reference. When you register a local custom-defined function. see “Registering Custom-Defined Functions” on page 486. When you register a global custom-defined function. make sure to register and test new functions locally within a test application. @MYFUNCTION. Custom-defined functions must have unique names. numbers. and the following symbols: @. you give the function a name. it is available only in the application in which it was registered.

class 2 Copy the . and then copy the .java. first compile the classes into a Java Archive (. If this directory does not exist.length. For example. i++) { double d = data [i]. Note: Either stop and restart Essbase applications or stop and restart Essbase Server when you install new .java 4 Resolve any compiling errors and repeat steps 2 and 3 until the compiler creates a new . CalcFunc. for example.jar CalcFunc.Creating and Compiling the Java Class ➤ To create a Java class for a custom-defined function: 1 Start a text editor and create a Java class. n = data. create the directory. } } 2 Save the Java class as a . The ARBORPATH\app\AppName\udf\ directory where AppName is the name of the application where the local custom-defined function will be used. for (i=0. double sum = 0. At the operating system command prompt.jar file and use the JDK jar tool.jar files containing global custom-defined functions. type this command: >jar cf CalcFunc.jar file from a . for example.class.jar file to a specific location on the computer running Essbase Server.0d.class file and install it on an Essbase Server: 1 At the operating system command prompt. Installing Java Classes on Essbase Server When you install Java classes on Essbase Server.java class. This location is recommended for . type this command: >javac CalcFunc. to compile the CalcFunc.class file. move to the directory containing the class you want to compile and use the javac tool.jar file. To add CalcFunc.jar) file. For example. CalcFunc. 3 Compile the Java class using the JDK javac tool.java file. ➤ To create a . sum = sum + d. } return sum. If this directory does not ● Creating Custom-Defined Functions 485 . open a text editor and create this class: public class CalcFunc { public static double sum (double[] data) { int i. i<n.class to a . move to the directory containing the class you want to add to a .jar file to one of the following locations on the computer running Essbase Server: ● The ARBORPATH\java\udf\ directory.jar files.

you must register the custom-defined functions before you can use them in calculation scripts and formulas. Be sure you test custom-defined functions in a single application (and register them only in that application) before making them global functions. Otherwise. do not include the application name as a prefix. see “Naming Custom-Defined Functions” on page 484.jar files on Essbase Server.jar files and installed the . Caution! Do not register global functions for testing. To register a custom-defined function with global scope.exist. After you register a custom-defined function. 3 If the functions will only be used by specific applications.'@JSUM' as 'CalcFunc. Use the same process for updating the catalog of functions as you do for updating the catalog of macros. ➤ To register a custom-defined function. Registering Custom-Defined Functions After you have compiled the Java classes for custom-defined functions into . If the . When you register a global custom-defined function.sum' spec '@JSUM(memberRange)' comment 'adds list of input members'. create the directory. Use this location if you want the code in the . use the following MaxL statement to register as a global function the custom-defined function in the class CalcFunc from “Creating and Compiling the Java Class” on page 485: 486 Developing Custom-Defined Calculation Functions . restart Essbase Server. For example. you must modify the CLASSPATH variable to include the full path and file name for the .jar file is placed in another location.jar file to only be used with a specific application.jar file. because registering them globally makes it more difficult to change them if you find problems. use a tool: Tool Administration Services MaxL Topic Creating Custom-Defined Functions create function Location Essbase Administration Services Online Help Essbase Technical Reference To register a custom-defined function with local scope. For rules about naming custom-defined functions. see “Refreshing the Catalog of CustomDefined Macros” on page 478. For example. use the following MaxL statement to register the local custom-defined function in the class CalcFunc from “Creating and Compiling the Java Class” on page 485 to be used within the Sample application: create function Sample. restart those applications in Essbase. all Essbase applications on the Essbase Server can use it. include the application name as a prefix.

prefix on the function name —are only available for use in calculation scripts or formulas within the application in which they were registered. 3 Save the calculation script or formula. However. 1000. Use this calculation script with the Sample Basic sample database. To use the custom-defined function shown earlier in this chapter. you can use them like native Essbase calculation commands. Functions you registered locally—using the AppName.34)). you can use any calculation script or formula on Essbase Server. spec '@JSUM(memberRange)' comment 'adds list of input members'. Note: Specifying input parameters for the Java method is optional. Using Registered Custom-Defined Functions After registering custom-defined functions. use this calculation script: "New York" = @JSUM(@LIST(2. 6.create function '@JSUM' as 'CalcFunc.” Using Registered Custom-Defined Functions 487 . If you do not specify input parameters. If the custom-defined function was registered globally. specifying the parameters for each version of the function. ● If the custom-defined function was registered locally—within a specific application—you must use a calculation script or formula within that application.6. See Chapter 27. or replace “New York” with the name of a member in a test database. “Developing Calculation Scripts” and Chapter 21. 4. if you are registering two or more custom-defined functions with the same method name but with different parameter sets. ● 2 Add the custom-defined function to a new or existing calculation script or formula.AppName prefix is not included in the name of the function. see “Registering Custom-Defined Functions” on page 486. The .5. For information and instructions for registering custom-defined functions. The lack of a prefix makes a function global. you must register each version of the function separately. or open an existing calculation script or formula. ➤ To use a registered custom-defined function: 1 Create a calculation script or formula.sum'. If you registered the custom-defined functions globally. “Developing Formulas. Essbase reads them from the method definition in the Java code.3. and then run it as usual. then the functions are available to all calculation scripts and formulas on the Essbase Server where the functions are registered.

there are two major issues to consider: ● ● Is the function registered locally or globally? Have the class name. see “Viewing Custom-Defined Functions” on page 481. ➤ To update a custom-defined function whose signature has not changed: 1 Make the changes to the Java class for the custom-defined function and use Java test programs to test its output.jar file. In either situation. you can simply replace the . you must replace the . shut down the application in which it was registered. Updating Local Custom-Defined Functions Local custom-defined functions are registered with an AppName. If the function is registered globally. method name. shut down all running applications. method name and input parameters—have not changed and the function has only one set of input parameters (it is not an overloaded method). if the signature of the custom-defined function—the Java class name. 2 Compile the Java classes and encapsulate them in a .jar file that contains the code for the function.jar file to Essbase Server over the existing . For a review of methods to determine whether a custom-defined function is local or global. using the same name as the previous . you must stop and restart the Essbase application or Essbase Server where the custom-defined function is registered. in most cases. method name. To update a local custom- 488 Developing Custom-Defined Calculation Functions .jar file with the same name. and then re-register the function. Note: The following procedure is effective only if the signature of the custom-defined function—the Java class name.jar file. and input parameters for the custom-defined function—has not changed. Make sure to include any other classes and methods for custom-defined functions that were included in the previous . To update a custom-defined function. prefix on the function name and can be used only within the application where they were registered. or input parameters changed in the Java code for the custom-defined function? The answers to these questions determine the procedure for updating the custom-defined function.jar file. 3 Perform one of the following steps: ● ● If the function is registered locally.Updating Custom-Defined Functions When you update a custom-defined function. However. 5 Restart the applications you shut down in step 3. depending on whether it is a local or global function.jar file that contains the function. 4 Copy the new .

Updating Global Custom-Defined Functions Global custom-defined functions are registered without an AppName. shut down all Essbase applications.jar file with the same name. Caution! Only a DBA should update global custom-defined functions. see “Editing Custom-Defined Functions” in the Essbase Administration Services Online Help. you must stop and restart the Essbase application where the function is registered.jar file. so you should verify that no calculation scripts or formulas are using a global customdefined function before updating it.'@JSUM' as 'CalcFunc. Make sure to include any other classes and methods for custom-defined functions that were included in the previous . ● In Administration Services. for example. ● ● 4 Copy the new . use the create or replace function statement to replace the custom-defined function.jar file contains any global custom-defined functions.jar file to Essbase Server over the existing . 2 Compile the Java classes and encapsulate them in a . shut down any Essbase applications that use these functions. prefix on the function name and are available in any application running on the Essbase Server where they are registered. using the same name as the previous . ● In MaxL.jar file you are replacing. shut down all Essbase applications. Updating Custom-Defined Functions 489 . If you are unsure as to which Essbase applications use which functions in the . 3 Perform one of the following steps: ● If the .sum'. type this statement: create or replace function sample. Global custom-defined functions can be used in calculation scripts and formulas across Essbase Server.defined function.jar file. you must stop and restart all applications on Essbase Server.jar file contains local custom-defined functions only. If the .jar file. ➤ To update a local custom-defined function: 1 Make the changes to the Java class for the custom-defined function and use Java test programs to test its output. 5 Use MaxL or Administration Services to replace the custom-defined function. To update a global custom-defined function.

Removing Local Custom-Defined Functions Local custom-defined functions are registered with an AppName. Make sure to include any other classes and methods for custom-defined functions that were included in the previous . Before removing custom-defined functions. using the same name as the previous .sum'. Global custom-defined functions can be