maxl

March 2, 2018 | Author: phanithota | Category: Scripting Language, Databases, Microsoft Sql Server, Computer File, File Format
Share Embed Donate


Short Description

Download maxl...

Description

MaxL Here are some examples of Essbase Maxl Scripts. They were based off of the Sample.Basic and ASOsamp.Sample databases. Load Data into the ASOsamp.Sample database. Those items in bold should be utilized in all maxl scripts. spool on to LoadData.Log; login admin password on localhost; set timestamp on; /*--------------------------------------------------------------------------*/ /* UNLOAD APPLICATION */ /*--------------------------------------------------------------------------*/ alter system unload application ASOsamp; /*--------------------------------------------------------------------------*/ /* LOAD APPLICATION */ /*--------------------------------------------------------------------------*/ alter system load application ASOsamp; /*--------------------------------------------------------------------------*/ /* CLEAR DATA FROM ASO APPLICATION */ /*--------------------------------------------------------------------------*/ alter database ASOSamp.Sample reset; /*--------------------------------------------------------------------------*/ /* INITIALIZE ASO BUFFER */ /*--------------------------------------------------------------------------*/ alter database ASOSamp.Sample initialize load_buffer with buffer_id 1; /*--------------------------------------------------------------------------*/ /* LOAD DATA TO BUFFER 1 */ /*--------------------------------------------------------------------------*/ import database ASOSamp.Sample data from local data_file "'$ARBORPATH/app/ASOsamp/Sample/dataload.txt'" using server rules_file 'dataload' to load_buffer with buffer_id 1 on error write to 'dataload.err'; /*--------------------------------------------------------------------------*/ /* LOAD DATA FROM BUFFER */ /*--------------------------------------------------------------------------*/ import database ASOSamp.Sample data from load_buffer with buffer_id 1; /*--------------------------------------------------------------------------*/ /* AGGREGATE DATABASE */ /*--------------------------------------------------------------------------*/ execute aggregate process on database ASOSamp.Sample stopping when total_size exceeds 1.5; logout; spool off; exit;

NOTE: You can put the spool on after the login code so that your log file will capture the login information. Other commonly used Maxl Script commands: /*--------------------------------------------------------------------------*/ /* LOAD APPLICATION AND DATABASE */ /*--------------------------------------------------------------------------*/ alter system load application ASOsamp; alter application ASOsamp load database Sample;

/*--------------------------------------------------------------------------*/ /* COPY BSO OTL TO ASO APPLICATION */ /*--------------------------------------------------------------------------*/ CREATE OR REPLACE OUTLINE ON AGGREGATE_STORAGE DATABASE ASOsamp.Sample AS OUTLINE ON DATABASE Sample.Basic ; /*--------------------------------------------------------------------------*/ /* BUILD ACCOUNTS DIMENSION */ /*--------------------------------------------------------------------------*/ set Dimension=Accounts; set RulesFile=AcctASO; import database ASOsamp.Sample dimensions from local data_file 'C:\Temp\Accounts.txt' using server rules_file 'Accounts' on error write to 'DimAcct.err'; NOTE: Same syntax for Block Storage vs Aggregate Storage Databases /*-------------------------------------------------------------------*/ /* EXPORT DATABASE TO 8 FILES */ /*--------------------------------------------------------------------------*/ export database Sample.Basic level0 data in columns to data_file 'C:\Temp\ExportData1.0.Txt', 'C:\Temp\ExportData2.0.Txt', 'C:\Temp\ExportData3.0.Txt', 'C:\Temp\ExportData4.0.Txt', 'C:\Temp\ExportData5.0.Txt', 'C:\Temp\ExportData6.0.Txt', 'C:\Temp\ExportData7.0.Txt', 'C:\Temp\ExportData8.0.Txt'; NOTE: This process is useful when the export files are very large and go over the standard 2GB size and this gives you the ability to control how many files are created (always 8 files)...especially if you have automated processes that rebuilds your databases each night. /*--------------------------------------------------------------------------*/ /* SET VARIABLE FOR CURRENTMONTH */ /*--------------------------------------------------------------------------*/

alter database Basic.Sample set variable "CurrentMonth" "July"; /*--------------------------------------------------------------------------*/ /* EXPORT DATA USING REPORT SCRIPT */ /*--------------------------------------------------------------------------*/ export database ASOsamp.Sample using report_file "'$ARBORPATH/app/ASOsamp/Sample/XptData.rep'" to data_file 'C:\Temp\ReportExport.txt'; /*--------------------------------------------------------------------------*/ /* EXECUTE CALCULATION */ /*--------------------------------------------------------------------------*/ execute calculation Sample.Basic.CALCALL; /*--------------------------------------------------------------------------*/ /* KILL ALL REQUESTS TO DATABASE */ /*--------------------------------------------------------------------------*/ alter system kill request on application Sample; /*--------------------------------------------------------------------------*/ /* LOGOUT ALL SESSIONS TO DATABASE */ /*--------------------------------------------------------------------------*/ alter system logout session on application Sample; /*--------------------------------------------------------------------------*/ /* DISABLE CONNECTIONS TO DATABASE */ /*--------------------------------------------------------------------------*/ alter application Sample disable connects; /*--------------------------------------------------------------------------*/ /* ENABLE CONNECTIONS TO DATABASE */ /*--------------------------------------------------------------------------*/ alter application Sample enable connects; /*--------------------------------------------------------------------------*/ /* CLEAR APPLICATION LOG FILE */ /*--------------------------------------------------------------------------*/ alter application Sample clear logfile; /*--------------------------------------------------------------------------*/ /* CLEAR ESSBASE LOG FILE */ /*--------------------------------------------------------------------------*/ alter system clear logfile; /*--------------------------------------------------------------------------*/ /* LOAD DATA TO ASO SLICE */

/*--------------------------------------------------------------------------*/ import database ASOsamp.Sample data from load_buffer with buffer_id 1 override values create slice; MaxL Script with Variables As I began writing MaxL scripts, I found the Hyperion documentation lacking sample scripts. The few sample scripts I found on the internet just didn’t have enough flexiblity in them. Scripts, in my opinion, must be descriptive, flexible, streamlined and above all accurate. So, with the help of a few friends who have crossed this road before me and a few sample scripts from them (Special Thanks to John Hayes), I started. Keep in mind, I’m an avid script writer. I’ve done everything from Windows and various Unix shell scripts to Oracle SQL scripts. So for me, it was more a matter of mastering the proprietary commands and testing them in a nonproduction environment. The script I’ll share with you is more to show the use of variables and scripting style than to explain what each command does. So, if you’re familiar with the Hyperion products and MaxL this will be a piece of cake! There a many ways of writing scripts but they are always specific to the environment they are run in. So, for me, in this particular case the script below is one that was called by a korn shell script and CRON’d. The Unix/Linux CRON (basic scheduling) utility is as dumb as a doornail – you must provide full path to everything in the script or risk missing a critical step. My point: know your environment! Secondly, know what you are trying to accomplish within your script! In the script below, the first two variables are specified externally at runtime or by the calling script. The remaining variables are a means of specifying very long paths in only one place. When using a variable in this way it’s much easier to read the script because you don’t have the long path overshadowing the command and have one general area to alter if the path changes. Comment lines in MaxL start with /* and end with */ . Sample MXL script with variables: (I’ll try and change the font on the script – it’s easier to read in Courier-New) /* :::======================================================= ===== */ /* ::: SCRIPT: Appl_Bckup.mxl

*/

/* :::———————————————————— */ /* ::: This script accepts two input parameters, sets variables, */ /* ::: places the application in archive (read-only) mode, shells */ /* ::: out of MaxL to TAR all relevant application files and

*/

/* ::: then ends the archive mode to return the application to /* ::: read/write transactions.

*/

*/

/* :::

*/

/* ::: CALLING SCRIPT: EssbaseBkupFiles.ksh /* ::: PLATFORM: /* ::: CREATED:

*/

Linux

*/

6/2008 CPena for

*/

/* ::: */ /* :::———————————————————— */ /* ::: DISCLAIMER:

*/

/* ::: This script is for use by Certified */ /* ::: Database Administrators. will not be held liable */ /* ::: when used by anyone other than a qualified DBA.

*/

/* ::: This script has been tested by on specific hardware*/ /* ::: and software to ensure quality and reliability.

*/

/* :::———————————————————— */ /* ::: Date

Initals Description

*/

/* :::———————————————————— */ /* :::06/14/08 CPena

Initial Script Creation */

/* :::

*/

/* :::======================================================= ===== */ /* ::: STEP 1 SET VARIABLES and SPOOL LOCATION

*/

/* :::======================================================= ===== */ set ESS_APPL=$1; set ESS_DB=$2; set ARBORPATH=/u01/Hyperion/AnalyticServices; set ARBORAPPL=”$(ARBORPATH)/app/$(ESS_APPL)”; set SCRIPTDIR=/u01/apps/hypadmin/scripts; set BKUPDIR=/u01/apps/hypadmin/app_bkup; set ARCHFLE=”$(ARBORAPPL)/$(ESS_APPL)-$(ESS_DB).archive”; set LVL0FLE=”$(ARBORAPPL)/$(ESS_APPL)-$(ESS_DB).lvl0Extract.txt”; echo ‘APPL.DB: ‘ $(ESS_APPL).$(ESS_DB); echo ‘ARCHFLE: ‘ $ARCHFLE; spool on to “$(SCRIPTDIR)/logs/$(ESS_APPL)-$(ESS_DB)_bkup.log”; /* :::=======================================================

===== */ /* ::: STEP 2 Start Archive (read-only) mode */ /* :::======================================================= ===== */ alter database $ESS_APPL.$ESS_DB begin archive to file “$(ARCHFLE)”; /* :::======================================================= ===== */ /* ::: STEP 3 Take a Level 0 backup - Comment out -> HOLD FOR NOW */ /* :::======================================================= ===== */ /* export database $ESS_APPL.$ESS_DB level0 data in columns to data_file “$(LVL0FLE)”; */ /* :::======================================================= ===== */ /* ::: STEP 4 Shell out to execute TAR command at LINUX Prompt */ /* :::======================================================= ===== */ shell tar -czvf $BKUPDIR/$ESS_APPL-$ESS_DB-`date +”%Y%h%d_%H%M”`.tgz –exclude *.pag –exclude *.ind $ARBORAPPL/; /* :::======================================================= ===== */ /* ::: STEP 5 End Archive */ /* :::======================================================= ===== */ alter database $ESS_APPL.$ESS_DB end archive; /* :::======================================================= ===== */ /* ::: STEP 6 Logout and exit */ /* :::=======================================================

===== */ spool off; logout; exit; When testing scripts found on the internet, always keep the standard disclaimer in mind especially if there is not one mentioned in the script comments. If you are not the author of the script and are unsure of what it does – Don’t use it. Research any command you’ve not used before. Comment out any lines you’re unsure of! The most proficient script writers will document each step with some comments. Substitution variables are nice because if you ever have to change a variables content you only have to change them in one place. Most scripts start out being a means to automate a process and can have a very long lifecycle. Do it well the first time and build on it. In the next post I’ll review the calling shell script! Let me know if you have any questions! Windows .bat script calling MAXL to shutdown and startup Hyperion 9.3.1 services and essbase database We use 2 scripts, one to shutdown and one to restart. The shutdown scripts stop our monitoring agent first, then execute the maxl script, shuts down the Essbase server, and stops the Essbase Service. We schedule it about 10 minutes before the backup agent runs to give essbase time to shutdown all the applications. The scripts also add comments into the windows event log (we run windows Server 2003). Occassionally, Essbase does not stop an application in time (e.g. long calc running). When that happens, we get a file contention and the backup for that Essbase application will fail and the file would not be include in that backup. ***** StopEssbase01.bat ******* REM Stop Patrol Agent net stop PatrolAgent REM add comment to event log c:\batch\logevent -s w "PatrolAgent has stopped" REM Shutdown Essbase Server essmsh e:\Hyperion\Scripts\System_Shutdown.msh hypeprd Rem Stop Essbase Service net stop HyS9ESBAgent9.3.1_HypService REM add comment to event log c:\batch\logevent -s w "Essbase Service has stopped" ***** System_Shutdown.msh ******** login 'admin' 'xxxxxxxxxxxx' on $1; spool on to $HYPERION_HOME\\scripts\\output\\System_Shutdown.log; alte r system shutdown; logout; spool off; exit; ***** StartEssbase01.bat *******

