Using $ sign on MaxL scripts

Hi all,
How does using $ sign on MaxL scripts work? I have seen scripts that $ sign was used instead of username, password, server name, etc. What are the advantages of using it and how can it be set up?
Thanks in advance.
A

$ are used to denote variables and to be pedantic about it, encrypted usernames and passwords which I guess are used sort of like variables.
I use them all the time unless the MaxL script is super quick, dirty, and disposable. And they never end up being disposed of.
Check out this part of the Tech Ref for all you ever wanted to know about variables in MaxL:
http://download.oracle.com/docs/cd/E17236_01/epm.1112/esb_tech_ref/maxl_syntax_vars.html
If you want to get a different take on them, check out ODTUG's Resource Center and my presentation from 2009 to get a feel for how they can be used in scripting. My blog also has a post from 2009 on how to use variables under the "Fixing Planning's Filters" topic.
Regards,
Cameron Lackpour

Similar Messages

  • Weird problem using "Login" in MaxL script

    Hi there
    I have created a MaxL script for loading som data into an Essbase. The script you can see below.
    login 'user' 'password' on 'nkm18k14';
    import database 'realtest'.'Loadtest'
    data from text data_file '\\nkm18k00\Planning\Loaddata\lonbud.txt'
    using server rules_file 'LonBLoad'
    on error write to '\\nkm18k00\Planning\Errorlogs\realtest.txt';
    When I try to execute it, as it is i get the following error "(3) Syntax error near ['$'], which im guessin is line 3, right?
    When I remove line 1 (the login statement), the script runs just fine. What is goin on, any ideas?
    I as a user have write acces to the network locations specified, could it be that the essbase uses som kind of system user that doesn't have acces to the network location?
    Any valuable input will be appreciated.
    Regards, Jacob

    It's true that they are not "needed" from a security approach, but from a maintenance approach you still end up having to touch a large number of scripts if you store the connection details in them.
    As a system user, you don't even have to change the password -- but if you have someone leave the company you may just want to.
    Either way, I would never want to hard code connectivity details inside dozens of scripts when I can keep it in a single place.
    Here is the MXL_Shell file for Windows -- you can obtain the SendEmail.exe from multiple places, but the syntax should be validated.
    The location of the scripts, log files, and batch items can of course be modified to your liking as well...
    The Errors that are ignored are stored in a file called "IGNORED.TXT" in the Batch directory (see below for what I ignore).
    @echo off
    REM ================================================================
    REM   MXL_Shell.cmd - Wrapper to call EssMsh (MXL) scripts
    REM ----------------------------------------------------------------
    REM   Author: Doug Bliss
    REM   Initial QC: 5/21/2005
    REM ----------------------------------------------------------------
    REM   Script to Execute should be base name (without extension)
    REM   Script should exist in the ..\Scripts directory
    REM   Both StdOut and StdErr are redirected to ..\Logs\<Script>.log
    REM   Call activity is logged to ..\Logs\Daily_ddmmyy.log
    REM   Log file is appended to ..\Logs\<Script>.hst at finish
    REM   Log file is processed for "Error" tokens to determine if
    REM      the result was successful or not
    REM   Notifications are taken from comment blocks in the script:
    REM      /* Notifications:
    REM         ONSUCCESS [email protected]
    REM         ONERR [email protected]
    REM       */
    REM   Localization details: Update the variables set immediately below (typically SRCPATH and EMAIL*)
    REM ================================================================
    SET SRCPATH=C:\Automation
    SET EMAILDOM=<yourcompany.com>
    SET EMAILRELAY=<relay>.%EMAILDOM%
    SET DEVBOX=<devboxname>
    SET IGNORE=%SRCPATH%\Batch\Ignored.txt
    SET MXLFILE=%SRCPATH%\Scripts\%1.mxl
    SET LOGPATH=%SRCPATH%\Logs
    SET LOGFILE=%LOGPATH%\%1.log
    SET ERRFILE=%LOGPATH%\%1.err
    SET HSTFILE=%LOGPATH%\%1.hst
    SET DAYFILE=%LOGPATH%\Daily_%date:~4,2%%date:~7,2%%date:~10,4%.log
    REM ################################## Step 1: Sanity Checks
    IF "%1"=="" EXIT /B 1
    IF NOT EXIST %MXLFILE% EXIT /B 2
    REM ################################## Step 2: Initialize Log entries
    IF NOT EXIST %LOGPATH%\. MKDIR %LOGPATH% >nul
    IF EXIST %ERRFILE% MOVE /Y %ERRFILE% %SRCPATH%\Logs\%1.bak.err >nul
    IF EXIST %LOGFILE% MOVE /Y %LOGFILE% %SRCPATH%\Logs\%1.bak.log >nul
    REM ################################## Step 3: Call the Script
    ECHO %time% -- Calling EssMsh Script: %1.mxl %2 %3 %4 %5 %6 %7 %8 %9 >>%DAYFILE%
    ECHO ============================== ESSBASE SESSION LOG >%LOGFILE%
    ECHO Log Opened: %date% %time% >>%LOGFILE%
    CALL User.cmd
    essmsh.exe -s %COMPUTERNAME% -u %UID% -p %PWD% %MXLFILE% "%2" "%3" "%4" "%5" "%6" "%7" "%8" "%9" >>%LOGFILE% 2>&1
    REM ################################## Step 4: Post Processing
    REM #### Daily Log Entry (return call)
    ECHO %time% -- Returned from Maxl Script: %1.mxl >>%DAYFILE%
    ECHO Log Closed: %date% %time% >>%LOGFILE%
    ECHO ============================== END OF SESSION >>%LOGFILE%
    REM #### Process Error entries and filter via Ignored.txt file
    TYPE %LOGFILE% | FIND "ERROR" >%ERRFILE%
    FOR /f "tokens=1" %%a in (%IGNORE%) DO TYPE %ERRFILE% | FIND /V "%%a" >%ERRFILE%
    FOR %%a in (%ERRFILE%) DO SET /a ErrCount=%%~za >nul
    IF '%COMPUTERNAME%'=='%DEVBOX%' (
         SET TYPE=NON-Production
         SET SVR=development
    ) ELSE (
         SET TYPE=Production
         SET SVR=production
    IF %ErrCount% EQU 0 (
         ERASE /Q %ERRFILE%
         SET SUBJECT=Essbase %TYPE% Script Completed
         SET MESSAGE=Maxl script '%1' has successfully completed on the %SVR% server.
         SET ATTACH=
         SET RESULT=SUCCESS
    ) ELSE (
         REM ################################## ERROR Processing
         SET SUBJECT=Essbase %TYPE% Script Error
         SET MESSAGE=Errors were detected in Maxl script '%1', the job's log and error files are attached.
         SET ATTACH=%LOGFILE% %ERRFILE%
         SET RESULT=ERR
    TYPE %MXLFILE% | FIND "ON%RESULT%" >Notify.tmp
    FOR /f "tokens=2" %%a in (Notify.tmp) DO SendEmail -f %COMPUTERNAME%@%EMAILDOM% -t %%a -u "%SUBJECT%" -m "%MESSAGE%" -s %EMAILRELAY% -a %ATTACH%
    ERASE /Q Notify.tmp
    ECHO. >>%DAYFILE%
    ECHO. >>%HSTFILE%
    TYPE %LOGFILE% >>%HSTFILE%
    :FIN
    ECHO.
    EXIT /B %ERRCOUNT%Here is my IGNORED.TXT file (only the code itself is used, the rest is for reference).
    0000000  This file contains Essbase Error codes which should be ignored by ESS_Shell.cmd or MXL_Shell.cmd
    1051083  This substitution variable does not exist.
    1003029  Encountered formatting error in spreadsheet file [%s]
    1090010  Error in File [%s] Which is a [%s] Spreadsheet
    1051068  Database is not in archive read-only mode

  • MAXL SCRIPT TO EXECUTE IN BACKGROUND THE DATA LOAD

    Hi,
    I have problem with a MaxL script, I don´t know the command to execute a data load in the background, someone knows??? it would be very grateful if you can help me because now I have to load the data manually and then tick execute in background.
    Thanks for your help
    Regards,

    If the two processes are in no way dependent on each other, why not just use two separate MaxL scripts and run / schedule them separately?
    If you really need to launch multiple MaxL operations against different cubes to run in the background from a single script you can only do this with a shell / command script, not 'natively' in MaxL. If you're on Windows and using CMD, for example, see the 'START' command.
    --EDIT: Crossed over with Sunil, think he pretty much covers it!                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • How to delete the members in one dimension use the maxl script

    i have question that i want to delete the members in one dimension useing the maxl script, but i do not know how to do it. can the maxl delete the members in one dimension? if can, please provide an sample script, thank you so mcuh.

    MaxL does not have commands to alter an outline directly, except the reset command which can delete all dimensions but not members selectively. The best you could do would be to run a rules file (import dimensions) using a file that contains the members you want to keepload rule for the dimension. As typical the warning is to test this first before you do it on a production database

  • Script to export Security file using maxl script

    can anyone provide me the Script to export Security file using maxl script.It should create a log file and a batch file should also be there to schedule the Maxl script.Please help me with this

    Hi,
    You can use something like
    [b]login admin password on localhost;
    [b]spool on to 'c:\temp\log.txt';
    [b]export security_file to data_file C:\temp\sec_file.txt;
    [b]spool off;
    [b]logout;
    Then you can have a batch file that just calls the maxl script
    essmsh name_of_maxl_script.mxl
    The batch script can then be scheduled.
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • Automation process in Workspace (using MaxL script)

    Hi All,
    I have a MaxL script to export Level 0 data and to update new data in a database
    It is working fine.
    I have tried to schedule it, and its also working fine.
    But according to my requirement, i have to publish this MaxL script in workspace as a job or as a file so that I can run this MaxL script in workspace only.
    I have tried some way but didn't get success.
    So help me to solve my problem
    Thanks in advance

    We are using workspace and jobs to automate our processes. Here is how we do it:
    In the server that runs workspace, we place the batch or exe that needs to be run. Then we set up a job factory using that same batch file.
    Then on workspace we import this batch file as a generic job with the associated job factory and DONE!
    Next time you execute the job from workspace, that batch file will run from your workspace machine.
    send me an email to [email protected] and I'll give you the documentation that we used to set it up in more details.

  • Can you suggest me how to run multiple calc scripts using singel maxl script

    Hello,
    I am writing a maxl script which should be able to :
    1. update Set Variables for the Essbase DB
    2. Execute multiple calc scripts
    2a. Trying to put specific sleep time within multiple calc scripts.
    Thanks and Regards.

    Why are you looking for a Maxl to run multiple maxls? Can't you use a batch or sh script to do it.
    Unix has a sleep command in batch file try using choice
    Regards
    Celvin

  • Copying substitution varibale using Maxl script

    Hi,
    Ive been trying to copy application using Maxl script in essbase to take backups. Everything gets copied except substitution variables. Could some one help me in sorting out this issue.
    Is there any specific Maxl Command to copy substitution variable alone from one application to another, if so could u please share it with me.
    thanks

    Hi,
    Unfortunately, as John said, there is no command to copy the subvars. One of my colleagues ran into this same issue on one of my projects. He ended up spooling a script with display variable all command to show all your variables and write them to a text file. from there he wrote a batch file to parse the text file for each of the variables, and then updated the subvars in the backup application with these values.
    The thing you want to look out for here is that you want to make sure you properly handle checking for whether the subvar already exists in the backup application. If it does, you just want to run an update of the value. If it doesn't exist, you want to add it first. This is because there is no create or replace variable, so to avoid any errors, you need to be careful with that. I think you may want to look into some of the other alternatives John provided if you are still looking into this issue.
    Thanks,
    Daniel
    http://www.DVEPM.com

  • How to sign a powershell script to be used for distribution

    Hi,
    I am new to powershell so if I'm missing out on any detail, please let me know.
    We have some powershell scripts we send over to the clients to execute. Their powershell enviroment has execution policy set to 'remote signed'
    Now I have read multiple blogs for how to sign the powershell script to be used at different execution levels, but my understanding is signing is for my environment only.
    http://www.hanselman.com/blog/SigningPowerShellScripts.aspx
    http://blogs.technet.com/b/heyscriptingguy/archive/2010/06/17/hey-scripting-guy-how-can-i-sign-windows-powershell-scripts-with-an-enterprise-windows-pki-part-2-of-2.aspx
    I'm probably missing out on something obvious and I'll appreciate if someone can explain me how to sign my script so that client can use it in their environment with any execution level set.
    Thanks in advance!

    Here's a bit more information on the subject:
    http://technet.microsoft.com/en-us/library/hh847874.aspx
    http://msdn.microsoft.com/en-us/library/ms537361.aspx
    You can get code signing certificates from the major vendors.
    Don't retire TechNet! -
    (Don't give up yet - 13,085+ strong and growing)

  • Maxl Script will not write to error file for data laod.

    Sorry Glenn here is the new thread. I re ran without the semi colon after data 3 and the same error came up without anything being written to the error file.
    I purposely removed a member from the orginal outline that is included in the data loaded but yet the error file is not written to. I tried doing the load manually but executing it in the background, error file is to be created on my local HD but it does not write it there. Checked the output and it is written to a directory located on the server. Although i think this is normal.
    Could it be that it will not write to a local drive? I am going to try specifying a spot on the server to see if it runs there.
    thanks
    Original post below.
    Hello,
    I am also having this issue.
    I will include my script below but will state some details before
    We are on Essbase 11.1.1.3
    I am running Admin Console from my client PC that connects to the server in the script and I read that in this set up the error file will not get written to. This documentation was for v 9.1.3
    Here is my script (i changed some of the names)
    login 'user' 'password' on server';
    create application 'Money1' as 'Money2';
    spool stderr on to 'errorfile';
    import database 'Money1'.'Main' data
    from local text data_file 'Money1_Data.txt'
    using server rules_file 'Data3'
    on error append to 'dataload.err';
    execute calculation 'CALC ALL;' on 'Money1'.'Main';
    logout;
    spool off;
    exit;
    here is the error output i get:
    code line: on error append to 'dataload.err';
    Statement executed with warnings.
    (3) Syntax error near ['$']
    I don't see a dollar sign anywhere in my code and the error file does not get produced.
    Also do error files get written too if the actins are executed in the background?
    Thanks!
    Alex

    This works for me in a MaxL script run through essmsh.exe:
    import database appname.dbname data from local text data_file "d:\\datafilename.txt" using server rules_file "rulename"
         on error write to "d:\\errorfilename.err" ;Sometimes EAS (I think you are running it through that) does weird things to MaxL. I eschew MaxL in EAS as much as possible (like 100% of the time).
    NB -- the datafilename and errorfilename and their drive letters are local to wherever you're running this process through the MaxL shell. I don't know how that works when you're running EAS -- are drives local to your session, local to the EAS server? Dunno. Leave EAS behind, buy TextPad (no I am not the author of that fine product) and download the MaxL syntax library, and be happy. :)
    Regards,
    Cameron Lackpour
    Edited by: CL on Oct 7, 2010 7:12 AM
    Put the MaxL into a code block to get it to display correctly.

  • Looping in Maxl Script - To load multiple files

    Hi,
    I am using Essbase 11.1.2 on UNIX.
    I have maxl script which will load 20 to 30 extraction file. Number is inconsistent. Extraction files will grow each month. Extraction files are with same name with the suffix _1,_2...(2 Gb thing). My previous script was hard coded to load file by file to load up to 50 files. I am trying to remove these hard coded lines, and try to loop the “load” statement. I have tried several ways using while loop in shell to call maxl /msh , but no luck. Any ideas?
    Thanks

    A very similar question was asked recently (but for Windows): Re: Maxl to import datafolders
    What have you tried? Maybe someone here can show you what's wrong with your script.
    The approach I usually take with this type of problem is to write a script that dynamically builds one single MaxL script with the appropriate number of files, rather than calling MaxL multiple times.
    I am generally too ashamed to share my Unix scripts, but at it's most basic, non-error-trapped, probably-inadvisable-and-full-of-holes-for-all-kinds-of-reasons, you could include something like this to build your load script:
    ls filename*.txt | awk {'print "import database etc... "$1" ...on error etc;"'} > scriptname.mshSince you can nest MaxL scripts, you can then reference scriptname.msh from a static 'master' script which handles login / spool on / spool off / logout as appropriate. See http://download.oracle.com/docs/cd/E17236_01/epm.1112/esb_tech_ref/maxl_commands_nesting.html or Cameron's 2009 K'scope presentation: http://odtug.com/apex/f?p=500:575:526121996615242::NO::P575_CONTENT_ID:4605

  • MAXL Script

    I'm having trouble with running a MAXL Script. I have a macro in Access that creates my load table. The last command in the macro is "essmsh loadcube.msh".The shell will open, but doesn't take input from the file. The file contents are:login user pswd on server;set message level all;import database Invstmnt.Invstmnt data from data_file 'C:\Hyperion\Essbase\Client\loadinv05.xls' using rules_file 'T:\App\Invstmnt\Invstmnt\Data05.rul' on error append to 'C:\Hyperion\Essbase\Client\errorinv.log';execute calculation 'SET MSG ERROR; CALC ALL;' on Invstmnt.Invstmnt;logout;exit;Is this incorrect??? These steps work fine when I key it into the shell.

    I am making the assumption you want to update a substitution variable, not a 'global' variable. Symantecs of course as they are global, but hope I get you heading down the right path.
    Yes, you'll need to use the Alter Database command. You must first drop the variable then add the variable you want.
    ex:
    alter database $4.$5 drop variable pyryear;
    alter database $4.$5 add variable pyryear;
    alter database $4.$5 set variable pyryear "FY07";
    obviously this is a snipit of code I have from a MaxL automation with positional variables included, but this should have you heading in the proper direction.

  • Auto-kick off MaxL script after Oracle GL data load?

    Hi guys, this question will involve 2 different modules: Hyperion and Oracle GL.
    My client has their accounting department updating Oracle GL on a daily basis. My end-user client would like to write a script to automatically kick off the existing MaxL script which is for our daily data load in Hyperion. Currently, the MaxL script is manually executed.
    What's the best approach to build a connection for both modules to communicate with each other? Can we use a timer to trigger the run? If so, how?

    #1 External scheduler.
    I've worked on Appworx and it has build a chain dependent task. There are many other external schedulers like Tivoli,....
    #2 As Daniel pointed out you can use Windows scheduler.
    For every successful GL load add a file to a folder which is accessible for your Essbase task.
    COPY Nul C:\Hyperion\Scripts\Trigger\GL_Load_Finished.txt
    Create another bat file which is scheduled to run on every 5 or 10 mins (this should start just after your GL Load scheduled task)
    This is an example i've for a triggered Essbase job.
    IF EXIST %BASE_DIR%\Trigger\Full_Build_Started.txt (
    Echo "Full Build started"
    ) else (
         IF EXIST %BASE_DIR%\Trigger\Custom_Build_Started.txt (
         Echo "Custom Build started"
         ) else (
              IF EXIST %BASE_DIR%\Trigger\Post_Build_Batch_Started.txt (
              Echo "Post Build started"
              ) else (
              IF EXIST %BASE_DIR%\Trigger\Start_Full_Build.txt (
              Echo "Trigger found starting batch"
              MOVE %BASE_DIR%\Trigger\Start_Batch.txt %BASE_DIR%\Trigger\Full_Build_Started.txt
              call %BASE_DIR%\Scripts\Batch_Files\Monthly_Build_All_Cubes.bat
              ) else (
                   IF EXIST %BASE_DIR%\Trigger\Start_Custom_Build.txt (
                   Echo "Trigger found starting Custom batch"
                   MOVE %BASE_DIR%\Trigger\Start_Custom_Batch.txt %BASE_DIR%\Trigger\Custom_Build_Started.txt
                   call %BASE_DIR%\Scripts\Batch_Files\Monthly_Build_All_Cubes_Custom.bat
                   ) else (
                        IF EXIST %BASE_DIR%\Trigger\Start_Post_Build_Batch.txt (
                        Echo "Trigger found starting Post Build batch"
                        MOVE %BASE_DIR%\Trigger\Start_Post_Build_Batch.txt %BASE_DIR%\Trigger\Post_Build_Batch_Started.txt
                        call %BASE_DIR%\Scripts\Batch_Files\Monthly_Post_Build_All_Cubes.bat
    )So this bat file if it finds Start_Full_Build.txt in the trigger location, it'll rename that to Full_Build_Started.txt and will call the Full Build (likewise for custom and post build)
    Regards
    Celvin
    http://www.orahyplabs.com

  • How to exit Maxl Script

    Hi,
    In the tech ref, "It is not necessary to exit at the end of MaxL script files or stream-oriented input (using the -i switch)". How is this done?
    I want to run a DOS batch after the Maxl script is done.
    Thanks.

    Nevermind I figured it out. I changed the .bat command to follow.

  • Cahnge the date  dynamically in Maxl script

    Hi All,
    I am excuting one max for clearing the data for particuler cells it s ok
    It will work for 9th month but next month it will not work until i dont change the value manually
    Dynamically i need to change
    alter database 'ACCOUNT'.'account' clear data in region '{([2010.09],[Actual])}' physical;
    how can i do this , any help would be appriciated..

    I think he wants to avoid updating anything manually though?
    you should be able to:
    a. Build the date/string in a batch file.
    b. pass that date/string to the maxl script as a paramter
    c. use the parameter in your alter database script
    I have also seen people rebuild the entire maxl script each month from a skeleton in another text file or a database but thats probably over complicating.
    You could also use that variable to update a substitution variable

Maybe you are looking for