How to automate the updating of a dimension - both members and properties

I need to automate the updqating of one of my dimensions in BPC 5.1 using SSIS.  I've tried the "Admin_Makedim.dtsx" that comes with the system.  It completes succesfully, but nothing is actually changed or updated in the dimension. 
Has anyone sucessfully used this package?  If so, does it recognize (and handle) changes to properties of existing dimension members?

I created an SSIS package that performs most of what you're looking for, including updating the XLS file.  Please note, that the entire table must be updated.  There is no way that I know of yet on how to update incrementally.
Below is the documentation I created for the package (pictures are omitted by the blog).
I will email you a copy of the package and the full documentation as well.
*APPENDIX 10 REQUIRED EXCEL INPUT FILE*
Contents
Meta data (or master data) can be updated automatically thru a daily batch job.  A sample of the Excel file is below.  It contains all the properties defined for that dimension.  In addition, four additional system processed columns needs to be populated if this file is updated from the back-end.  They are:
Calc – (Y/N) Is the member a calculated field?  This includes all parent members which are calculated by aggregating their children.
DimCalc – (Y/N) Is the member a dimension calculation field? These are members that are represented by formulas, rather than entered, fed or aggregated.
IsBaseMem – (Y/N) Is the member a Base Member, a field that is entered in manually or fed in at the lowest level of the hierarchy?
Hir – Which hierarchies does the member belong to?  If the member belongs to multiple hierarchies, then they are listed with semicolons.  For example, a member belonging to both Parent H1 and Parent H2, would have this field filled in as:  H1;H2
Location
The Excel file is located at:
C:\BPC\Data\Webfolders\[Application Name]\AdminApp\[Dimension Name].xls
When the Excel file is to be replaced, the new one should be placed and named at:
C:\BPC\Data\Webfolders\[Application Name]\AdminApp\[Dimension Name]_Update.xls
SSIS PACKAGE
Each dimension that is to be updated from the back end will have its own SSIS package for executing a back end update.
Variables
The package, one for each Dimension, has just four variables to configure
AppSet – the name of the Application Set, such as Finance
DimensionName – the name of the Dimension, such as IntCo
InstallDirectory – the directory in which BPC was installed up to the Webfolders directory, such as  C:\BPC\Data\Webfolders\
User_Server – the fully qualified user that will be executing the package, such as DCC\osoftadmin
These four variables can be set rather simply within the corresponding configuration file (*.dtsConfig), or hard coded within the SSIS file itself.
Column Mappings
The package manually requires the columns between the Excel table and the internal BPC ‘mbr’ table be mapped to each other.  This is a rather simple click-and-drag, because the column names between the two should match.  Modifications to these mapping are only necessary when the properties are modified.
SSIS TASK FLOW
The SSIS package performs the following steps when executed:
•     Backs up the original Excel file with a date stamped copy
•     Replaces the original Excel file with the updated version
•     Clears the corresponding internal BPC ‘mbr’ table
•     Populates the ‘mbr’ table with the values within the updated Excel file
•     Clears the corresponding internal BPC ‘dim’ table
•     Performs a BPC ‘full process’, which populates the ‘dim’ table
Logs
Transaction logs, which specify the success (or failure) of each of the above steps, are recorded and stored at:
C:\BPC\Data\Webfolders\[Application Name]\AdminApp\Logfile\