Rem Start Essbase Service net start HyS9ESBAgent9.3.1_HypService REM add comment to event log c:\batch\logevent -s w "Essbase Service has started" REM Start Patrol Agent net start PatrolAgent REM add comment to event log c:\batch\logevent -s w "PatrolAgent has started" try to use "SC" instead of "net" in your bat file Franck, Oracle EPM 11.1.2 – Allocations in Essbase ASO Cubes – Using MaxL scripts In the last 2 blog entries, i showed how the calculations in ASO work. Today lets look at another new feature in ASO cubes i.e the ability to run allocations directly. In a BSO cube, Allocations and Calculations are all driven through a set of calculation commands. Some Allocation features in BSO can actually be implemented using normal calculation commands (without using ALLOCATE and MDALLOCATE functions). But in the case of ASO, calculations and allocations are treated separately. So, there are 2 important aspects that we need to remember while running calculations/allocations in a ASO cube 1. Dynamic References using CurrentMember, CurrentTupule etc are not supported currently (necessary if we want to run multiple allocations within the same dimension) 2. Hierarchical references like PARENT etc are not allowed in both calculations & allocations. These references are allowed for the parameters but not for the assignment scripts/allocation amounts. The above 2 are significant drawbacks which i hope will be supported in future releases. Lets now look at a very simple example for allocation. I will be using the ASO version of the Demo>Basic cube for demonstrating this. The screenshot below shows the data that has been loaded into the cube.

If you notice, we have data for the Sales measure for all Regions except South. The idea is to allocate data into the South Region (both Sales & Cogs equally) based on the Total Expense values of the East Region. This is a very simple allocation example where our input data is at Level-0 but we are allocating from non Level-0. One good thing about this example is the fact that this shows that though ASO does not support input to non level-0 members, it supports allocation from them. An Allocation in a ASO cube does not require a separate calculation script. All allocations are done through MaxLs directly. An allocation MaxL contains four main parts (in addition to other parameters which i shall not cover here). 1. POV – POV or a Point of View provides execution context to an allocation. A POV allows only reference to level-0 members. For every combination in the POV, the allocation will be executed once. POV is specified in the form of a MDX-Set. 2. Amount – This can contain a static member, Tupule or a constant. This does not support MDX expressions. In our example above, the amount will the (Total Expenses,East) Tupule. Ideally, Amount & POV should have all the dimensions in the cube. 3. Target – Target is specified in the form of a MDX Tupule. Basically it represents the region that will act as a target for the allocation. In our case, this will be empty. 4. Region – Region is a MDX set expression. This represents the target region where the data will be allocated. The dimensions specified in POV, Target and Region should be mutually exclusive as they all combine to form the target region. In the example above, Children(Total Expenses) & the Children (South) will form the Region. 5. Basis – This is commonly used when we are doing member based allocations. In our case, since we are using dividing the values equally (Spread allocation), this is optional. So the final formula that i shall be using for achieving this is given below execute allocation process on database DemoASO.Basic with pov "Crossjoin(Descendants([Year],[Year].levels(0)), Crossjoin(Descendants([Product],[Product].levels(0)), Descendants([Scenario],[Scenario].levels(0))))" amount "([East],[Total_Expenses])" target "" range "CrossJoin({[Sales],[Cost_of_Goods_Sold]},

Descendants([South],[Market].levels(0)))" spread;

As you see, Essbase has generated the necessary cells to accomplish this. As i mentioned last time in the Calculation blog post, the allocations/calculations are done separately and then the updated cells are pushed through external data load buffers. So, you would start noticing cells being loaded into incremental slices.

And if you look at the data, the South region would now have data with the values uniformly distributed.

Though this does work there are some inherent drawbacks. As ASO does not accept data at non level-0 members, the way allocation maxL’s are designed it makes it very tough(though possible) to do hierarchical allocations within the same dimension. Hopefully the introduction of dynamic member references and member functions should enable that in the future.

People who are new to Essbase find it very difficult to memorize or understand as there are plenty of MaxL functions are used. This is my efforts to give a list of MaxL commands which we use in our day to day life, specially when we as Essbase Admin or Production Support. These are the list of MaxL commands along with some sample examples of MaxL file to load data and execute calculation script. Some Sample Scripts Example#1 login $1 $2; spool on to 'd:\temp\exec_cal.txt'; /*alter system load application 'FinOps'; alter application 'FinOps' load database 'Findb'; */ /* embed the calculation statement into maxl script */ execute calculation 'CALC ALL;' on 'FinOps'.'Findb' ; /* execute stored server calculation scripts */ execute calculation 'FinOps'.'Findb'.'cal-rank'; spool off; logout; Example#2 login $1 $2; /* login section */ spool on to 'd:\Data_file\Jan_Sales.txt'; /* log the result */ alter system load application 'FinOps'; alter application 'FinOps' load database 'Findb'; /* import dimension member from sql database */ import database 'FinOps'.'Findb' dimensions connect as 'xxxxxxxxxxxxxx' identified by 'xxxxxxxxx' using server rules_file 'addday' on error write to 'd:\addday.txt'; spool off; logout Some commonly used MaxL Script commands: /*--------------------------------------------------------------------------*/ /* LOAD APPLICATION AND DATABASE */ /*--------------------------------------------------------------------------*/ alter system load application ASOsamp;

alter application ASOsamp load database Sample; /*--------------------------------------------------------------------------*/ /* COPY BSO OTL TO ASO APPLICATION */ /*--------------------------------------------------------------------------*/ CREATE OR REPLACE OUTLINE ON AGGREGATE_STORAGE DATABASE ASOsamp.Sample AS OUTLINE ON DATABASE Sample.Basic ; /*--------------------------------------------------------------------------*/ /* BUILD ACCOUNTS DIMENSION */ /*--------------------------------------------------------------------------*/ set Dimension=Accounts; set RulesFile=AcctASO; import database ASOsamp.Sample dimensions from local data_file 'C:\Temp\Accounts.txt' using server rules_file'Accounts' on error write to 'DimAcct.err'; NOTE: This process is useful when the export files are very large and go over the standard 2GB size and this gives you the ability to control how many files are created (always 8 files)...especially if you have automated processes that rebuilds your databases each night. /*--------------------------------------------------------------------------*/ /* SET VARIABLE FOR CURRENTMONTH */ /*--------------------------------------------------------------------------*/ alter database Basic.Sample set variable "CurrentMonth" "July"; /*--------------------------------------------------------------------------*/ /* EXPORT DATA USING REPORT SCRIPT */ /*--------------------------------------------------------------------------*/ export database ASOsamp.Sample using report_file "'$ARBORPATH/app/ASOsamp/Sample/XptData.rep'" to data_file 'C:\Temp\ReportExport.txt'; /*--------------------------------------------------------------------------*/ /* EXECUTE CALCULATION */ /*--------------------------------------------------------------------------*/ execute calculation Sample.Basic.CALCALL; /*--------------------------------------------------------------------------*/ /* KILL ALL REQUESTS TO DATABASE */ /*--------------------------------------------------------------------------*/ alter system kill request on application Sample; /*--------------------------------------------------------------------------*/ /* LOGOUT ALL SESSIONS TO DATABASE */ /*--------------------------------------------------------------------------*/ alter system logout session on application Sample; /*--------------------------------------------------------------------------*/ /* DISABLE CONNECTIONS TO DATABASE */ /*--------------------------------------------------------------------------*/ alter application Sample disable connects; /*--------------------------------------------------------------------------*/ /* ENABLE CONNECTIONS TO DATABASE */ /*--------------------------------------------------------------------------*/ alter application Sample enable connects;

/*--------------------------------------------------------------------------*/ /* EXPORT LRO AS A MIGRATION STRATEGY */ /*--------------------------------------------------------------------------*/ export database FinOps.Findb lro to server directory 'exportedLROs'; /*--------------------------------------------------------------------------*/ /* CLEAR APPLICATION LOG FILE */ /*--------------------------------------------------------------------------*/ alter application Sample clear logfile; /*--------------------------------------------------------------------------*/ /* CLEAR ESSBASE LOG FILE */ /*--------------------------------------------------------------------------*/ alter system clear logfile; /*--------------------------------------------------------------------------*/ /* LOAD DATA TO ASO SLICE */ /*--------------------------------------------------------------------------* Migrating/Upgrading Essbase to a New Server 3/16/2009 9:39:00 AM Posted by: Kyle Goodfriend There are many considerations that must be carefully planned when addressing an upgrade to version 9 or 11, or creating a backup strategy. Manually moving all the components involved can take days and is extremely error prone. There is more to it than moving Essbase databases. Essbase calc scripts, reports, and load rules have to be considered. Server variables need to be moved. All the Maxl and EssCmd scripts need to be copied and changed to reflect the new server and security model. Security filters need to be copied and altered slightly if moving to a new version of Essbase. All the security users and groups need to be created. As with any endeavor of this capacity, it can be time consuming. The benefits of the improved stability and features far outweigh the efforts. Completing this for one server is tough enough. Imagine if corporate policy dictates that everything has to be done in a QA and/or test environment before it is moved to the new production area. Now factor in the number of Essbase servers and the fact that the security model might have to be consolidated to one (this occurs when upgrading from anything before 9, to version 9 or 11). Don’t forget that there is only a very small window for the current production servers to be down. If 4 Essbase servers exist, this effort might have to occur 12 times! Doing the same work 3 times for every server is obviously redundant. I developed a small .NET application that significantly reduces the work involved. It virtually eliminates the need for any manual or redundant effort. .NET was selected because it was the quickest for me to develop the application, but JAVA, Perl, or any other similar development language could be used. The .NET application accepted the results of the following Maxl display commands. display application all; display database all; display filter row all; display variable all; display privilege group all; alter system load application all; display partition all advanced; Maxl scripts were created from the process to 1. create all the applications and databases 2. assign all relevant application and database settings

3. rebuild and update security filters 4. replicate all server variables This Maxl can be executed on the destination server to setup the new environment. Examples of the scripts generated from the .NET application below. /* Create Application: BUDGET */ create or replace application 'BUDGET' type nonunicode_mode; alter application 'BUDGET' set lock_timeout after 300; alter application 'BUDGET' set max_lro_file_size unlimited; alter application 'BUDGET' set minimum permission no_access; alter application 'BUDGET' enable startup; alter application 'BUDGET' disable autostartup; alter application 'BUDGET' enable commands; alter application 'BUDGET' enable updates; alter application 'BUDGET' enable connects; alter application 'BUDGET' enable security; /* Create Database: BUDGET */ create database 'BUDGET'.'Budget'; alter database 'BUDGET'.'Budget' set data_file_cache_size 1024000000; alter database 'BUDGET'.'Budget' set index_cache_size 76800000; alter database 'BUDGET'.'Budget' enable startup; alter database 'BUDGET'.'Budget' enable autostartup; alter database 'BUDGET'.'Budget' set minimum permission no_access; alter database 'BUDGET'.'Budget' set retrieve_buffer_size 102400; alter database 'BUDGET'.'Budget' enable two_pass_calc; alter database 'BUDGET'.'Budget' enable aggregate_missing; alter database 'BUDGET'.'Budget' enable compression; alter database 'BUDGET'.'Budget' disable create_blocks; alter database 'BUDGET'.'Budget' disable committed_mode; alter database 'BUDGET'.'Budget' set implicit_commit after 10000 blocks; alter database 'BUDGET'.'Budget' disable cache_pinning; alter database 'BUDGET'.'Budget' set retrieve_buffer_size 102400; alter database 'BUDGET'.'Budget' set compression bitmap; alter database 'BUDGET'.'Budget' set retrieve_buffer_size 102400; alter database 'BUDGET'.'Budget' set retrieve_sort_buffer_size 102400; alter database 'BUDGET'.'Budget' set data_cache_size 512000000; alter database 'BUDGET'.'Budget' set io_access_mode buffered; alter database 'BUDGET'.'Budget' set note ''; alter system unload application 'BUDGET'; /* Create Filter: MRP100206310000 */ create or replace filter 'BUDGET'.'Budget'.'Audit' write on '@DESCENDANTS("Time"),@DESCENDANTS("Year"),"Input","Working Budget",@DESCENDANTS("Product"),@DESCENDANTS("Total Audit"),@DESCENDANTS("Expenses")'; DOS and UNIX scripts were generated to copy all of the database objects, data files, and Maxl and EssCmd scripts from the source server to the destination server. The program also created all the files to import into Version 9 and System 11 to add users, groups, and replicate the security model.

All the Maxl and EssCmd scripts (username, password, server names, file paths, etc.) were updated so they could be executed on the new servers. This process makes it extremely simple to migrate, or move, any Essbase application from one server to another. The entire process could be completed in hours, rather than days, and eliminates the possibility of human error. What would be budgeted to take weeks with several resources can take less than a day. Hi, I wrote this script that will log in, and export a database out to a few files. For some reason it doesn't return any errors, but also doesn't seem to create the files I specified in the script either. It says that it has completed, but I can't seem to find the files anywhere. What am I doing wrong? (I have changed the username, password, and IP address for posting purposes.) spool off; login user password on 1.1.1.1; alter system load application previous; alter application previous load database previous; export database previous.previous all data to data_file 'C:\My Documents\alex\Liftoff\Essbase_Archive\new_archive_process\fileout1.txt','C:\My Documents\alex\Liftoff\Essbase_Archive\new_archive_process\fileout2.txt','C:\My Documents\alex\Liftoff\Essbase_Archive\new_archive_process\fileout3.txt'; spool on to 'C:\My Documents\alex\Liftoff\Essbase_Archive\new_archive_process\archive_new_error.txt'; echo $?; spool off; logout; exit; Thanks in advance, Alex Minimally you need to change all the "\" characters to "\\" characters - eg "c:\path\file.txt" needs to become "c:\\path\\file.txt". Single "\" characters get tossed in most cases. However, should you choose to use the spool on command (which would be a good idea if you want to further debug your Maxl statements, or to be sure everything executed without any errors), the spool path should use single "\" characters. I followed the advice of both posters above and although no errors were reported in the spool, it reported being successful, and the spool file was output to the correct spot, the actual data files were not exported. Here are my results: MAXL> login user password on 1.1.1.1;

49 - User logged in: ['user']. MAXL> alter system load application previous; 52 - System altered. MAXL> alter application previous load database previous; 54 - Application altered: ['previous']. MAXL> export database previous.previous all data to data_file 'C:\\My Documents\\alex\\Liftoff\\Essbase_Archive\\new_archive_process\\fileout1.txt','C:\\My Documents\\alex\\Liftoff\\Essbase_Archive\\new_archive_process\\fileout2.txt','C:\\My Documents\\alex\\Liftoff\\Essbase_Archive\\new_archive_process\\fileout3.txt'; 90 - Database export completed: ['previous'.'previous']. 0 Export Data There are a couple ways to export data from an Essbase cube, the old-school way and now in version 9.3, there is the calculation function "DATAEXPORT". Let's discuss in detail: Export Data (the capability that has been around all along): •

For Block Storage Applications, you can export all data, level-0 data or input-level data. The 'all data' option is nice, but that assumes your hierarchies don't change or level-0 member doesn't get remapped to a new Level-1 member. So, if you hierarchies don't change and it takes too long to aggregate (CALCALL) your cube, then the 'all data' option is the way to go. If your hierarchies change often, then you need your level-0 option (this is the option I prefer to use most of the time as the hierarchies will change at some point in time and its easier to reload based on level-0 then all data. I rarely use the input-level data, as my input data is usually my level-0 data.



You can export the data into column format or non column format. This option works well depending on what you are trying to accomplish. Column format files will be larger in size than non column format files, but you can use a load rule to load that data into another cube. Say you have to make some sort of data manipulation to get that data into your new cube, it would be advantageous to use a load rule and perform your data manipulation. If you want to simply update your hierarchies, then you can use the non-column format option (which is not pretty), but the file size is smaller. Smaller files size will mean faster export time and faster import time, but you can't you use a load rule for any data manipulation.



You can export to multiple files at one time, like this:

/*--------------------------------------------------------------------------*/ /* EXPORT DATABASE TO 8 FILES */

/*--------------------------------------------------------------------------*/ export database Sample.Basic level0 data in columns to data_file 'C:\Temp\ExportData1.0.Txt', 'C:\Temp\ExportData2.0.Txt', 'C:\Temp\ExportData3.0.Txt', 'C:\Temp\ExportData4.0.Txt', 'C:\Temp\ExportData5.0.Txt', 'C:\Temp\ExportData6.0.Txt', 'C:\Temp\ExportData7.0.Txt', 'C:\Temp\ExportData8.0.Txt'; • When you run the level-0 export, you will get upper level data on all dense dimensions, don't be alarmed, its just how the functionality works, even if the member properties are set as dynamic calcs •





The export function will NOT export any values for Dynamic Calc members, only Stored members (unless its a dense dimension) In version 9 (not sure which release), but users are able to retrieve on the database during the export process. Previous versions used to lock the database from any Read-Only action. For Aggregate Storage Applications, you can only export level-o data in non-column format. Big difference here is that you can't export all data and you can't export in column format. So, you really can't use this export file unless you plan on putting it back into the same outline structure as it was exported from.



You can export to multiple files just like you can with a Block Storage model (see above example)



Prior to Version 9, ASO cubes did not have the capability to perform an export. Report scripts were your only option, ugh.



Users are able to retrieve on the database during the export process, it does not lock the cube

Report Scripts: •

You can export data using a report script. Prior to Version 9.3.1, this was the only means of getting a subset of data out of an Essbase database. Not a big fan of them, but if you are running a version prior to 9.3.1, then you need to use them.

/*--------------------------------------------------------------------------*/ /* EXPORT DATA USING REPORT SCRIPT */ /*--------------------------------------------------------------------------*/ export database ASOsamp.Sample using report_file "'$ARBORPATH/app/ASOsamp/Sample/XptData.rep'" to data_file 'C:\Temp\ReportExport.txt'; DATAEXPORT Calculation function: I have been working with Essbase for a long time and I wish this function came out a long

time ago. •

Only available in BSO applications as Calc Functions are not supported in ASO.



You can export data to a text file while specifying the delimiter and file path/name (I have used this often since the release)