Similar Messages

  • Report on the Dimensions, its members and properties

    Hi All,
    Is there any report or work around to pull the information on Dimensions, its members and Properties into excel, pdf etc like Form Definition report?
    Thanks,
    Ravi

    Hi Ravi,
    I am assuming that you are referring to a planning application. You can extract the dimension members in two ways:
    1. You can download and install a tool called Essbase outline extractor. This is a free tool which you can download. This connects with Essbase and you can get the information in different formats.
    2. Planning stores its data in RDBMS database. This again holds the information of the dimension structure, members etc. You can extract the information by querying this database. For e.g.
    select A.Object_Name as Parent,B.Object_NAme as Child from HSP_OBJECT A inner join HSP_OBJECT B
    on A.Object_id=B.Parent_ID
    where
    A.Object_ID
    in (Select Entity_ID from HSP_Entity)
    And yes as John pointed out you can use ODI to get the information.
    Cheers,
    Amol
    Edited by: user638718 on Apr 7, 2009 5:25 PM

  • How to test the update statement in SQLJ - Im lost and cant figure it out!

    Hi Im wondering on the sytax of this logic.
    //Execute an update on a table
    #sql {update mytable set name = :test where today = sysdate };
    //This is where im lost. how to test if the record is not found
    if (record not found for update){
    #sql {insert mytable set name = :test where today = sysdate };
    I dont want to do a select count(*) and based on the value go to update or insert.
    Does anyone know how to do it?
    Thanks so much

    If Software Update is offering the update then it would be compatible with your model.  Unfortunately, you haven't provided us with any information on your hardware that would enable us to determine if it really is too old.
    If you really wish to disable the update alert then the next time Software Update opens, select the update in the list then select "Ignore update" from SU's Update menu.

  • How to automate the adding of page numbers to bookmark and how to export bookmarks?

    I am using Acrobat 9 Pro (not aware of any miningful reason to upgrade).
    Also, if someone knows about a decent application that is capable of combining PDFs into a PDF file of size larger than 2GB that would be highly appreciated.
    Acrobat can combine but can't save files larger than 2GB...
    Thanks,
    David

    Hello Tavares,
    What you seek can be done, but before that you must know from where you want to take the data. In what form you will get the data in and where you want to use it and how.
    Your problem is what we call an architectural issue. If possible please write to me at [email protected]
    With the above information - I shall be able to help you to some extent.
    Ironluca

  • How to automate the data load process using data load file & task Scheduler

    Hi,
    I am doing Automated Process to load the data in Hyperion Planning application with the help of data_Load.bat file & Task Scheduler.
    I have created Data_Load.bat file but rest of the process i am unable complete.
    So could you help me , how to automate the data load process using Data_load.bat file & task Scheduler or what are the rest of the file is require to achieve this.
    Thanks

    To follow up on your question are you using the maxl scripts for the dataload?
    If so I have seen and issue within the batch (ex: load_data.bat) that if you do not have the full maxl script path with a batch when running it through event task scheduler the task will work but the log and/ or error file will not be created. Meaning the batch claims it ran from the task scheduler although it didn't do what you needed it to.
    If you are using maxl use this as the batch
    "essmsh C:\data\DataLoad.mxl" Or you can also use the full path for the maxl either way works. The only reason I would think that the maxl may then not work is if you do not have the batch updated to call on all the maxl PATH changes or if you need to update your environment variables to correct the essmsh command to work in a command prompt.

  • How to automate the exchange rates in BI

    Hi Guys
    can any one let me know the step by step approach of how to automate the exchange rates in BI...I know that if we right click in source system and say transfer exchange rates ..we will get those values ....But I want to automate this process in BI with a Process chain...I have created a start variant and connected it to a ABAP process type and calling the RSIMPCURR programm in sync..local....Do I need to call any Program event ? Iam not able automate this..please advice step by stepp
    After ABAP process type do I need to create any other steps ?
    regards

    Hi,
    All you have to do is to define the ABAP Process as new process variant, call mode syncronous, called from local, program name RSIMPCURR, and define a program variant for example number 12 and create it, there you select the update exchange rates., go to attributes, give a meaning and save all. You can automate the start of the porocess chain and select it as period job.
    Regards
    MK

  • How to sever the update connection between my 2 iPhones?

    I have an iPhone 4 and and 2 iPhone 5's that I use together.  they have an auto update function that when I add a contact or note in one phone, it automatically updates the other 2 phones.  I want to know how to sever the update function between phones.  anyone know how to do?

    I suspect the reason your devices are still syncing contacts is that they are syncing them with another service such as Google, Yahoo or and exchange account rather than iCloud.  Go to Settings>Mail,Contacts,Calendars and tap each of your accounts to see if you have contacts syncing turned on.  If you do, you'll have to turn that off in order to stop syncing them across your devices.
    If only some of your notes are syncing across your devices, it's probably because not all of them belong to the iCloud account (iCloud only syncs contacts that belong to the iCloud account).  If you want them all to sync with iCloud, you'll have to open the Notes app, tap Accounts, then open the notes in your non-iCloud accounts and copy and paste the text into new notes created in the iCloud account.
    To have your photos sync between your phones, go to Settings>iCloud>Photos and make sure My Photo Stream is turned on.  After that, new photos added to the camera roll will be added to your photo stream whenever the Camera app is closed, your photo is connected to wifi, and has at least 20% battery life remaining.  You can access these photos in the My Photo Stream album within the Photos app.
    To determine if you're backing up to iCloud, go to Settings>iCloud>Storage & Backup to see if iCloud Backup is turned on.
    If you delete your iCloud account from your phone and want to keep your date, begin by saving any photo stream photos to your camera roll and emailing any notes that you are syncing with iCloud to yourself.  Then go to Settings>iCloud, tap Delete Account, provide your password and choose Keep on My iPhone when prompted.
    If you create a new account on one of your phones you can sync the data in the new account with your other phones in the future by simply signing into the same account on your other phones in Settings>iCloud.  When you do, the iCloud data in the new account will download to them as well.

  • OB52 Posting Period Close:  Does anyone know how to automate the close?

    Does anyone know how to automate the FI Period Close (trans code OB52)?  Currently, the business users go into the screen and open and close any periods manually.  For the MM period close, we are able to do so because we found the program to use in the batch job.  For some reason, the FI side shows the program SAPL0F00 but this is only a view and will not allow a batch job to be created.  Does anyone know of the actual program used for the FI period close?

    Use program RFPERIOD_OPEN.  It may help.  For further details you may check the following thread.
    RFPERIOD_OPEN

  • How to use the updated value in the same update statement

    Hello,
    I just wonder how to use the updated new value of other column in the same udpate statement. I am using Oracle 11.2, and want to update the two columns with one update statement as following:
    create table tb_test (id number(5), tot number(5), mon_tot number(5));
    update tb_test set (tot = 15, mon_tot = tot *15) where id = 1;
    ...I would like to update both tot and mon_tot column, the value of mon_tot shall be determinted by the new value of tot.
    Thanks,
    Edited by: 939569 on 1-Feb-2013 7:00 AM

    Edit: example added
    SQL> create table tb_test
      2  ( id number(5)
      3  , tot number(5)
      4  , mon_tot number generated always as (tot*15) virtual
      5  );
    Table created.
    SQL> insert into tb_test (id, tot) values (1, 5);
    1 row created.
    SQL> select * from tb_test;
            ID        TOT    MON_TOT
             1          5         75
    1 row selected.
    SQL> update tb_test
      2  set    tot = 15
      3  where  id = 1;
    1 row updated.
    SQL> select * from tb_test;
            ID        TOT    MON_TOT
             1         15        225
    1 row selected.

  • How to display the updated data from db to user interface in sruts framewor

    A beginner in this area, I have been able to read a record from a
    MySQL database and populate in jsp form . Now, my goal is to
    allow the user to edit the contents of the form and then update the
    record in MySQL and then display the same in jsp. page
    The scenario in detail
    1)the data is fetched from db and displayed in non-editable format
    2)Next button is clicked
    3)Now in the same jsp page I view the same data from db in editable format
    4)The user is allowed to change the information
    5)Now update button is clicked
    6)the records are updated in the db -Finished doing till this step
    7)But the updated info in non - editable format to be displayed in jsp page is left pending.
    Here is my code for jsp,i want know how to write an action for this,tried doing the same in java and I'm successful.but what I need is how to fetch the updated information in the user interface.
    I've made both editable as well as non editable info in the same page with different actions.
    pl help me,I'm a newbie
    <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>
    <%@ page language="java" %>
    <%@ page import="java.util.ArrayList,java.util.Iterator" %>
    <%@ page import="com.finocus.common.container.CustomerDetailsTest;" %>
    <html:html>
    <head>
         <title>CUSTOMER DISPLAY</title>
    </head>
    <body>
         <table width="100%" bgcolor="darkkhaki">
         <tr>
              <td><table width="100%" bgcolor="indigo">
                   <tr>
                        <td><font color="white">Display</font></td>
                        <td><font color="white">Update</font></td>
                        <td><font color="white">Verify</font></td>
                        <td><font color="white">Confirm</font></td>
                   </tr>
                   </table>
              </td>
         </tr>
    <%
              //Container for holding data
              ArrayList list = (ArrayList)session.getAttribute("CUSTOMERDETAILS");
              Iterator itr=list.iterator();
              while(itr.hasNext())
              CustomerDetailsTest cust = (CustomerDetailsTest) itr.next();
              System.out.println("testGetCustomerDetails()-successed. retrieved CustomerDetailsTest="+cust.toString());
    %>
    <%
              //Session for checking whether edit or non-edit mode
              String pageMode = (String)session.getAttribute("CUSTOMER_PAGE_MODE");
              session.removeAttribute("CUSTOMER_PAGE_MODE");
              if(null==pageMode)
                   pageMode = "EDIT";
              if(pageMode.equals("EDIT"))
                   //display data in the form
                   System.out.println("Editable mode");
    %>
              <html:form action="/nonedit">
                   <tr>
              <td><table width="100%" bgcolor="darkkhaki">
              <tr>
                        <td><b><bean:message key="label.id"/></b></td>
                        <td><font color="red"><%=cust.getCusId()%></font></td>
         </tr><br>
         <td>
                             <font color="brown" face="Courier New"><b>
                        <bean:message key="label.Company"/></b>
                        </td><br>
                        <tr>
                   <td><bean:message key="label.cname"/></td>
                   <td><font color="blue"><html:text property="name" value="<%=cust.getCname()%>"/></font></td>
                        <td><bean:message key="label.cphone"/></td>
                        <td><font color="blue"><html:text property="phone" value="<%=cust.getCphone()%>"/></font></td>
              </tr><br>
         <tr>
                   <td><bean:message key="label.caddr1"/></td>
                   <td><font color="blue"><html:text property="address1" value="<%=cust.getCaddress1()%>"/></font></td>
                        <td><bean:message key="label.cemail"/></td>
                        <td><font color="blue"><html:text property="email" value="<%=cust.getCemail()%>"/></font></td>
              </tr><br>
         <tr>
                   <td><bean:message key="label.caddr2"/></td>
                   <td><font color="blue"><html:text property="address2" value="<%=cust.getCaddress2()%>"/></font></td>
                        <td><bean:message key="label.cfax"/></td>
                        <td><font color="blue"><html:text property="fax" value="<%=cust.getCfax()%>"/></font></td>
              </tr><br>
         <tr>
                   <td><bean:message key="label.ccity"/></td>
                   <td><font color="blue"><html:text property="city" value="<%=cust.getCcity()%>"/></font></td>
                        <td><bean:message key="label.czip"/></td>
                        <td><font color="blue"><html:text property="zip" value="<%=cust.getZip()%>"/></font></td>
              </tr><br>
         <tr>
                   <td><b><bean:message key="label.cstate"/></b></td>
                   <td><font color="red"><html:text property="state" value="<%=cust.getCstate()%>"/></font></td>
         </tr><br>
         <td>
                             <font color="brown" face="Courier New"><b>
                        <bean:message key="label.Admin"/></b>
                        </td><br>
         <tr>
                   <td><b><bean:message key="label.AAname"/></b></td>
                   <td><font color="red"><html:text property="adminname" value="<%=cust.getAname()%>"/></font></td>
         </tr><br>
         <tr>
                   <td><b><bean:message key="label.AAemail"/></b></td>
                   <td><font color="red"><html:text property="adminemail" value="<%=cust.getAemail()%>"/></font></td>
         </tr><br>
         <tr>
                   <td><b><bean:message key="label.AAphone"/></b></td>
                   <td><font color="red"><html:text property="adminphone" value="<%=cust.getAphone()%>"/></font></td>
         </tr><br>
         <td>
                             <font color="brown" face="Courier New"><b>
                        <bean:message key="label.User"/></b>
                        </td><br>
         <tr>
                   <td><b><bean:message key="label.AUname"/></b></td>
                   <td><font color="red"><html:text property="adminusername" value="<%=cust.getUname()%>"/></font></td>
         </tr><br>
         <tr>
                   <td><b><bean:message key="label.AUemail"/></b></td>
                   <td><font color="red"><html:text property="adminuseremail" value="<%=cust.getUemail()%>"/></font></td>
         </tr><br>
              <tr align="center">
                        <td><html:cancel value="Cancel"/>
                        <html:submit value="Next"/></td>
              </tr>
              </html:form>
    <%               
              }else
                   //display data in the text
                   System.out.println("Non-Editable mode");
    %>
              <html:form action="/edit">
              <tr>
              <td><table width="100%" bgcolor="darkkhaki">
                   <tr>
                        <td><b><bean:message key="label.id"/></b></td>
                        <td><font color="red"><%=cust.getCusId()%></font></td>
                        <td><b><bean:message key="label.status"/></b></td>
                        <td><font color="red"><%=cust.getStatus() %></font></td>
         </tr><br>
         <td>
                             <font color="brown" face="Courier New"><b>
                        <bean:message key="label.Company"/></b>
                        </td><br>
                        <tr>
                   <td><bean:message key="label.cname"/></td>
                   <td><font color="blue"><%=cust.getCname()%></font></td>
                        <td><bean:message key="label.cphone"/></td>
                        <td><font color="blue"><%=cust.getCphone()%></font></td>
              </tr><br>
         <tr>
                   <td><bean:message key="label.caddr1"/></td>
                   <td><font color="blue"><%=cust.getCaddress1()%></font></td>
                        <td><bean:message key="label.cemail"/></td>
                        <td><font color="blue"><%=cust.getCemail()%></font></td>
              </tr><br>
         <tr>
                   <td><bean:message key="label.caddr2"/></td>
                   <td><font color="blue"><%=cust.getCaddress2()%></font></td>
                        <td><bean:message key="label.cfax"/></td>
                        <td><font color="blue"><%=cust.getCfax()%></font></td>
              </tr><br>
         <tr>
                   <td><bean:message key="label.ccity"/></td>
                   <td><font color="blue"><%=cust.getCcity()%></font></td>
                        <td><bean:message key="label.czip"/></td>
                        <td><font color="blue"><%=cust.getZip()%></font></td>
              </tr><br>
         <tr>
                   <td><b><bean:message key="label.cstate"/></b></td>
                   <td><font color="red"><%=cust.getCstate()%></font></td>
         </tr><br>
         <td>
                             <font color="brown" face="Courier New"><b>
                        <bean:message key="label.Admin"/></b>
                        </td><br>
         <tr>
                   <td><b><bean:message key="label.AAname"/></b></td>
                   <td><font color="red"><%=cust.getAname()%></font></td>
         </tr><br>
         <tr>
                   <td><b><bean:message key="label.AAemail"/></b></td>
                   <td><font color="red"><%=cust.getAemail()%></font></td>
         </tr><br>
         <tr>
                   <td><b><bean:message key="label.AAphone"/></b></td>
                   <td><font color="red"><%=cust.getAphone()%></font></td>
         </tr><br>
         <td>
                             <font color="brown" face="Courier New"><b>
                        <bean:message key="label.User"/></b>
                        </td><br>
         <tr>
                   <td><b><bean:message key="label.AUname"/></b></td>
                   <td><font color="red"><%=cust.getUname()%></font></td>
         </tr><br>
         <tr>
                   <td><b><bean:message key="label.AUemail"/></b></td>
                   <td><font color="red"><%=cust.getUemail()%></font></td>
         </tr><br>
         <tr align="center">
                        <td><html:submit value="Update"/></td>
              </tr>
              </html:form>
    <%
    %>
    <%
    %>
                   </table>
              </td>
              </tr>
         </table>
    </body>
    </html:html>

    u r using action classes. so after calling the insert method in Action Class to a dao... the next statement should be retrieve statement. so at the time of updating first it will get updated.. the next statement it will execute is retrieve and then set these details in VO or FORM and show it on JSP
    Message was edited by:
    leo_michael

  • Missing update for a game app after updating ios7 any ideas how to get the update

    Went to update a game app this morning, had already hit update when the i os7 update screen popped went through with the ios update but after ipad restarted the game update is completely missing any ideas how to get the update back no luck so far

    Hello THEVIN7
    The next step if it is not updating, would be to delete the app and then download it again. Check out the general troubleshooting for apps purchased form the App Store.
    iOS: Troubleshooting apps purchased from the App Store
    http://support.apple.com/kb/ts1702
    Regards,
    -Norm G.

  • I have an older mac and it wants me to update to itunes 10 but my mac is too old and I cant figure out how to disable the update

    I have an older mac and it wants me to update to itunes 10 but my mac is too old and I cant figure out how to disable the update so I can use the store.

    If Software Update is offering the update then it would be compatible with your model.  Unfortunately, you haven't provided us with any information on your hardware that would enable us to determine if it really is too old.
    If you really wish to disable the update alert then the next time Software Update opens, select the update in the list then select "Ignore update" from SU's Update menu.

  • How to automate the flatten transparency in illustrator?

    How to automate the "Flatten Transparency option" in illustrator via javascript. Please share with me.
    Thanks

    I'm looking for the same thing.
    app.executeMenuCommand('Flatten Transparency'); works in CC but all it does is it brings up the window and you still have to click OK to make the script continue.
    Before anyone asks why do  you want to do it etc. In print thereare instances where you have to open and edit (not text) large numbers of pdfs to change colours, outline fonts etc otherwise there's trouble on print devices.
    My script for instance looks for 100K blacks and replaces them with rich black, looks for empty text frames, overprint, bleed settings, clipping paths etc.
    The only way to edit successfully a pdf without fonts is to place it and flatten transparency outlining fonts and then work on it.
    So back to the point. After the window pops up, is there a way to simulate a keystroke like "Enter" or maybe app.executeMenuCommand('Flatten Transparency'); takes arguments like:
    app.executeMenuCommand('Flatten Transparency',preset_name);...?
    Anyone? Adobe SDK team? :-)

  • How to automate the Acrobat Reader plugin in Internet Explorer

    Hi,
    I have been trying to figure out how to automate the Acrobat Reader plugin in Internet Explorer. My goal is to find a way to allow users of our web application to print PDFs to the default printer without having to go through the plugin's GUI. Our application includes a browser helper component, and I had hoped it would be possible to use the IWebBrowser2 interface's get_Document() method to get at some sort of interface to the plugin (as is possible for, say, a Word document hosted in Internet Explorer) and then use this to print the document. However, this does not work: get_Document(), when called on an IWebBrowser2 instance with a PDF loaded, returns E_NOINTERFACE. I also tried calling the IWebBrowser2 interface's ExecWB() method with OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, and PRINT_DONTBOTHERUSER, and printed a blank page rather than the PDF.
    Is it possible to do what I am attempting? Like I said, my core goal is to print a PDF from within Internet Explorer without requiring user interaction. I'd appreciate any suggestions as to how I might accomplish this -- it doesn't _have_ to be by automating the plugin (maybe that is a the wrong approach... though it sure would be nice if the plugin provided access to its object model via IWebBrowser2->get_Document()).
    Thanks in Advance,
    Steve Mckinney
    Senior Developer
    Paxon Corporation

    IF that were entirely true, then the whole purpose of this thread is moot (automating printing server side). It is possible to load the file via URLs using the following html code:
    "<"body>
    "<"OBJECT id="pdf"
    type="application/pdf"
    width=800
    height=600 >
    "<"param name="src" value="http://localhost/pdfs/vorder_nc.pdf"/>
    "<"/OBJECT>
    "<"script language="JavaScript">
    function waitLoad()
    setTimeout("printFile()",2000);
    function printFile()
    var objPdf = document.getElementById('pdf');
    objPdf.PrintAllFit(1);
    "<"/script>
    "<"/body>
    So, if I used php or some other scripting language on the server to fill in the name of the pdf, I can load it via a URL, wait a couple of seconds for it to load, and then print it without user interaction. I wish that the LoadFile method would load a URL so that when it returns, I know it is loaded and I don't have to put faith in a timer that may not be enough for a large file.
    This is the situation I'm in. This way works but I don't like the timer. I'd rather have the plugin let me know when it's loaded. Is there another method that can help me do what I want?
    Thank again.

  • How to automate the data flow to content servers?

    We have ECC connected to CS. Could you help tell how to automate the data flow into the CS? Thanks a lot!

    What do you use the Content Server for? If its for archiving you need to run the STORE job to send the data to the CS.
    I can't see a reason to automate that process
    Regards
    Juan

Maybe you are looking for