You can export data to a binary file (haven't needed to go down this path yet, but looking forward to testing with it)



You can export data to a relational database (like SQL Server) using an ODBC connection, be careful with this if you are using SQL Server 2005, had some issues about 1 year ago and the help desk really didn't help...but no issues with SQL Server 2000.



The best part about this function is that it works like any other calculation function where you can FIX on any subset of data. So, if you only to fix on "Actual", for the Month of January, for a specific product..YOU CAN!!! The performance is very fast (assuming you have your dense/sparse settings set up properly)



You have the ability to Export data based on certain conditions, like "Sales">500.



Not only can you export using a Fix statement, you have ability to control the format of the text file (similar to report script functionality). Here are the options (I've used the ones in bold most often):

DataExportLevel ALL | LEVEL0 | INPUT; DataExportDynamicCalc ON | OFF; DataExportDecimal n; DataExportPrecision n; DataExportColFormat ON | OFF; DataExportColHeader dimensionName; DataExportDimHeader ON | OFF; DataExportRelationalFile ON | OFF; DataExportOverwriteFile ON | OFF; DataExportDryRun ON | OFF; Security Filters Here is a simple example of how to maintain Essbase security in a maxl statement: spool on to Security.log; login admin password on localhost; set timestamp on;

/*-------------------------------------------------------------------------------------------------------------*/ /* READ ACCESS TO WEST AND ITS DESCENDANTS ONLY */ /*-------------------------------------------------------------------------------------------------------------*/ create or replace filter Sample.Basic.'Read_WestMarket_Filter' READ on '@IDESCENDANTS("West")';

/*-------------------------------------------------------------------------------------------------------------*/ /* CREATE GROUP(S) */ /*-------------------------------------------------------------------------------------------------------------*/ create or replace group 'Read_WestMarket_Group';

/*-------------------------------------------------------------------------------------------------------------*/ /* GRANT FILTER ACCESS TO GROUP(S) */ /*-------------------------------------------------------------------------------------------------------------*/ grant filter TestApp.TestDb.'Read_WestMarket_Filter' to 'Read_WestMarket_Group';

/*-------------------------------------------------------------------------------------------------------------*/ /* ADD USERS TO GROUP(S) */ /*-------------------------------------------------------------------------------------------------------------*/ alter user testuser1 add to group 'Read_WestMarket_Group';

logout; spool off; exit; Create all of your filters in one section, then create all of your groups, then grant the filters to the groups and finally put the users in those groups. Here are some examples of other types of filters you may need to create:

/*-------------------------------------------------------------------------------------------------------------*/ /* WRITE ACCESS TO BUDGET */ /*-------------------------------------------------------------------------------------------------------------*/ create or replace filter Sample.Basic.'FilterName' WRITE on '"Budget"';

/*-------------------------------------------------------------------------------------------------------------*/ /* WRITE ACCESS TO BUDGET & LEVEL 0 MARKET */ /*-------------------------------------------------------------------------------------------------------------*/ create or replace filter Sample.Basic.'FilterName' WRITE on '"Budget", @LEVMBRS("Market",0)';

/*-------------------------------------------------------------------------------------------------------------*/ /* WRITE ACCESS TO BUDGET & LEVEL 0 EAST */ /*-------------------------------------------------------------------------------------------------------------*/ create or replace filter Sample.Basic.'FilterName' WRITE on '"Budget", @RELATIVE("EAST",0)';

The @RELATIVE function allows you to take any member within the hierarchy and get an associated level of that member. So we are able get all Level 0 members of East without having to take all Markets

/*-------------------------------------------------------------------------------------------------------------*/ /* WRITE ACCESS TO BUDGET & LEVEL 0 EAST (except NY) */ /*-------------------------------------------------------------------------------------------------------------*/ create or replace filter Sample.Basic.'FilterName' WRITE on '"Budget", @REMOVE(@RELATIVE("EAST",0),@LIST("New York")';

If you manually created each filter in Essbase Administration Services, you would put a READ statement on line 1 and a WRITE statement on Line 2. Well, with MAXL, simply seperate the lines with commas and put the actual filter in single quotes, like this: /*-------------------------------------------------------------------------------------------------------------*/ /* WRITE ACCESS TO BUDGET & READ ACCESS TO OTHER VERSIONS */ /*-------------------------------------------------------------------------------------------------------------*/ create or replace filter Sample.Basic.'FilterName' WRITE on '"Budget"', READ on '@IDESCENDANTS("Scenario")';

Let's say you have data in the Sample.Basic Essbase cube, but don't want a given set of users to have access to it, you have two options: You can give them no access to that member or you can actually remove that member from the users profile (meaning, if they do a member selection, the will not even see that the member exists in the cube) /*-------------------------------------------------------------------------------------------------------------*/ /* NO ACCESS TO BUDGET & READ ACCESS TO OTHER VERSIONS */ /*-------------------------------------------------------------------------------------------------------------*/ create or replace filter Sample.Basic.'FilterName' NONE on '"Budget"', READ on '@IDESCENDANTS("Scenario")'; or /*-------------------------------------------------------------------------------------------------------------*/ /* NO ACCESS TO BUDGET & READ ACCESS TO OTHER VERSIONS */ /*-------------------------------------------------------------------------------------------------------------*/ create or replace filter Sample.Basic.'FilterName' NONE on '"Budget", @REMOVE(@IDESCENDANTS("Scenario",0),@LIST("Budget")'; The two examples above will give the end user a NOACCESS when doing a retrieval. The below example will give the user a "Unknown Member" Error message when doing a retrival since you are removing that member from the database for that user (even though the

member is still there): /*-------------------------------------------------------------------------------------------------------------*/ /* NO ACCESS TO BUDGET & READ ACCESS TO OTHER VERSIONS */ /*-------------------------------------------------------------------------------------------------------------*/ create or replace filter Sample.Basic.'FilterName' READ on '@IDESCENDANTS("Scenario")', META_READ on '@REMOVE(@IDESCENDANTS("Scenario",0),@LIST("Budget"));

Rule Files To create an Essbase Rules Files, you have the following options - Expand the Application >> Expand the Database >> Right Click on 'Rules Files' >> Select 'Create Rules Files' (Recommended Approach) - Using your toolbar, you can select: File >> New >> Scripts >> Rules Files >> OK (Not Recommended Approach, see note 14 - Validate) Once the rules file is open, you're toolbar will appears as below:

1. New/Open/Save/Print/Send Email - Pretty generic here, but if you need help, let me know. 2. Move Field - Moves any column to a new column (kind of like re-ordering your columns). This option is useful when creating rules that require you to sort columns in order to make for the rule file to load successful. For example, you are creating a dimension build rules file using parent-child references. Say you have 3 columns of data coming in from your source, column 1 = child, column 2 = parent and column 3 = alias. You have two options here, reorder your columns from the source (recommended option, but not always possible) or you can use this option to reorder you columns to Parent, Child, Alias. 3. Split Field - Like most of the titles for these buttons, they do what their titles says. This one will split a given field into two fields. It does NOT split the field based on a delimiter like "|" but rather after so many characters. So if you always want to split the field based on the 3rd character, for instance, then this is your tool, but if you want to split the field based on a "|" then you will need to modify your source data. Keep in mind, you do have the ability to split a data feed by a normal delimiter, but they will be for all columns. See note 11 for more details on adding a delimiter to your data source. 4. Join Field - Joins 2 or more fields into one field (Add more fields by using the holding down the Ctrl key). Please note, when using this option, if you join two fields, they will become 1 field. The original independent columns will no longer exist. If you would to have the independent fields remain intact after the join, see note 5 for "Create a Field Using Join"

5. Create a Field Using Join - Creates a new field when using a join. Same idea as #4, but when you create a new field using 2 columns, the 2 columns remain intact after the field is created. Both 4 and 5 have their advantages, it just depends on your data and what you are trying to accomplish. If you need the original fields in addition to the new one, use option 5 (Create a Field Using Join), but if you do not need the original fields after the join, use option 4 (Join Field). 6. Create a Field Using Text - Adds a new column of whatever text you input. I've seen beginners use this option add a text field during a data load where a given dimension was missing from the data source. For instance, in the Essbase Sample.Basic database, you perform a data load but you do not have a column for Measures (highly unlikely, but this is just an example). So you can add a columns and add the text "Misc" to load to the Misc member name. The advance way to do this is detailed in Note 12 (Data Load Settings). 7. Field Properties - Please click here to see a detailed description of the Field Properties option. For the Field Properties portion of an Essbase Load Rule, there are three tabs (Global Properties, Data Load Properties, and Dimension Build Properties). Global Properties affect both Data Load and Dimension Build rules, where as Data Load Properties and Dimension Build Properties are specific for each. Get used to this menu option, you will use it quite often. Global Properties:

1. This section deals with whether the data is to be applied in its Original Case, Lowercase or Uppercase. Original is the default. You can add a Prefix (leading text) or a Suffix (ending text). You can Drop lead/trailing spaces. Keep in mind, adding a prefix/suffix with impact all members in a given dimension, not just one specific member. That's where #2 comes into play. 2. Instead of changing all members within a given dimension with a prefix/suffix, you can specify one member to be modified with the 'Replace/With' section. Be careful with this, if some members names are partial to other member names (East is a part of Northeast), so you don't want to change all East to "(E) East" because it will turn Northeast into "North(E) East", which is obviously what you don't want. Therefore, make sure you check the Match Whole Word option. Data Load Properties:

3. For your data load rules, you will use this section to specify a columns association to a dimension, you can manually enter the dimension name or, the easier way, double click the dimension name and it will populate the Field Name box. Keep in mind, any dimension that contains a space, quotes will be applied to the dimension name in the Field Name box (this is normal). Also, it is not always mandatory to use the dimension name, you may have 12 data columns which you would specify as "Jan", "Feb", "Mar", "Apr", etc instead of putting in "Year". 4. You can specify if a column is a data field or if you would like to ignore this column. You would want to ignore a column when your data is coming in with excess columns that is not necessary for this load rule. The scale option allows you take a number, say 1,000,000 and put a scale of 0.001. This will automatically change you data from 1,000,000 to 1,000. This comes in hand when you have an Millions/Thousands/Dollars member names...simply perform this pseudo calculation on the way in as opposed to changing it in you data source. Dimension Build Properties:

5. You will cycle through each column (usually starting from left to right) specifying the dimension it is associated with or whether to "Ignore field during dimension build" (#7). Simply double click the dimension name to apply it to the Dimension field at the top. 6. For the given column that you are in, you will first select a dimension (see Note 5), then you will select its association to the outline. For instance, you can build your dimension via Generation References, Level References or Parent-Child references. Generations are a topdown approach, where you database name is Generation 0, the dimension names are Generation 1 and so on. Level References are just the opposite, starting from the leaf level (or lowest possible level) and working up from 0 to the database name. Each has its pros and cons based on your data because you may not always have the same amount of generations or levels, so it might be tricky to build your rules file. The recommended approach would be to utilize the Parent-child reference, because no matter how many generations or levels you have, you will always have a Parent-Child relationship. No matter which method you choose,

you need to associate a number to it, I've already discussed the generation and level numbers you would use, so for parent-child references, please use 0. Keep in mind, in this section you have the ability to not only assigned a member name, but its Alias (description), UDA (user defined attribute - which can be used in security filters and partitions), and its Property (i.e., + for aggregation, ~ to ignore or - for subtraction). 7. This option simply ignores the column during the dimension build 8. Select Record / Reject Records - Within a given column, this will give you the option select or reject certain records. I am not a big fan of these options as it is always better to have the appropriate data coming from the source. 9. Data Load Fields / Dimension Build Fields - These two options will toggle the view of your load rule (between the Data Load view and Dimension Build View). I recommend when building a data load rule or a dimension build, make sure the right button is toggled appropriately. I've see beginners struggle with dimension builds since they were unaware of this option. 10. Associate Outline - When build a rules file, it is extremely helpful to associate the outline in which you are building a rules file for. This is not necessary, but you will be unable to validate your rules file without performing this operation (see note 14 - Validate, for more details) 11. Data Source Properties - The Data Source has four tabs: - Delimiter - As mentioned in Note 3 (Split Field), this works like any other delimiter that splits a file or data source by a specified delimiter - Field Edits - Lists all edits that have been made to this load rule (held in order of creation). For example, if you have 5 field edits, you can not delete #3 without deleting #'s 4 and 5 (since #'s 4 or 5 might be dependant on #3) - Header - You can use this option to skip the first line of a data source (usually the header record) or if you data source is set up properly, you can use it as the data load field names or dimension build field name. - Ignore Tokens - Here you can set up certain tokens to be ignored. 12. Data Load Settings - Please click here to see a detailed description of the Data Load Settings option. Data Load Values Tab:

1. When performing an Essbase Data Load, you have three data loading (mathematical) operations. For sake of an example, a specified intersection of data equals $10 and your new data is $3. You can "Overwrite existing values" which will turn $10 into $3, you can "Add to existing values" which will turn $10 into $13 and you can "Subtract from existing values" which will turn $10 into $7. Depending on your environment, each one of those can be utilized for different purposes. 2. This section can be tricky. An example i like to use is from an application i built a couple years ago, we have an revenue account coming in from the source with a "-". Its just the way the source worked, so I flagged all revenue accounts with a UDA of "RevFlip". By doing this, any dollars that came in for any of these accounts, any negative dollars were flipped to positive and vise versa. So to make it work, you would specify the UDA and the dimension it is associated with. Header Definition Tab:

3. As I mentioned in the Field Properties section, if a data feed does not have a specific dimension represented, a user could a new column with a given text string ("Misc"). This option will work for you, but it is not clean, instead, use the Header Definition identified here. Simply, add the default member name to the Name box at the top, or you can navigate to it in the and double click on it. When you have more than a couple dimensions not represented from the data source, this is a one stop shop for you to apply all your defaults. 13. Dimension Build Settings - Please click here to see a detailed description of the Dimension Build Settings option. Dimension Build Settings Tab:

1. Here you will specify which Essbase dimension or dimensions you are building with this rules file. Yes, you can build two dimensions with one rules file, this is more advanced, so we'll leave it for another topic. 2. If the member is already existing, do you want to allow moves (new location in heirarchy), allow property changes (change the aggregation from ~ to a +), or allow formula changes. Other options will appear based on given dimensions selected, like UDA changes. 3. Build Method - this is where you specifiy whether or not a given dimension is to use Generation References, Level References or Parent/Child references. As I

mention in the Field Properties section, using Parent/Child references when available is the recommended approach. You can also check the box to process null values (this is really applicable when building your dimension using Generation references) 4. Upon building the dimension, you can sort the members Ascending, Descending or no sort at all. Be careful of this option. If you accidentally clicked on a dimension name, say "Scenario", but you were not building the Scenario dimension with this rules. Then if you checked the Sort Ascending button, it WILL sort your Scenario dimension even though you did not intend to. 5. This will "Merge" any existing members, plus the new ones coming in or "Remove unspecified" will delete any member that's not included in the data source being loaded. Dimension Definition Tab: The key feature here is that you have the ability change a Hyperion Essbase Block Storage database's dimension settings, but the one I've used the most in practice is changing the Dense/Sparse settings via a load rule. - Right click on any dimension name (select "Edit Properties") - If you dimension is currently Dense, but you want it to be Sparse (say for calculation performance), then you change the "Configuration" setting to "Sparse". - Note: You can add implement this feature on a existing load rule (even if that load rule is building a different dimension) or create a seperate one, but your data source must contain some sort of data as it can not be blank. 14. Validate - As mentioned in note 10 (Associate Outline), in order to properly validate a rules file, an outline needs to be associated with the rules file. If you created your rules from the File menu, then Associating an outline is necessary, however, if you navigated Application >> Database >> Rules Files >> Create Rule File, then the outline is already associated. Load rules can be used to load data, modify outlines or both. I've always been a big believer on making any "data manipulations" in your source system. For instance, you are performing a dimension build that needs to combine 2 or more columns to create a new field. This can be done with a load rule, but when in doubt, perform this step in SQL or your source system to limit the amount of data manipulations that need to occur in a load rule. Believe it or not, over time, a load rule can become corrupt and if you don't have a backup (and you should always have a backup, but just in case you don't, it will be hard to recreate all the data manipulations that you made in a load rule. With that being said, I've come across numerous clients that don't have the ability to change the source dimension files (for example, the files come directly from SAP) so you will need to make data modifications in a load rule at some point in time, here's some examples of things you can do: Add Prefix or Suffix As I noted on the Field Properties page, you can add a Prefix and Suffix to any field. This is really straight forward, let's say your data comes in as 2009, 2010, 2011, but your members in the Year dimension are YR2009, YR2010, YR2011. Instead of changing your data files, simply add a prefix of YR on the Global Properties tab of the Field Properties option. After you make the change, you will see the preview of your data change to YR2009, YR2010, YR2011 instead of 2009, 2010, 2011. MDX Formula - Missing Quotes??? One odd thing that I've come across in an Aggregate Storage Cube in version 9.3.1 is

adding an MDX formula to a member via load rule using a text file as the source. If you have an MDX formula that contains a statement like IsUda(Time.CurrentMember, "OPEN_MONTH"), Essbase will not build the formula in the outline with the quotes in it. Instead, it will create the formula like this IsUda(Time.CurrentMember,OPEN_MONTH). This will cause a verification issue since OPEN_MONTH is not a current member, but rather a UDA. However, without the quotes, it will not recognize it as a UDA. Here is an example from a Time dimension file: Parent!Child!Property!Formula! Time!TimeFormulaMember!~!CASE WHEN IsUda(Time.CurrentMember, "OPEN_MONTH") THEN...! As you can see, I have quotes around OPEN_MONTH, but when I bring this record into my load rule, the quotes are gone...

Solution: Change the quotes in you dimension file to something other than quotes, try using a # and use the Global Replace option and replace the # with " and the quotes will appear in your MDX formula.

Replace zero's One way to optimize your Block Storage application (BSO) is to replace zero's with #missing during a data load.

On the Global Properties tab of the Field Properties option, perform a replace of 0 with #Missing. Now be careful with this, you want to make sure you select the Match Whole Word box instead of Replace All Occurrences. You don't want to replace 45098 with 45#Missing98. EXAMPLE #1 - Essbase Dimension Building Example (Parent/Child Build) For this section, you need the 3 attached files: - Test.otl : Shell outline to use for this example, all dimensions populated except 'Product'which we will be building here. - PROD1.rul : Rules file to build the Product dimension. - ProductDimBuild.txt : Data file utilized to build the dimension. Let's analyze the ProductDimBuild.txt file first: - Products laid out using Parent/Child references with the following column headers and associated data: "PARENT0,Product" "CHILD0,Product" "ALIAS0,Product" "PROPERTY0,Product" "UDA0,Product" Now let's move onto the Rule file for Product: - In order to utilize the row header from the Text file as my dimension name, you need to enable the following option: Data Source Properties > Header Tab > Input "1" without quotes in the "Record containing dimension building field names:" (Keep in mind, the syntax needs to be exact, otherwise you will get an error) - We are using Parent/Child references, we need to enable this option: Dimension Build Settings > Dimension Build Settings Tab > Double Click "Product" dimension name > Check "Use Parent/Child references" under the Build Method section. - We are creating an alternate hierarchy we need to allow property changes on the member: Dimension Build Settings > Dimension Build Settings Tab > Double Click "Product" dimension name > Check "Allow Property Changes" under the Existing Members section EXAMPLE #2 - Essbase Dimension Building & DataLoad Sample (Building a Dimension and Loading Data from your Data) This is a little trickier and not always the common practice, but there are times when you need to dynmically build a dimension from the data. For this example, we will build the Product dimension from our data. Keep in mind, this sample data does not include Parent/Child references, therefore, it will create a "flat hierarchy". For this section, you need the 3 files: - Test.otl : This is the same outline as above - PROD2.rul : This is an new Product Rules File - ProductDimBuildData.txt : Data file utilized to build the dimension and load data. - In order to utilize the row header from the Text file as my dimension name, you need to enable the following option: Data Source Properties > Header Tab > Input "1" in the "Record containing data load field names:"

(Keep in mind, the syntax needs to be exact, otherwise you will get an error, we do not need this ability during the dim build, but we do during the data load) - Highlight Column 1: Field Properties > Dimension Build Properties > Double Click the "Product" dimension name > Double Click Level Make sure 0 is in the Number field ..FYI, a flat hierarchy is the same as all members being at the leaf level (or level 0). - Once the above step is complete, cycle through all other columns and "Ignore field during dimension build" - Since We are using Level references, we need to enable this option: Dimension Build Settings > Dimension Build Settings Tab > Double Click "Product" dimension name > Check "Use Level references" under the Build Method section. You can also sort the members here, if desired. Let's switch gears and load this same file as data. You can toggle your view between Data Load Fields and Dimension Build Fields. Since our data was set up efficiently from our source system and the column headers came in as the dimension names, this step just became easier. The only thing you need to consider is whether to append your data to existing records or overwrite. In this case, I will be overwriting, but this is how you do it: Data Load Settings > Data Values Section > Overwrite Existing values Add to Existing Values Subtract from existing values Remember, we loaded this data to the level 0 location, in order to see the data at the hierarchical rollups, we need to run a calc script, calc-all will work in this case.

Common Errors Administrative Errors ESSBASE ERROR 1012703 "Unknown calculation type [0] during the dynamic calculation. Only default agg/formula/time balance operations are handled." There is an error in a formula(s), therefore, no calculations will work. The problem is that when you have the outline open in Edit mode and you try to 'Validate', it does not identify any of these errors, nor does it write it to a log. However, you can go one by one and validate each formula. So any time you delete a member or modify a member name, be sure that this member is not included in any formula. Aggregate Storage Model - Solve Order When you member of a formula is dependant on another member, ensure the solve order is setup properly, making the first member have a solve order of 0, then the next to have 1, etc. Essbase Administrative Services - Error '1,030,006' opening the outline.

Essbase Administration Services has become corrupt. Can occur when performing a dim build that did not build successfully. I do not know the full cause of it, but restarting the EAS Server will rectify this issue. ESSBASE ERROR - 1021001 Failed to Establish Connection with SQL Database Server. See Log file for more information. Couple things could be happening here: - You do not have permissions to access that SQL environment - The ODBC Connection on the server is not set up properly. - The table/view that you are calling no longer exists WARNING - 1003055 - Aggregate storage applications ignore update to derived cells. [XXXX] cells skipped. You will get this warning message when attempting to load data to an ASO model to a specific member that is not level zero. Solution: Analyze your data to ensure only Level 0 data is coming in, otherwise, in an ASO, the Level 0 value will aggregate over the higher level value. Keep in mind, your data load will finish successfully, this message is simply a warning regarding data being loaded to a parent member.

Error Codes Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error Essbase Error

1001000 1001001 1001002 1001003 1001004 1001005 1001006 1001008 1001009 1001010 1001011 1001013 1001014 1001015 1001016 1001017 1001018 1001019 1001020

-

Unable to Open Report File [%s] on Server Unknown Command [%s] in Report Incorrect Syntax for Range Format in Report Unknown Member [%s] in Report Incorrect Format Following [%s] in Report Unknown Member [%s] in Report Unknown Item [%s] Ignored in Report Unknown Member [%s] in Reset Command in Report Unknown Member [%s] in Zoom Command in Report Unknown Member [%s] in Zoom In Command in Report Currency Command in Report and No Currency Database Set Unknown Member [%s] in Dimend Command in Report Unknown Member [%s] in Page Command in Report Unknown Member [%s] in Row Command in Report Unknown Member [%s] in Column Command in Report Unable to Send Data Over Pipe in Report Unable to Send Data Over Pipe in Report Unable to Read Data Over Pipe in Report Unable to Read Data Over Pipe in Report

Essbase Error 1001022 - Extractor debug input: [%s] Essbase Error 1001023 - Not Enough Memory to Complete Command Essbase Error 1001025 - Not Enough Memory to Complete Command Essbase Error 1001026 - Incorrect Syntax in Row Command in Report Essbase Error 1001027 - Incorrect Syntax in Row Command in Report Essbase Error 1001028 - Incorrect Syntax in Column Command in Report Essbase Error 1001029 - Incorrect Syntax in Column Command in Report Essbase Error 1001030 - Incorrect Syntax in Page Command in Report Essbase Error 1001031 - Incorrect Syntax in Page Command in Report Essbase Error 1001032 - Column Width Exceeded 255 Columns in Report Essbase Error 1001033 - Missing Closing Brace in Report Essbase Error 1001058 - Incorrect Asymmetric Report, [%s] Records Processed Essbase Error 1001059 - Unrecognized Relationship Code in DdbSelMbrs [%s]-ignored Essbase Error 1001060 - Formats Too Long, Ignoring Format [%s] in Report Essbase Error 1001062 - Member [%s] From Same Dimension As Previous Member Essbase Error 1001063 - You do not have sufficient access to perform a lock on this database Essbase Error 1001064 - You do not have sufficient access to perform a read on this database Essbase Error 1001065 - Regular Extractor Elapsed Time : [%s] seconds Essbase Error 1001069 - Missing parenthesis in [%s] bytes, [%s] index pages. Essbase Error 1070014 - Index page size ==> [%s] bytes. Essbase Error 1070016 - Invalid index Context. [%s] aborted Essbase Error 1070017 - Invalid file id [%s]. [%s] aborted Essbase Error 1070018 - Invalid file handle [%s]. [%s] aborted Essbase Error 1070019 - Invalid file name [%s]. [%s] aborted Essbase Error 1070020 - Out of disk space. Cannot create a new [%s] file. [%s] aborted Essbase Error 1070022 - Cannot Get a Free Frame From the Buffer Pool. [%s] aborted Essbase Error 1070024 - Main page has not been written since [%s] file is created. Ignored Essbase Error 1070026 - Corrupted Node Page in the B+tree. [%s] aborted Essbase Error 1070028 - Chsize failed. [%s] aborted Essbase Error 1070031 - Invalid frames link, [%s] aborted Essbase Error 1070033 - Failed to allocate a fixed size memory pool. [%s] aborted Essbase Error 1070035 - Recovering Database [%s] After Abnormal Termination... Essbase Error 1070036 - The number of disk partitions is 0. [%s] aborted Essbase Error 1070039 - Not Enough Memory to Allocate the Index Buffer Cache. Using default Essbase Error 1070041 - Index For Database [%s] Is Corrupted, Unable To Recover Free Fragments. [%s] aborted Essbase Error 1070042 - Recovering Free Space In The Data Files For The Database [%s]... Essbase Error 1070043 - Unable to determine the amount of virtual memory available on the system Essbase Error 1070045 - File [%s] cannot be created because it already exists. [%s] aborted Essbase Error 1070049 - Requested Cache Size + Internal Adjustment = [%s bytes]; Available Virtual Memory: [%s Kbytes].

Essbase Error 1070051 - Duplicate key [%s.%s] found in AVL-Tree. Essbase Error 1070052 - Key [%s.%s] not found in AVL-Tree. Essbase Error 1070053 - Attempt to delete key [%s.%s] from an empty AVL-Tree. Essbase Error 1070054 - Lookup of key [%s.%s] encountered an empty AVL-Tree. Essbase Error 1070055 - Invalid traversal order [%s] on AVL-Tree. Essbase Error 1070056 - Invalid lookup of AVL-Tree. [%s] aborted. Essbase Error 1070057 - Database migration to the current version of Essbase is needed. Essbase Error 1070058 - Database migration cannot be performed while the database is in read-only mode Essbase Error 1070059 - Migrating the database index from V4 format to V6 format ... Essbase Error 1070060 - Converted [%s] index entries Essbase Error 1070061 - Index migration from V4 format to V6 format completed successfully Essbase Error 1070062 - Index migration from V4 format to V6 format failed Essbase Error 1070063 - Database restructuring cannot be performed while the database is in read-only mode Essbase Error 1070064 - Deleted [%s] index entries Essbase Error 1070066 - Cannot read from file with handle [%s], [%s] failed Essbase Error 1070067 - Invalid file name [%s]. [%s] aborted Essbase Error 1070068 - Recovering database [%s] during fatal error processing... Essbase Error 1070069 - Expanding the index freespace cache for database [%s] to [%s] index pages. Essbase Error 1070070 - Performing index file recovery for database [%s]. Essbase Error 1070071 - Converting index file descriptors for database [%s]. Essbase Error 1070072 - Migration has resulted in an empty database Essbase Error 1070073 - Restructuring has resulted in an empty database Essbase Error 1070074 - Database migration to an index page size of [%s] is needed. Essbase Error 1070075 - Sparse incremental restructuring is not supported during migration. Apply all changes in the outline change log before attempting to migrate. Essbase Error 1070076 - Converted [%s] LRO index entries Essbase Error 1070077 - Locking the index cache pages into physical memory. Essbase Error 1070078 - Turning off cache memory locking due to lack of physical memory. Using virtual memory to allocate the remainder of the index and data caches. Essbase Error 1070079 - Turning off cache memory locking due to insufficient privilege. Using virtual memory to allocate the remainder of the index and data caches. Essbase Error 1070080 - Using direct I/O for the index and data files. Essbase Error 1070081 - Using buffered I/O for the index and data files. Essbase Error 1070082 - Using no-wait I/O for the index and data files. Essbase Error 1070083 - Using waited I/O for the index and data files. Essbase Error 1070084 - Migrating the database index from V5 format to V6 format ... Essbase Error 1070085 - Index migration from V5 format to V6 format completed successfully Essbase Error 1070086 - Index migration from V5 format to V6 format failed Essbase Error 1070087 - Migrating the database index to an index page size of [%s] ... Essbase Error 1070088 - Index migration to an index page size of [%s] completed successfully Essbase Error 1070089 - Index migration to an index page size of [%s] failed Essbase Error 1070090 - Unable to unlock physical memory allocated for the index of database [%s]. Essbase Error 1070091 - Not enough memory to allocate the index buffer cache. Using the

minimum size. Essbase Error 1070092 - Waiting to swap an index cache page for database [%s]. Performance could potentially be improved by increasing the index cache size. Essbase Error 1070093 - Error [%s] encountered while waiting for completion of an index flush for database [%s]. Essbase Error 1070094 - Premature end of a file descriptor page chain for database [%s] was encountered. Essbase Error 1070095 - Migrating the database index from V6 Beta I format to V6 format ... Essbase Error 1070096 - Index migration from V6 Beta I format to V6 format completed successfully Essbase Error 1070097 - Index migration from V6 Beta I format to V6 format failed Essbase Error 1070098 - Error [%s] encountered while waiting to traverse the index for database [%s]. Essbase Error 1080001 - Block in the transaction list has an invalid status. [%s] aborted Essbase Error 1080004 - Unable to set the transaction flag in the .ESM file. [%s] aborted. Essbase Error 1080007 - Transaction Commit: [%s] blocks will be processed Essbase Error 1080009 - Fatal error [%s] encountered during transaction commit. Essbase Error 1080010 - The Transaction Manager component of the Essbase Kernel must already have been initialized in order to begin a transaction. Essbase Error 1080011 - The Transaction Manager component of the Essbase Kernel must already have been initialized in order to commit a transaction. Essbase Error 1080012 - The Transaction Manager component of the Essbase Kernel must already have been initialized in order to abort a transaction. Essbase Error 1080013 - Fatal error [%s] encountered during transaction abort. Essbase Error 1080014 - Transaction [%s] aborted due to status [%s]. Essbase Error 1080015 - Unable to create Transaction Cleanup Daemon thread. Essbase Error 1080016 - Error [%s] upon creating the event to stop the Transaction Cleanup Daemon. Essbase Error 1080017 - Error [%s] upon setting the event to stop the Transaction Cleanup Daemon. Essbase Error 1080018 - Error [%s] upon waiting for the Transaction Cleanup Daemon to stop. Essbase Error 1080019 - Error [%s] upon deleting the Transaction Cleanup Daemon's Thread Context resources. Essbase Error 1080020 - Transaction Cleanup Daemon terminating due to error [%s]. Essbase Error 1080021 - Invalid transaction handle [%s] passed to the Essbase Kernel for database [%s]. Essbase Error 1080022 - Reinitializing the Essbase Kernel for database [%s] due to a fatal error ... Essbase Error 1080023 - Reinitializing the Essbase Kernel for currency database [%s] due to a fatal error ... Essbase Error 1080024 - Reinitializing the Essbase Kernel for currency database [%s] due to a fatal error ... Essbase Error 1080026 - Unable to recover database [%s] while the database is in read-only mode. Essbase Error 1080027 - Performing transaction recovery for database [%s] following an abnormal termination of the server. Essbase Error 1080028 - Performing transaction recovery for database [%s] during fatal error

processing. Essbase Error 1080029 - Transactions for database [%s] have temporarily been disabled. Please retry your operation later. Essbase Error 1080030 - The Transaction Manager component of the Essbase Kernel must already have been initialized in order to disable transactions. Essbase Error 1080032 - Forcibly aborting transaction [%s] while quiescing update activity on database [%s]. Essbase Error 1080033 - TCT File opened (fd = %s) Essbase Error 1080034 - TCT File closed (fd = %s) Essbase Error 1080035 - TCT File read error (%s, %s) Essbase Error 1080036 - TCT File write error (%s, %s) Essbase Error 1080037 - Transaction [%s] aborted due to invalid transaction status [%s]. Essbase Error 1080038 - Terminating the Essbase Application Server process due to a fatal error encountered by the Essbase Kernel for database [%s]. Essbase Error 1080039 - Unable to create the Database Writer's thread. Essbase Error 1080040 - Error [%s] upon setting the event to stop the Database Writer. Essbase Error 1080041 - Error [%s] upon waiting for the Database Writer to stop. Essbase Error 1080042 - Database Writer terminating due to error [%s]. Essbase Error 1080043 - Error [%s] upon creating the event to start the Database Writer. Essbase Error 1080044 - Error [%s] upon setting the event to start the Database Writer. Essbase Error 1080045 - Error [%s] upon waiting for the Database Writer to start. Essbase Error 1090000 - Cannot create temporary file name Essbase Error 1090001 - Column Ordering is Incorrect (Column %s) Essbase Error 1090002 - Member Missing For Add As Of Child Dimension Setting For Dimension [%s] Essbase Error 1090003 - Dimension Invalid For Column [%s] Essbase Error 1090004 - Unable To Open File [%s] Essbase Error 1090005 - Unable To Read From File [%s] Essbase Error 1090006 - Revision Invalid For From File [%s] Essbase Error 1090007 - Member [%s] For Add As Of Child Dimension Is From Wrong Dimension Essbase Error 1090008 - Field Label (Column %s) does not match build method Essbase Error 1090009 - File [%s] Can Not Be Read, The File is Password Protected Essbase Error 1090010 - Error in File [%s] Which is a [%s] Spreadsheet Essbase Error 1090011 - Unable to Open Error File (%s) Essbase Error 1090012 - Unable to Process Rules File (%s) Essbase Error 1090013 - Cannot Open Data Source Essbase Error 1090014 - Initialization failed - Memory Error Essbase Error 1090015 - Error processing data file Essbase Error 1090016 - Illegal DUPLEVEL (Column %s) Essbase Error 1090017 - Column Contains Invalid Generation (Column %s) Essbase Error 1090018 - Error Initializing Outline Information Essbase Error 1090019 - Error Modifying Outline Information Essbase Error 1090020 - Dynamic Reference Initialization failed Essbase Error 1090021 - Error Initializing Dimension Field Name Information Essbase Error 1090022 - Processing Terminated - No Valid Build Fields Essbase Error 1090023 - Bad string length [%s] found reading outline

Essbase Error 1090024 - Bad region type found reading region defn file Essbase Error 1090025 - Invalid slice map count found reading region defn file Essbas e Error 1090026 - Bad data direction found in region defn file Essbase Error 1090027 - Unable to open file %s Essbase Error 1090028 - File %s has bad type Essbase Error 1090029 - Unable To Create File [%s] Essbase Error 1090030 - Advanced numeric method (Column %s) does not match attribute dimension type Essbase Error 1090031 - Range size must be greater than 0 Essbase Error 1090032 - Base dimension (%s) not sorted for ranges Essbase Error 1090033 - Dimension in column %s is not a base dimension for (%s) Essbase Error 1090034 - ATTRPARENT column %s must precede a numeric or date/time attribute association column Essbase Error 1090035 - ATTRPARENT column %s gen value %s must match next column gen value Essbase Error 1090036 - There were errors validating the outline. Please check the error file. Essbase Error 1120000 - Unable to lock file [%s]. Essbase Error 1120001 - Unable to unlock physical memory allocated by the Essbase Kernel for database [%s]. Essbase Error 1140000 - Invalid LRO Context. [%s] aborted Essbase Error 1140002 - Invalid member name entered - %s. Essbase Error 1140003 - index entry for Linked Object not found. [%s] Essbase Error 1140004 - mismatch linked object handle. [%s] aborted Essbase Error 1140005 - Missing member name. Essbase Error 1140007 - Corrupted Node Page in the LRO B+tree. [%s] aborted Essbase Error 1140008 - Object type can not be updated. [%s] Essbase Error 1140009 - You do not have sufficient access to perform a %s on this database Essbase Error 1140011 - This server is not licensed with the Linked Object option Essbase Error 1140012 - Unable to [%s] linked object; database is in readonly mode for archive Essbase Error 1140013 - Invalid cell address entered. Essbase Error 1140014 - Unable to delete LRO file - [%s] Essbase Error 1140015 - Invalid member count [%s], expected [%s] members Essbase Error 1140017 - Unable to add a linked object in [%s] due to object handle overflow. Essbase Error 1140018 - Attribute members not allowed in LRO operations. Essbase Error 1150000 - Cannot apply file [%s], error [%s] returned Essbase Error 1150001 - Cannot read from file handle [%s] Essbase Error 1150003 - Cannot create alias table [%s], error [%s] encountered Essbase Error 1150004 - Cannot delete alias table [%s], error [%s] encountered Essbase Error 1150005 - OUTLINE SYNC: Cannot add dimension [%s], error [%s] encountered Essbase Error 1150006 - OUTLINE SYNC: Cannot delete dimension [%s], error [%s] encountered Essbase Error 1150007 - OUTLINE SYNC: Cannot update dimension [%s], error [%s] encountered Essbase Error 1150008 - OUTLINE SYNC: Cannot move dimension [%s], error [%s] encountered

Essbase Error 1150009 - OUTLINE SYNC: Cannot rename dimension [%s], error [%s] encountered Essbase Error 1150010 - OUTLINE SYNC: Cannot add member [%s], error [%s] encountered Essbase Error 1150011 - OUTLINE SYNC: Cannot delete member [%s], error [%s] encountered Essbase Error 1150012 - OUTLINE SYNC: Cannot move member [%s], error [%s] encountered Essbase Error 1150013 - OUTLINE SYNC: Cannot update member [%s], error [%s] encountered Essbase Error 1150014 - OUTLINE SYNC: Cannot rename member [%s], error [%s] encountered Essbase Error 1150019 - There is 1 message in the application log identifying a change that was not applied during outline synchronization. Essbase Error 1150020 - There are %s messages in the application log identifying changes that were not applied during outline synchronization. Essbase Error 1150021 - OUTLINE SYNC: Cannot find location for adding member [%s] Essbase Error 1150022 - OUTLINE SYNC: Cannot find member [%s] to rename Essbase Error 1150023 - OUTLINE SYNC: Cannot find member [%s] to move Essbase Error 1150024 - OUTLINE SYNC: Cannot find destination for moving member [%s] with parent [%s] Essbase Error 1150025 - OUTLINE SYNC: Cannot find member [%s] to update Essbase Error 1150026 - OUTLINE SYNC: Cannot find dimension [%s] to rename Essbase Error 1150027 - OUTLINE SYNC: Cannot find dimension [%s] to move Essbase Error 1150028 - OUTLINE SYNC: Cannot find destination for moving dimension [%s] Essbase Error 1150029 - OUTLINE SYNC: Cannot find dimension [%s] to update Essbase Error 1150030 - OUTLINE SYNC: Cannot find location for adding dimension [%s] Essbase Error 1150031 - OUTLINE SYNC: Cannot find attribute dimension [%s] to associate with dimension [%s] Essbase Error 1150032 - OUTLINE SYNC: Cannot find attribute [%s] to associate with member [%s] Essbase Error 1150033 - OUTLINE SYNC: Attribute dimension [%s] deleted due to missing base dimension Essbase Error 1150034 - OUTLINE SYNC VERIFY: Global Error -- Too many dimensions in currency outline Essbase Error 1150035 - OUTLINE SYNC VERIFY: Global Error -- Attribute calculations dimension is absent Essbase Error 1150036 - OUTLINE SYNC VERIFY: No Global Error Essbase Error 1150037 - OUTLINE SYNC VERIFY: Unknown Global Error Essbase Error 1150038 - OUTLINE SYNC VERIFY: Member errors follow Essbase Error 1150039 - OUTLINE SYNC VERIFY: No errors Essbase Error 1150040 - OUTLINE SYNC VERIFY: Member %s verification fails Essbase Error 1150041 - OUTLINE SYNC VERIFY: Illegal member name %s Essbase Error 1150042 - OUTLINE SYNC VERIFY: Duplicate member name %s Essbase Error 1150043 - OUTLINE SYNC VERIFY: Illegal currency member %s Essbase Error 1150044 - OUTLINE SYNC VERIFY: Illegal default alias for member %s Essbase Error 1150045 - OUTLINE SYNC VERIFY: Illegal alias combination for member %s Essbase Error 1150046 - OUTLINE SYNC VERIFY: Illegal alias string for member %s Essbase Error 1150047 - OUTLINE SYNC VERIFY: Illegal tag for member %s Essbase Error 1150048 - OUTLINE SYNC VERIFY: No time dimension for member %s Essbase Error 1150049 - OUTLINE SYNC VERIFY: Duplicate alias for member %s

Essbase Error 1150050 - OUTLINE SYNC VERIFY: Illegal member formula for member %s Essbase Error 1150051 - OUTLINE SYNC VERIFY: Shared member %s not at level 0 Essbase Error 1150052 - OUTLINE SYNC VERIFY: Shared member %s with no actual member Essbase Error 1150053 - OUTLINE SYNC VERIFY: Accounts dimension is dense and time dimension sparse Essbase Error 1150054 - OUTLINE SYNC VERIFY: Leaf member %s defined as a label member Essbase Error 1150055 - OUTLINE SYNC VERIFY: Alias shared for member %s Essbase Error 1150056 - OUTLINE SYNC VERIFY: Illegal time balance value for member %s Essbase Error 1150057 - OUTLINE SYNC VERIFY: Illegal time balance skip value for member %s Essbase Error 1150058 - OUTLINE SYNC VERIFY: Illegal share value for member %s Essbase Error 1150059 - OUTLINE SYNC VERIFY: Illegal dimension storage value for member %s Essbase Error 1150060 - OUTLINE SYNC VERIFY: Illegal category for member %s Essbase Error 1150061 - OUTLINE SYNC VERIFY: Illegal storage category for member %s Essbase Error 1150062 - OUTLINE SYNC VERIFY: Base member (%s) association level does not match base dimension association level Essbase Error 1150063 - OUTLINE SYNC VERIFY: Attribute dimension can not be followed by Standard/base dimensions Essbase Error 1150064 - OUTLINE SYNC VERIFY: Attribute member (%s) datatype is not matching with Attribute dimensions datatype. Essbase Error 1150065 - OUTLINE SYNC VERIFY: Attribute parent-child category illegal for member %s Essbase Error 1150066 - OUTLINE SYNC VERIFY: Attribute Dimension %s is not associated to the base dimension Essbase Error 1150067 - OUTLINE SYNC VERIFY: Attribute member %s can not have associated UDAs Essbase Error 1150068 - OUTLINE SYNC VERIFY: Boolean/AttrCalc dimension %s has invalid children count Essbase Error 1150069 - OUTLINE SYNC VERIFY: Illegal Attrcalc dimension/member name %s Essbase Error 1150070 - OUTLINE SYNC VERIFY: Invalid value being set for attribute memberinfo of member %s Essbase Error 1150071 - OUTLINE SYNC VERIFY: Invalid value being set for attrcalc dimension/member memberinfo Essbase Error 1150072 - OUTLINE SYNC VERIFY: Illegal datatype for attribute member %s Essbase Error 1150073 - OUTLINE SYNC VERIFY: Illegal attribute value for level 0 attribute member %s Essbase Error 1160000 - The size of outline change records exceeds [%s], changes are not logged. Please increase OutlineChangeLogFileSize setting to [%s] Essbase Error 1170000 - AttrTest Info [%s] [%s] Essbase Error 1170010 - Number of base members with the Attribute association is [%s] Essbase Error 1200000 - Framework initialization failed, error code [%s] Essbase Error 1200001 - Error [%s] preprocessing macro [%s] Essbase Error 1200002 - Compilation failed Essbase Error 1200003 - Optimization stage error [%s] Essbase Error 1200004 - Program tree rebuild error [%s] Essbase Error 1200005 - Dependency checking error [%s]

Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase Essbase

Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error

1200006 1200008 1200314 1200315 1200316 1200317 1200318 1200319 1200320 1200321 1200322 1200323 1200324 1200325 1200326 1200327 1200328 1200329 1200330 1200331 1200332 1200333 1200334 1200335 1200336 1200337 1200338 1200339 1200340 1200341 1200342 1200343 1200344 1200345 1200346 1200347 1200348 1200349 1200350 1200351 1200352 1200353 1200354 1200355 1200356 1200357 1200358

-

Unable to create execution control data structure Error [%s] executing function [%s] during optimization Invalid array length specified Invalid object type Internal calculator framework error Error : index out of range Calculator framework error: stack full Error: memory buffer full Error getting function signature. Invalid function code: [%s] Error: name redefinition Error: bracket mismatch Syntax error: expression expected after [%s] Syntax error: operator expected after [%s] Error: nothing to do Error: semicolon missing Error: identifier expected after [%s] Invalid declaration Invalid assignment Invalid variable name Invalid initializer Invalid number format Error: no matching quote found Error: invalid argument number Error: invalid argument Error: [%s] without [%s] Error: [%s] without [%s] Error: [%s] without [%s] Error: [%s] without [%s] Error: [%s] without [%s] Error: [%s] without [%s] Error: procedure without [%s] Error: [%s] without procedure Error: [%s] without [%s] Error: [%s] without [%s] Error: [%s] without [%s] Error: [%s] must be function Error: name is reserved Expression is constant Error: construction requires more points Error: spline data invalid (may be repeated points) Error: invalid weight Error: invalid data Type mismatch: argument [%s] cannot be [%s] Error: name redefinition Error: invalid type Error: invalid dimension Unexpected end of expression: [%s]

Essbase Error 1200359 - Error: illegal procedure variable name Essbase Error 1200360 - Error: illegal syntax Essbase Error 1200361 - Error: unknown function: [%s] Essbase Error 1200362 - Error: [%s] withour [%s] Essbase Error 1200363 - Invalid array dimension Essbase Error 1200364 - Arguments have different dimensions ([%s] and [%s]) Essbase Error 1200365 - Infinite loop suspected. Execution cancelled Essbase Error 1200366 - Invalid macro argument number Essbase Error 1200367 - Error: invalid moving window width Essbase Error 1200368 - Error: delimiter mismatch Error 1200369 - Error: cannot cross members from the same dimension Essbase Error 1200370 - Error: attempt to cross a null member Essbase Error 1200371 - [%s] dimension undefined. No default parameter allowed Essbase Error 1200372 - Error: range not from the [%s] dimension Essbase Error 1200373 - Error: argument must be a valid generation or level name or number Essbase Error 1200374 - Invalid expression return type Essbase Error 1200375 - Invalid procedure syntax Essbase Error 1200376 - Fatal error: core function [%s] undefined Essbase Error 1200377 - Invalid [%s] syntax Essbase Error 1200378 - Empty [%s] block Essbase Error 1200379 - Error: arrays have different sizes Essbase Error 1200380 - Invalid tag Essbase Error 1200381 - Invalid range Essbase Error 1200382 - Invalid dimension number in projection Essbase Error 1200383 - Invalid SKIP instruction Essbase Error 1200384 - Invalid execution mode Essbase Error 1200385 - Invalid macro syntax Essbase Error 1200386 - Number of arguments in a macro must be an integer Essbase Error 1200387 - Invalid member name Essbase Error 1200390 - Basis member for allocation not supplied Essbase Error 1200391 - Invalid method specified to allocate function Essbase Error 1200392 - Allocation amount must include a member from every allocation range dimension. Calculation results may be unpredictable Essbase Error 1200393 - Round member must include a member from every allocation range. Calculation results may be unpredictable Essbase Error 1200394 - Allocation range is empty. Calculation results may be unpredictable Essbase Error 1200395 - Xref connection to data source [%s] timed out. Restoring connection... Essbase Error 1200396 - Invalid argument number in argument request Essbase Error 1200397 - Invalid argument type (double expected) Essbase Error 1200398 - Invalid argument type (member range expected) Essbase Error 1200399 - Invalid argument type (external variable or array expected) Essbase Error 1200400 - Scalar double argument expected Essbase Error 1200401 - Single member argument expected Essbase Error 1200402 - Single string argument expected Essbase Error 1200403 - Single range argument expected Essbase Error 1200404 - Single numerical argument expected

Essbase Error 1200405 - Operands of a binary operator have different dimensions Essbase Error 1200406 - Error: attempt to redefine constant [%s] Essbase Error 1200407 - Error: attempt to redefine function [%s] Essbase Error 1200408 - Error: attempt to redefine macro [%s] Essbase Error 1200409 - Internal error: calculator stack contains a null object Essbase Error 1200410 - Error [%s] getting parameters for function [%s] Essbase Error 1200411 - Error [%s] executing function [%s] Essbase Error 1200412 - Argument type mismatch in function [%s] Essbase Error 1200413 - Argument dimension mismatch in function [%s] Essbase Error 1200414 - Argument [%s] may not have length [%s] Essbase Error 1200415 - Internal error: unexpected end of program code Essbase Error 1200416 - Cannot assign [%s] objects of different length Essbase Error 1200417 - Cannot assign objects of different types ([%s] and [%s]) Essbase Error 1200418 - Cannot assign objects of different length ([%s] and [%s]) Essbase Error 1200419 - Attempt to assign an object of type [%s] where [%s] was expected Essbase Error 1200420 - Error encountered on line [%s] Essbase Error 1200421 - Error encountered on or after line [%s] Essbase Error 1200422 - Expected type [%s] found [%s] Essbase Error 1200423 - Exceeded [%s] iterations in [%s]. The result may be meaningless Essbase Error 1200426 - Argument missing in function [%s] Essbase Error 1200427 - Invalid date format string in function [%s] Essbase Error 1200428 - Arguments out of range when compiling a formula involving @POWER and constants. Returned value may be different from versions < 6.0 Essbase Error 1200429 - Argument [%s] is out of range when compiling a formula involving @FACTORIAL and constants. Returned value may be different from versions < 6.0 Essbase Error 1200430 - Division by zero occured when compiling a formula involving constants. Returned value may be different from versions < 6.0 Essbase Error 1200431 - Formula for member [%s] altered internally Essbase Error 1200432 - Original formula [%s] Modified formula [%s] Essbase Error 1200434 - Invalid operator specified in function [%s] Essbase Error 1200436 - Error: procedure should return a value. [%s] operator missing Essbase Error 1200437 - Error: invalid mode [%s] in function [%s] Essbase Error 1200438 - Compiling formula for member [%s] Essbase Error 1200439 - Reserved token [%s] encountered on line [%s] currently not supported Essbase Error 1120110 - Could not open the DB2 OLAP Server configuration file. Essbase Error 1120111 - No relational database name was supplied in the DB2 OLAP Server configuration file. Essbase Error 1120113 - DB2 OLAP Server has encountered an error. %s Essbase Error 1120200 - The cube could not be located in the Cube Catalog table. Essbase Error 1120201 - The number of start-up connections is greater than the maximum pool size. Essbase Error 1120202 - A database with the name [%s] already exists in the relational database for this application. Essbase Error 1120300 - Anchor dimension definition cannot be changed with data loaded. Outline changes rejected. Remove all data from the database and try again. Essbase Error 1120301 - No anchor dimension specified. Outline changes rejected. Specify an

anchor dimension and try again. Essbase Error 1120302 - More than one anchor dimension specified. Outline changes rejected. Essbase Error 1120303 - Anchor dimension specified is SPARSE. The anchor dimension must be DENSE. Outline changes rejected. Essbase Error 1120304 - Not enough columns remain in the fact table to store the added dimensions. Outline changes rejected. Essbase Error 1120305 - Not enough columns remain in the fact table to store the anchor dimension members added. Outline changes rejected. Essbase Error 1120306 - A short name for the dimension could not be created. Rename the dimension and try again. Essbase Error 1120307 - A relational name for a fact column could not be created. Essbase Error 1120308 - DB2 OLAP Server could not select a suitable anchor dimension from those in the outline. Outline changes rejected. Essbase Error 1120309 - The system selected anchor dimension [%s] cannot be replaced by a user-specified anchor dimension with data loaded. Outline changes rejected. Essbase Error 1120310 - The system selected anchor dimension [%s] has been deleted with data loaded. Outline changes rejected. Essbase Error 1120311 - The system selected anchor dimension [%s] has been made SPARSE with data loaded. Outline changes rejected. Essbase Error 1120312 - The system selected anchor dimension [%s] has been made SPARSE but no suitable replacement anchor dimension could be found. Outline changes rejected. Essbase Error 1120313 - The system selected anchor dimension [%s] has been deleted but no suitable replacement anchor dimension can be found. Outline changes rejected. Essbase Error 1120314 - The migration of database [%s] has begun. Essbase Error 1120315 - The migration of database [%s] has ended successfully. Essbase Error 1120316 - The addition of alias table [%s] has failed because its name is the same as a current relational attribute column name on dimension [%s]. Outline changes were rejected. Essbase Error 1120323 - Database [%s] in application [%s] was not started because the outline file does not match the outline stored in the relational database. Essbase Error 1120501 - Some relational database commits worked and some failed. Database [%s] in application [%s] may not be valid. Essbase Error 1120801 - The outline restructure used up all the available [%s] bytes of memory. Increase the data or index cache by [%s] bytes to improve outline restructure performance. Essbase Error 1120900 - The relational database environment could not be initialized. Essbase Error 1120901 - An error was encountered when closing the relational database environment. Essbase Error 1120902 - Using default isolation level of cursor stability. The value specified in the configuration file is not valid. Essbase Error 1120903 - DB2 OLAP Server could not establish a connection to the relational database %s. Essbase Error 1120904 - DB2 OLAP Server could not establish a connection to the relational database %s. Essbase Error 1120905 - The relational database returned information when a connection was terminated. Essbase Error 1120906 - The relational database returned information when a connection was

established. Essbase Error 1120907 - The relational database returned information when the DB2 OLAP Server disconnected. Essbase Error 1120908 - Failure to set the isolation level prevented a connection to the relational database being established. Essbase Error 1120909 - Failure to set the autocommit option prevented a connection to the relational database being established. Essbase Error 1120910 - The relational database returned an error when the DB2 OLAP Server committed a transaction. Essbase Error 1120911 - The relational database returned an error when the DB2 OLAP Server aborted a transaction. Essbase Error 1120912 - An SQL statement failed to execute. Essbase Error 1120913 - The relational database returned information when executing an SQL statement. Essbase Error 1120914 - The relational database returned an error when the DB2 OLAP Server released an execution statement. Essbase Error 1120915 - DB2 OLAP Server could not obtain an execution statement from the relational database. Essbase Error 1120916 - DB2 OLAP Server encountered an error when attempting to lock a table in the relational database. Essbase Error 1120918 - DB2 OLAP Server was unable to lock a table because it is already locked. Essbase Error 1120919 - The relational database returned information when the DB2 OLAP Server locked a table. Essbase Error 1120920 - DB2 OLAP Server encountered an error while preparing to read data. Essbase Error 1120921 - DB2 OLAP Server encountered an internal error while preparing to read data. Essbase Error 1120922 - DB2 OLAP Server encountered an error while preparing to run an SQL statement to read data. Essbase Error 1120923 - DB2 OLAP Server detected an internal error while reading data. Essbase Error 1120924 - The relational database returned information when data was read. Essbase Error 1120925 - The relational database returned an error when data was read. Essbase Error 1120926 - The relational database returned information following an extended read. Essbase Error 1120927 - The relational database returned an error when processing an extended read. Essbase Error 1120928 - The relational database returned an error when preparing an extended read. Essbase Error 1120929 - The relational database returned information when the DB2 OLAP Server requested a named data cursor. Essbase Error 1120930 - The relational database returned an error when the DB2 OLAP Server requested a named data cursor. Essbase Error 1120931 - DB2 OLAP Server encountered a column with an unsupported data type while copying a table. Essbase Error 1120932 - DB2 OLAP Server encountered a column with an unknown data type while copying a table. Essbase Error 1120937 - Database error information: %s.

Essbase Error 1120938 - The relational database returned an error when the DB2 OLAP Server requested a result column count. Essbase Error 1120939 - The relational database returned information when the DB2 OLAP Server requested a result set description. Essbase Error 1120940 - The relational database returned an error when the DB2 OLAP Server requested a result set description. Essbase Error 1120941 - DB2 OLAP Server encountered an internal error while preparing an SQL string. Essbase Error 1120942 - The relational database returned information when the DB2 OLAP Server prepared an SQL SELECT statement. Essbase Error 1120943 - The relational database returned information when the DB2 OLAP Server read internal ID data. Essbase Error 1120944 - The relational database returned an error when the DB2 OLAP Server read internal ID data. Essbase Error 1120945 - DB2 OLAP Server encountered an internal error when attempting to allocate a new internal ID. Essbase Error 1120946 - DB2 OLAP Server encountered an error when attempting to query configuration information for the relational database. Essbase Error 1120947 - DB2 OLAP Server encountered an error because DB2 is not enabled for multiple concurrent connections. Essbase Error 1120952 - The relational database has encountered an error: %s Essbase Error 1121000 - DB2 OLAP Server failed to open the storage manager. %s (%s) Report this error to your system administrator. Essbase Error 1121001 - DB2 OLAP Server failed to close the storage manager. %s (%s) Report this error to your system administrator. Essbase Error 1121002 - DB2 OLAP Server failed to open an application. %s (%s) Report this error to your system administrator. Essbase Error 1121003 - DB2 OLAP Server failed to close an application. %s (%s) Report this error to your system administrator. Essbase Error 1121004 - DB2 OLAP Server failed to open a database. %s (%s) Report this error to your system administrator. Essbase Error 1121005 - DB2 OLAP Server failed to close a database. %s (%s) Report this error to your system administrator. Essbase Error 1121006 - DB2 OLAP Server failed to open a thread. %s (%s) Report this error to your system administrator. Essbase Error 1121007 - DB2 OLAP Server failed to close a thread. %s (%s) Report this error to your system administrator. Essbase Error 1121008 - DB2 OLAP Server failed to open a transaction. %s (%s) Report this error to your system administrator. Essbase Error 1121009 - DB2 OLAP Server failed to close a transaction. %s (%s) Report this error to your system administrator. Essbase Error 1121010 - DB2 OLAP Server failed to commit a transaction. %s (%s) Report this error to your system administrator. Essbase Error 1121011 - DB2 OLAP Server failed to abort a transaction. %s (%s) Report this error to your system administrator. Essbase Error 1121012 - DB2 OLAP Server failed to fix a block. %s (%s) Report this error to your system administrator.

Essbase Error 1121013 - DB2 OLAP Server failed to fix the next block. %s (%s) Report this error to your system administrator. Essbase Error 1121014 - DB2 OLAP Server failed to read a block. %s (%s) Report this error to your system administrator. Essbase Error 1121015 - DB2 OLAP Server failed to unfix a block. %s (%s) Report this error to your system administrator. Essbase Error 1121016 - DB2 OLAP Server failed to set the database to a read-only state. %s (%s) Report this error to your system administrator. Essbase Error 1121017 - DB2 OLAP Server failed to set the database to a read-write state. %s (%s) Report this error to your system administrator. Essbase Error 1121018 - DB2 OLAP Server failed to clear data from the database. %s (%s) Report this error to your system administrator. Essbase Error 1121019 - DB2 OLAP Server failed to retrieve database information. %s (%s) Report this error to your system administrator. Essbase Error 1121020 - DB2 OLAP Server failed to retrieve database runtime information. %s (%s) Report this error to your system administrator. Essbase Error 1121021 - DB2 OLAP Server failed to free database information. %s (%s) Report this error to your system administrator. Essbase Error 1121022 - DB2 OLAP Server failed to restructure a database. %s (%s) Report this error to your system administrator. Essbase Error 1121023 - DB2 OLAP Server failed to create a new database. %s (%s) Report this error to your system administrator. Essbase Error 1121024 - DB2 OLAP Server failed to delete a database. %s (%s) Report this error to your system administrator. Essbase Error 1121025 - DB2 OLAP Server failed to rename a database. %s (%s) Report this error to your system administrator. Essbase Error 1121026 - DB2 OLAP Server failed to copy a database. %s (%s) Report this error to your system administrator. Essbase Error 1121027 - DB2 OLAP Server failed to archive a database. %s (%s) Report this error to your system administrator. Essbase Error 1121028 - DB2 OLAP Server failed to validate a database. %s (%s) Report this error to your system administrator. Essbase Error 1121029 - DB2 OLAP Server failed to create a new application. %s (%s) Report this error to your system administrator. Essbase Error 1121030 - DB2 OLAP Server failed to delete an application. %s (%s) Report this error to your system administrator. Essbase Error 1121031 - DB2 OLAP Server failed to rename an application. %s (%s) Report this error to your system administrator. Essbase Error 1121032 - DB2 OLAP Server failed to copy an application. %s (%s) Report this error to your system administrator. Essbase Error 1121033 - DB2 OLAP Server failed to link an object. %s (%s) Report this error to your system administrator. Essbase Error 1121034 - DB2 OLAP Server failed to delete a linked object. %s (%s) Report this error to your system administrator. Essbase Error 1121035 - DB2 OLAP Server failed to update a linked object. %s (%s) Report this error to your system administrator. Essbase Error 1121036 - DB2 OLAP Server failed to get a linked object. %s (%s) Report this

error to your system administrator. Essbase Error 1121037 - DB2 OLAP Server failed to get the catalog of linked objects. %s (%s) Report this error to your system administrator. Essbase Error 1121038 - DB2 OLAP Server failed to list the linked objects. %s (%s) Report this error to your system administrator. Essbase Error 1121039 - DB2 OLAP Server failed to purge the linked objects. %s (%s) Report this error to your system administrator. Essbase Error 1121040 - IBM DB2 OLAP Server 5679-OLP (C) Copyright IBM Corp., 1998. All rights reserved. Licensed Materials - Property of IBM. US Government Users Restricted Rights. Use, duplication or disclosure restricted by GSA ADP Schedule contract with IBM Corp. Essbase Error 1121041 - DB2 OLAP Server failed to create a list of LRO flags. %s (%s) Report this error to your system administrator. Essbase Error 1121042 - DB2 OLAP Server failed to free LRO memory. %s (%s) Report this error to your system administrator. Essbase Error 1121043 - DB2 OLAP Server failed to retrieve the current database settings. %s (%s) Report this error to your system administrator. Essbase Error 1121044 - DB2 OLAP Server internal error. Essbase Error 1121102 - DB2 OLAP Server could not continue because the [%s] entry in the rsm.cfg file is not a supported parameter. Report this error to your system administrator. Essbase Error 1121103 - DB2 OLAP Server could not continue because the [%s] parameter in the rsm.cfg file is not supported in the section for application [%s]. Report this error to your system administrator. Essbase Error 1121104 - DB2 OLAP Server could not continue because the [%s] parameter in the rsm.cfg file is not supported in the section for database [%s]. Report this error to your system administrator. Essbase Error 1121105 - DB2 OLAP Server could not continue because the value [%s] specified in the rsm.cfg file for parameter [%s] is incorrect. Report this error to your system administrator. Essbase Error 1121200 - The LRO object was not updated because the provided status did not match the status in the LRO table. Essbase Error 1121201 - The LRO object was not updated because the provided object type did not match the object type in the LRO table. Essbase Error 1121202 - The update or get LRO operation failed because the LRO object was not found in the LRO table. Essbase Error 1121302 - The removal of the relational attribute column [%s] failed because relational attributes exist in the column. The column must be empty before being removed. Outline changes were rejected. Essbase Error 1121303 - No relational attribute column name was found after the RELCOL keyword for dimension [%s]. Outline changes were rejected. Essbase Error 1121304 - No data type was found after the RELCOL keyword and relational attribute column name [%s] for dimension [%s]. Outline changes were rejected. Essbase Error 1121305 - The relational attribute column name [%s] specified after the RELCOL keyword for dimension [%s] is too long. Outline changes were rejected. Essbase Error 1121306 - No recognized data type was found after the RELCOL keyword and relational attribute column name [%s] for dimension [%s]. Outline changes were rejected. Essbase Error 1121307 - No size was found following a character data type after the RELCOL keyword and relational attribute column name [%s] for dimension [%s]. Outline changes were

rejected. Essbase Error 1121308 - No matching single quote was found at the end of a column name after the RELCOL keyword for dimension [%s]. Outline changes were rejected. Essbase Error 1121309 - The column name [%s] after the RELCOL keyword for dimension [%s] does not conform to the naming convention for columns in the relational database. Outline changes were rejected. Essbase Error 1121310 - The column name [%s] after the RELCOL keyword for dimension [%s] is the same as the name of a current relational attribute column or an attribute column being deleted. Outline changes were rejected. Essbase Error 1121311 - The column name [%s] after the RELCOL keyword for dimension [%s] is the same as the name of a current alias table. Outline changes were rejected. Essbase Error 1121312 - No relational attribute column name was found after the RELVAL keyword for member [%s] in dimension [%s]. Outline changes were rejected. Essbase Error 1121313 - No data value was found after the relational attribute column name and RELVAL keyword for member [%s] in dimension [%s]. Outline changes were rejected. Essbase Error 1121314 - The relational attribute column name specified after the RELVAL keyword for member [%s] in dimension [%s] is too long. Outline changes were rejected. Essbase Error 1121315 - The column name specified after the RELVAL keyword for member [%s] is not recognized as an existing relational attribute column for dimension [%s]. Outline changes were rejected. Essbase Error 1121316 - No quotes were found surrounding the character data after the RELVAL keyword and relational attribute column name for member [%s] in dimension [%s]. Outline changes were rejected. Essbase Error 1121317 - No matching single quote was found at the end of a column name after the RELVAL keyword for member [%s] in dimension [%s]. Outline changes were rejected. Essbase Error 1121318 - Character data following the RELVAL keyword is larger than the size specified for the relational attribute column for member [%s] in dimension [%s]. Outline changes were rejected. Essbase Error 1121500 - Current anchor dimension [%s] is dimension number Essbase Error 1121501 - Number of blocks currently fixed Essbase Error 1121502 - High water number of blocks fixed Essbase Error 1121503 - Number of blocks currently cached Essbase Error 1121504 - High water number of blocks cached Essbase Error 1121505 - Maximum number of cache blocks Essbase Error 1121506 - Block cache hit rate Essbase Error 1121507 - Number of keys currently cached Essbase Error 1121508 - High water number of keys cached Essbase Error 1121509 - Maximum number of cached keys Essbase Error 1121510 - Key cache hit rate Essbase Error 1121511 - Percent waste fact table space in unused columns Essbase Error 1121512 - Number of values per row in the fact table Essbase Error 1121513 - Maximum number of rows per block in the fact table Essbase Error 1121514 - Current number of connections Essbase Error 1121515 - High water number of connections Essbase Error 1121516 - Connection pool size Essbase Error 1121517 - Maximum connection pool size Essbase Error 1121518 - High water block cache size

Essbase Error 1121519 - High water key cache size Essbase Error 1180000 - Autodelete group (%s) is not an Essbase/400 group. Autodelete disabled. Essbase Error 1180001 - Cannot autodelete only supervisor! Essbase Error 1180002 - OS400UsersGroup (%s) is not an OS/400 Group User Profile, OS400UsersGroup disabled Essbase Error 1180003 - OS400UsersGroup (%s) is not an Essbase/400 group, OS400UsersGroup disabled Essbase Error 1180004 - OS400CommonGroup (%s) ignored. It is not an OS/400 Group User Profile Essbase Error 1180005 - OS400CommonGroup (%s) ignored. It is not an Essbase/400 group Essbase Error 1180006 - Autodelete group (%s) has been deleted, Autodelete disabled Essbase Error 1180007 - User (%s) holds lock on object (%s). Autodelete skipped Essbase Error 1180008 - OS400UsersGroup group (%s) has been deleted, OS400UsersGroup disabled Essbase Error 1180009 - Attempt to rename OS400UsersGroup [%s] group disallowed Essbase Error 1180010 - Attempt to rename OS400AutoDelete [%s] group disallowed Essbase Error 1180011 - Attempt to rename OS400CommonGroup [%s] group disallowed Essbase Error 1180012 - Attempt to rename OS400 integrated user [%s] disallowed Essbase Error 1180013 - OS/400 Change Password validation error: [%s] Essbase Error 1180018 - Received Get NLS Info request Essbase Error 1180019 - NLS Configuration differs between client and server Essbase Error 1180020 - NLS Configuration cannot be verified with non-OS/400 Essbase server Essbase Error 1180021 - Total Calc CPU Time : [%s] seconds Essbase Error 1180022 - Calc Percent CPU: [%s] Essbase Error 1180023 - Free space management overflow. Sorting input data based on sparse columns before loading or using SQL ORDER BY clause to order on sparse columns in data load rule file may alleviate this problem Essbase Error 1180024 - %s error(s) logged during data load operation Essbase Error 1180025 - ESSCMD/400 exiting Essbase Error 1180026 - Too few arguments for %s command. Each missing argument will be substituted with . This may cause the command to fail. See subsequent messages (if any) to determine if this command was successful. Essbase Error 1180027 - You must login before using the %s command Essbase Error 1180028 - You must select a Database before using the %s command Essbase Error 1180029 - Error(s) logged during dimension build operation Essbase Error 1180030 - User (%s) is managed via Integrated Security. This change must be made via OS/400 User Profile management interfaces How to Encrypt Essbase Maxl Scripts This blog which I'm going to write....probably you all know about this....but I was unaware....So this is for those souls who still don't know the trick. It's a challenge of every Essbase developer when it comes to the security be if Filters, Maxl scripts.....and especially Maxls....

Maxl script needs a username and password to be passed as a prompt or you should hard cord it into the script, which in turn somebody can access the script and learn the Admin username and password....which in turn is a risk....I know many will have counter arguments that will include....the person who is having access to the server should be an admin (yes I always use this argument to counter the infrastructure counterpart). So what I used to do was to use a java util to encrypt the password and use that as the original password and fool people saying that it is an encrypted one....smart ain't it..... But now I learned something where I can use Maxl itself to encrypt the username and password and even strings that is used in the Maxl. So here we go. Open up a command prompt and issue command essmsh -gk to create a public key and private key for your essbase server.

C:\Users\ckattookaran>essmsh -gk Essbase MaxL Shell - Release 9.3.1 (ESB9.3.1.0.0B181) Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. Public Key for Encryption: 25159,850102129 Private Key for Decryption: 240764119,850102129 MaxL Shell completed The Public key will be used for encrypting the Maxl and Private key to de-crypt it. So as an example I'm using a Maxl which a simple login MaxL. spool on to 'C:\\Hyperion\\Maxl_Logs\\login.log'; login admin password on locahost; spool off; logout; exit; Issue the command essmsh -E to encrypt the Maxl script essmsh -E "c:\Users\ckattookaran\Documents\My Data\Maxl & Shell scripts\login.txt" 25159,850102129

After the command is successfully completed you'll now have a file with .txts extension (this may vary with the extension that you are using for the Maxl, if you are using .mxl then it'll be .mxls) The content of the .txts file is spool on to 'C:\\Hyperion\\Maxl_Logs\\login.log'; login login $key 582033048551405370673192053444359748281400644 010812008451704913969265807220406317 on on locahost; spool off; logout; exit;

$key

Now we can look at the string encryption, let say that I don't want the to reveal the server name then you can issue the command essmsh -ep to encrypt the string. C:\Users\ckattookaran>essmsh -ep localhost 25159,850102129 Essbase MaxL Shell - Release 9.3.1 (ESB9.3.1.0.0B181) Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.

Encrypted Data: 342268018499721804402002180168360995190940510637239348732675267 87484785601304137703061980744435974828140064487442187248785421365776 126253383571 05949719269591362224510978173268608377923104304443597482814006445420 480435792003 16766399992908056851136623496466375932484596957918182142828415114253 587790579200 316026519838449418421 MaxL Shell completed

So now that the Maxl is encrypted we can run the Maxl using and Private Key. essmsh -D "c:\Users\ckattookaran\Documents\My Data\Maxl & Shell scripts\login.txt" 240764119,850102129 So that's about Encryption of Maxl scripts

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF