Exploring AW (analytic workspace) in Java

Hello,
I am creating a java program that can retrive data from analytic workspace that is also built with java program, but I don't know how, so I have a couple of questions for those that can help me.
1. Is there anyway that I can insert data into aw dimension with java program?
2. If not how can I map existing tables within Database with analytic workspace dimension?
3. Is there any posibility to connect to aw dimension with MdmDimension class and retrive data with that class ?
4. Can anyone provide any example programs on this?
5. Can anyone provide me a simple example how to explore data within the analytic workspace in Java. I want to retrive data from aw cube or dimension if it is posible.
I appreciate any help,
Thanks

Have you considered using the BI Beans? Just a thought...
Regarding your questions, 1 and 2 are probably best addressed with the OLAP Analytic Workspace API (a.k.a. AW/XML). You might want to take a look at the Javadoc. You can find the latest Oracle OLAP documentation at the following OTN site:
http://www.oracle.com/technology/products/bi/olap/olap.html
As for the other questions, here is some help from an OLAP API developer:
3. Is there any possibility to connect to AW dimension with MdmDimension class and retrieve data with that class?
The simple answer is no. The OLAP API divides functionality into metadata and data. The Mdm and Mtm classes deal with metadata. These classes represent the relationships between AW objects. The Source and Cursor classes deal with data. They are used to define queries and retrieve data. But the getSource() method can be used on just about any Mdm object to get a Source.
4. Can anyone provide any example programs on this?
The "Developer's Guide to the OLAP API" has a lot of examples. But here's a brief example of getting the member IDs of a dimension.
// given objects
DataProvider dp;
MdmPrimaryDimension dimObj;
// we will commonly work with hierarchies rather than dimensions
MdmHierarchy hierObj = dimObj.getDefaultHierarchy();
// get the Source for the hierarchy
Source hier = hierObj.getSource();
// get a Cursor
CursorManagerSpecification cursorManagerSpec =
dp.createCursorManagerSpecification(hier);
SpecifiedCursorManager cursorManager =
dp.createCursorManager(cursorManagerSpec);
Cursor cursor = cursorManager.createCursor();
// retrieve the values
do {
System.out.println(((ValueCursor) cursor).getCurrentValue());
} while (cursor.next());
5. Can anyone provide me a simple example how to explore data within the analytic workspace in Java. I want to retrieve data from AW cube or dimension if it is possible.
The preceding is one example of exploring data from a hierarchy. Getting data from a dimension is nearly identical -- don't call getDefaultHierarchy(), and call getSource() on dimObj. Getting data from a cube is a little more involved. Again, there are excellent
examples in the documentation, but here's a brief one:
// Given objects
DataProvider dp;
TransactionProvider tp;
MdmMeasure salesObj; // dimensioned by customer and time for this example
MdmHierarchy customerHier;
MdmHierarchy timeHier;
// Get Sources
Source sales = salesObj.getSource();
Source customer = customerHier.getSource();
Source time = timeHier.getSource();
// Create the query. We must join the measure to its dimensions.
Source query = sales.join(customer).join(time);
// We have created a new Source, so we need to commit the OLAP API
transaction.
tp.prepareCurrentTransaction();
tp.commitCurrentTransaction();
// Create the Cursor. This Cursor has a more complex shape because the query is more complex.
CursorManagerSpecification cursorManagerSpec =
dp.createCursorManagerSpecification(hier);
SpecifiedCursorManager cursorManager =
dp.createCursorManager(cursorManagerSpec);
CompoundCursor cursor = (CompoundCursor) cursorManager.createCursor();
// retrieve the values
do {
Iterator iter = (cursor.getOutputs().iterator();
boolean first = true;
while (iter.hasNext()) {
if (!first)
System.out.print(", ");
System.out.print(((ValueCursor) iter.next()).getCurrentValue());
first = false;
System.out.print(": ");
System.out.println(cursor.getValueCursor().getCurrentValue());
} while (cursor.next());
Hope this is helpful.

Similar Messages

  • Problem Creating Analytical Workspace - java.lang.NullPointerException

    I can't seem to create a new analytical workspace using AWM on machine that doesn't allow me admin privileges, so I am really stumped.
    Here is the error that I keep on getting:
    =========================================
    oracle.AWXML.AWException: java.lang.NullPointerException
    at oracle.AWXML.AW.readAWDefinitions(AW.java:1339)
    at oracle.olap.awm.dataobject.aw.WorkspaceDO.getModelAW(WorkspaceDO.java:739)
    at oracle.olap.awm.dataobject.aw.WorkspaceDO.getModelAW(WorkspaceDO.java:701)
    at oracle.olap.awm.navigator.node.WorkspaceNode.getModelerViewChildren(WorkspaceNode.java:361)
    at oracle.olap.awm.navigator.node.WorkspaceNode.getChildren(WorkspaceNode.java:342)
    at oracle.olap.awm.navigator.node.BaseNodeModel.refreshData(BaseNodeModel.java:74)
    at oracle.olap.awm.navigator.node.BaseNodeModel.dTreeItemExpanding(BaseNodeModel.java:221)
    at oracle.bali.ewt.dTree.DTreeDeferredParent.__fireExpansionChanging(Unknown Source)
    at oracle.bali.ewt.dTree.DTreeDeferredParent.setExpanded(Unknown Source)
    at oracle.olap.awm.navigator.node.BaseNode.expandHelper(BaseNode.java:1921)
    at oracle.olap.awm.navigator.node.BaseNode.access$000(BaseNode.java:93)
    at oracle.olap.awm.navigator.node.BaseNode$ExpansionThread.run(BaseNode.java:1871)
    Caused by: java.lang.NullPointerException
    at oracle.AWXML.AW.readAWDefinitions(AW.java:1313)
    ... 11 more
    =========================================
    Importing from a template also produces an error that is different from the above, so importing is not an option. Won't post my error on importing as I want to concentrate on this one.
    Just in case, the machine's version details for OLAP are as follows:
    OLAP Analytic Workspace - 10.2.0.2.0 VALID
    OLAP Catalog - 10.2.0.2.0 VALID
    Oracle OLAP API - 10.2.0.2.0 VALID
    Please help.

    Hi,
    iam trying to install oracle 8i in fedora 4 with kernel version 2.6.11 and glibc-2.3.6-3
    when iam trying to run ./runinstaller it is giving the following error.
    And i want to know whether oracle 8i is supported on fedora 4. Plse tell me what all the linux flavours are supported for oracle 8i and also it is compatable for php4 or php5.
    as we are trying to use php with oracle 8i database...!
    ######## error:
    [oracle@localhost linux]$ ./runInstaller
    Initializing Java Virtual Machine from ../stage/Components/oracle.swd.jre/1.1.8/1/DataFiles/Expanded/linux/bin/jre. Please wait...
    Exception java.lang.NullPointerException occurred..
    java.lang.NullPointerException
    at sun.awt.motif.MComponentPeer.setFont(MComponentPeer.java:192)
    at sun.awt.motif.MFramePeer.<init>(MFramePeer.java:68)
    at sun.awt.motif.MToolkit.createFrame(MToolkit.java:137)
    at java.awt.Frame.addNotify(Frame.java:196)
    at java.awt.Window.show(Window.java:138)
    at java.awt.Component.show(Component.java:528)
    at java.awt.Component.setVisible(Component.java:490)
    at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:419)
    Plse help me...!
    Thanks in advance..

  • How to read the java analytical workspace object, when it is being rebuild?

    Hi is there any way to save the OLAP into java object, so that it can be read even though it is being rebuild?
    so when I rebuild the AW(analytical workspace), the other user still can read the old AW object while waiting the new AW object is build
    I even try to create 2 AW, while I create 1 AW I try to read another AW in the same database schema
    but then the reading process for the second AW is hang until the creation of the first AW is finish
    is there any way so that the process can happen simultaneously without waiting the building process is finished?

    A second user should be able to access an AW even while it is being built as long as the two users have different sessions - instances of OracleConnection in jdbc terms. It is not enough to use two Java Threads sharing the same connection.

  • Unable to create dimension in Analytic Workspace manager

    Hi all,
    I am trying to create dimension using Analytic Workspace Manager(AWM) and it throws the following error.
    *"The transaction is not committable: "java.lang.RuntimeException: org.xml.sax.SAXException: Missing XML attribute: Attribute for tag: <Metadata><StandardDimension><Organization><AWPrimaryDimensionOrganization><AttributeOrganization>"*
    Kindly share your comments.
    I am using Oracle 11g r1 client to connect with oracle 11g R2 database.
    Please let me know the steps to create a OLAP cube using AWM
    Regards
    Mukhil

    It sounds like a mismatch between an old version of AWM and a new version of the server. Please try a more recent version of AWM.
    http://www.oracle.com/technetwork/database/options/olap/olap-downloads-098860.html

  • ORA-34492: Analytic workspace object __XML_GET_FULLTOAW_NAME does not exist

    Hi,
    We are experiencing the following error when trying to retrieve data from the OLAP layer in our front-end:
    ORA-34492: Analytic workspace object __XML_GET_FULLTOAW_NAME does not exist.
    to be more specific, the following happens:
    We are using the Oracle OLAP Java api's to query the analytical workspace. We create a Source object that contains the joins we want. This source is prepared and committed via the TransactionProvider class. Via the DataProvider we then create an SQLCursorManager and generate the SQL and execute it via JDBC.
    We were able to execute it without problems on an XP development platform. When switching to another platform that we use, it gives the following error messages:
    (platform with the error is Linux x86-64; more version info further down)
    Caused by: java.sql.SQLException: ORA-34492: Analytic workspace object __XML_GET_FULLTOAW_NAME does not exist.
    ORA-06512: at "SYS.OLAPIMPL_T", line 23
    ORA-06512: at "SYS.OLAPIMPL_T", line 17
    ORA-06512: at line 4
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:626)
    at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:113)
    at oracle.jdbc.driver.T4CStatement.execute_for_describe(T4CStatement.java:352)
    at oracle.jdbc.driver.OracleStatement.execute_maybe_describe(OracleStatement.java:894)
    at oracle.jdbc.driver.T4CStatement.execute_maybe_describe(T4CStatement.java:384)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:984)
    at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1124)
    Platform/version info that produces the error:
    Linux x86-64
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
    PL/SQL Release 10.2.0.3.0 - Production
    CORE     10.2.0.3.0     Production
    TNS for Linux: Version 10.2.0.3.0 - Production
    NLSRTL Version 10.2.0.3.0 - Production
    OLAP A patch for 10.2.0.3 is applied.
    Platform where this works without problems:
    Windows XP
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
    PL/SQL Release 10.2.0.1.0 - Production
    CORE 10.2.0.1.0 Production
    TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production
    Any info on resolving this issue is greatly appreciated!
    Thanks,
    Ed

    Hi Keith,
    Yesterday I actually fully rebuilt/redeployed the AW. (I only patched our 10.2.0.3 installation with the OLAP A patch very recently.) Even the AW's tablespace was recreated, just to make sure everything was gone. Redeployment of the OLAP objects from OWB control center went without any problems.
    Let me answer your questions one by one below.
    1) How did you build the AW?
    We use OWB. The only thing I used AWM for is to actually create the AW. Once created, I use OWB to design and deploy. The front-end developers use AWM sometimes for viewing data in the OLAP objects. (I use OWB or AWM for that.)
    2) Can you connect to the AW via AWM, if so can you use the Data Viewer option to view:
    a) each dimension and check you can drill up and down.
    b) each cube
    I have been playing around a bit with the dim's and cubes in the AWM by right-clicking and selecting view data ... (that's the data viewer option?) and encountered no problems.
    3) You are using the OLAP API directly, what sort of application are you building - Java Client, JSP, Applet and are you using BI Beans?
    We are building a JSP type application, but so far only servlet code is being executed as the failure occurs on issuing the query. We are not using BI BEans.
    Thanks for your feedback!
    grts,
    Ed

  • Creating Database Standard Form Analytic Workspaces

    Just been looking through the new 9.2.0.4.1 documentation and came across the following. Thought it might be useful.
    The 9.2.0.4.1 release of Oracle OLAP introduces a new concept known as �Database Standard Form� Analytic Workspaces. This is a way of constructing analytic workspaces in a standard way such that they can be used by tools such as the Analytic Workspace Manager, the Java OLAP API, and BI Beans.
    When analytic workspaces are created from a relational star-schema using the Analytic Workspace Manager, it automatically creates the analytic workspace in standard form as part of the migration process. However, if you�re migrating an Express database to Oracle OLAP, the migrated database has to be processed to be in standard form before it is usable by any of the new Oracle OLAP GUI tools.
    If you create an analytic workspace using PL/SQL or the OLAP Worksheet, of course you can create dimensions, variables, relations and so on in any form, just as you can create table structures, joins, views and columns in any form in a relational database. However, the database standard form requirement stipulates that;
    Certain objects and properties need to be found in the analytic workspace, that are used by tools such as the Analytic Workspace Manager to perform tasks such as aggregation, data loads, and OLAP API enablement. OLAP DML views (beginning with AW$) need to created in the analytic workspace, to provide metadata and to identify relationships between objects in the analytic workspace. Objects need to be registered in the OLAP Catalog, and these registrations have to be kept in sync so that the OLAP tools are aware of changes to the base objects. Data that is migrated in to an analytic workspace, from a relational star-schema using the Analytic Workspace Manager, is already in database standard form and no further work is needed. However, some work is needed to get migrated Express databases into standard form, and Oracle have provided a utility with the 9.2.0.4.1 release of Oracle OLAP to help accomplish this.
    This utility, known as CREATE_DB_STDFORM, is an OLAP DML program that takes existing Oracle Express Objects metadata in a migrated Express database, and uses this to create the additional metadata required to make the analytic workspace �database standard form�.
    Once CREATE_DB_STDFORM has been used to create this additional metadata, it can also be used to import data into the workspace either from flat files, or from Oracle tables and views. If you don�t have Express Objects metadata in the Express database, CREATE_DB_STDFORM doesn�t work, and you�ll have to use Oracle Warehouse Builder 9.2 to initially create a relational star-schema that equates to the Express database, then use the OLAP Bridge within OWB to export the data into a database standard form analytic workspace.
    CREATE_DB_STDFORM, once run, allows the migrated Express database to be accessed via BI Beans straight afterwards, as it creates all the OLAP Catalog entries required for the OLAP API. If the Express database only contains data at the lowest level (i.e. it hasn�t been rolled up), aggregation wizards in the Analytic Workspace Manager can be used to summarise the data as required.
    CREATE_DB_STDFORM doesn�t do everything, however. First of all, you need to have created Oracle Express Objects metadata within the Express database, which is an additional step and not always appropriate for all systems. In addition, you need to create time dimensions in a particular way, which may require the data model to be adjusted to meet this requirement. Lastly, any Express language programs within the Express database may need to be adjusted to remove or change commands that have changed or become obsolete.
    The new document, �Oracle OLAP Application Developers Guide Release 9.2.0.4.1�, available on metalink under note 251352.1, details how database standard form works, has code examples, and walks through the migration of the XADEMO Express database to an analytic workspace using database standard form.

    In your message, you wrote "Certain objects and properties need to be found ... aware of changes to base objects". A large bit is represented by "...". Question is whether I have any commands or package functions that I can use to set up all the proper objects and relationships to make it have database standard form, short of regressing to a ROLAP star schema and usnig the AWM wizard. I have what appears to be working MOLAP activity, all created at the OLAP worksheet prompt, and loaded with DML program. Do I really have to put that all aside and start with a star schema? No way to put my AW in standard form for OLAP API without this?

  • Can't attach to Analytical Workspace anymore

    Hi,
    I can't attach to the Analytical Workspace anymore with AWM, nor will my mapping from OWB attach to it. OWB control center gives the following error:
    Warning
    ORA-20101: 11:36:16 ***Error Occured in BUILD_DRIVER: In __XML_SEQUENTIAL_LOADER: In __XML_ADJ_OBJ_LIST: Analytic workspace ERBI_AW is not attached.
    What I did a while ago is rename a cube in OWB to the name of an already existing (deployed) cube. This I think started the troubles (d'oh!). I can deploy(drop) and deploy(create) the cube from OWB control center, but AWM won't attach anymore and OWB won't run any map to the AW anymore with the above error.
    What can I do to 'clean up' the Analytical Workspace?
    Thanks,
    Ed

    It seems another deploy(drop) followed by deploy(create) did the trick for the OWB client. AWM still cannot connect, which will become a problem.
    AWM gives the following messages, any ideas?
    oracle.AWXML.AWException: java.lang.NullPointerException
    at oracle.AWXML.AW.readAWDefinitions(AW.java:1339)
    at oracle.olap.awm.dataobject.aw.WorkspaceDO.getModelAW(WorkspaceDO.java:803)
    at oracle.olap.awm.dataobject.aw.WorkspaceDO.getModelAW(WorkspaceDO.java:749)
    at oracle.olap.awm.navigator.node.WorkspaceNode.getModelerViewChildren(WorkspaceNode.java:368)
    at oracle.olap.awm.navigator.node.WorkspaceNode.getChildren(WorkspaceNode.java:341)
    at oracle.olap.awm.navigator.node.BaseNodeModel.refreshData(BaseNodeModel.java:74)
    at oracle.olap.awm.navigator.node.BaseNodeModel.dTreeItemExpanding(BaseNodeModel.java:221)
    at oracle.bali.ewt.dTree.DTreeDeferredParent.__fireExpansionChanging(Unknown Source)
    at oracle.bali.ewt.dTree.DTreeDeferredParent.setExpanded(Unknown Source)
    at oracle.olap.awm.navigator.node.BaseNode.expandHelper(BaseNode.java:2186)
    at oracle.olap.awm.navigator.node.BaseNode.access$400(BaseNode.java:109)
    at oracle.olap.awm.navigator.node.BaseNode$ExpansionThread.run(BaseNode.java:2136)
    Caused by: java.lang.NullPointerException
    at oracle.AWXML.AW.readAWDefinitions(AW.java:1313)
    ... 11 more
    Strange though. I have had more trouble with a cube in the past (owb 10203A) after making changes to the cube definition. Hopefully this kind of issues gets less in 11g (whenever I migrate to that).
    grts,
    Ed

  • Problem with Oracle Analytic Workspace Manager ver 10.1.0.4

    Hi,
    I am running Oracle Analytic Workspace Manager ver 10.1.0.4. When I tried getting connected to Analytical workspace I get the following error. Any help could be appreciated.
    java.sql.SQLException: ORA-00904: "O"."SF_VERSION": invalid identifier
    at oracle.olap.awm.businessobject.aw.WorkspaceBO.getWorkspacesOwnedBySchemaInStandardForm(WorkspaceBO.java:191)
    at oracle.olap.awm.navigator.node.WorkspaceFolderNode.getChildren(WorkspaceFolderNode.java:101)
    at oracle.olap.awm.navigator.node.BaseNodeModel.refreshData(BaseNodeModel.java:74)
    at oracle.olap.awm.navigator.node.BaseNodeModel.dTreeItemExpanding(BaseNodeModel.java:221)
    at oracle.bali.ewt.dTree.DTreeDeferredParent.__fireExpansionChanging(Unknown Source)
    at oracle.bali.ewt.dTree.DTreeDeferredParent.setExpanded(Unknown Source)
    at oracle.olap.awm.navigator.node.BaseNode.expandHelper(BaseNode.java:1813)
    at oracle.olap.awm.navigator.node.BaseNode.access$000(BaseNode.java:93)
    at oracle.olap.awm.navigator.node.BaseNode$ExpansionThread.run(BaseNode.java:1763)
    Thanking u,
    Amudha

    There are posts on the OLAP forum covering this problem. Anthony Waite from the OLAP Product Management team has provided the following information:
    e new, default Model View in AWM 10.1.0.4.0 is based upon the OLAP Analytic Workspace API (a.k.a. AW/XML). Just to recap and further clarify my earlier post, you must pass the following requirements in order to use it:
    1) Be sure to be using the Enterprise Edition of the Oracle Database 10g.
    SQL> select banner from v$version where banner like 'Oracle%';
    You should see Oracle Database 10g Enterprise Edition.
    2) Be sure to have the Data Warehouse database configuration or the OLAP Option enabled.
    SQL> select parameter, value from v$option where parameter='OLAP';
    You should see OLAP TRUE.
    3) Be sure that the RDBMS 10.1.0.4 patch set has been completely installed. Users often miss the required Post-Installation Steps such as running catpatch.sql.
    SQL> select comp_name, version, status from dba_registry;
    You should see VALID and 10.1.0.4.0 for the OLAP components.
    4) The Oracle Database must have the compatibility mode of 10.1 to use the Model View as it relies on the unique features found in Oracle Database 10g.
    SQL> select name, value, description from v$parameter where name ='compatible';
    You should see 10.1, not 9.2 or earlier.
    5) Please refer to the patchnote.htm that is bundled with 10.1.0.4.0 patch set. Only you are aware of what type of database configuration you have. You will want to pay close attention to "7.2.1.3 Set the SHARED_POOL_SIZE and JAVA_POOL_SIZE Initialization Parameters" and "7.2.2 Upgrade the Release 10.1 Database".
    Basically, I believe you have missed these required steps after installing the 10.1.0.4.0 patch set from the OUI: (pasted from the patchnote.htm)
    For the full discussion please refer to this link:
    Re: Error trying to Analytic Workspace using latest version AWM 10.1.0.4
    Hope this helps
    Keith
    Oracle Business Intelligence Product Management
    BI on Oracle: http://www.oracle.com/bi/
    BI on OTN: http://www.oracle.com/technology/products/bi/
    BI Beans http://www.oracle.com/technology/products/bib/index.html
    Discoverer: http://www.oracle.com/technology/products/discoverer/
    BI Software: http://www.oracle.com/technology/software/products/ias/devuse.html
    Documentation: http://www.oracle.com/technology/documentation/appserver1012.html
    BI Samples: http://www.oracle.com/technology/products/bi/samples/
    Blog: http://oraclebi.blogspot.com/

  • Cannot able to delete the Analytical Workspace and its objects.

    Hi,
    My Analytical workspace (11.2.0.2 B) seems to be corrupted. I could not able to attach the workspace through AWM and i cannot even able to delete it. I found there is no other session attached the Work space. I used the below query to find the locks on the work space.
    SELECT
    username || ' ('||SID||','||serial#||','||
    DECODE(server,
    'DEDICATED','D',
    'SHARED', 'S', 'U')||')' usn,
    gvawo.inst_id,
    owner||'.'||daws.aw_name||' ('||
    DECODE(attach_mode,
    'READ WRITE', 'RW',
    'READ ONLY', 'RO',
    'MULTIWRITE', 'MW',
    'EXCLUSIVE', 'XW', attach_mode)||')' aw,
    generation
    FROM
    DBA_AWS daws,
    gv$aw_olap gvawo,
    gv$aw_calc gvawc,
    gv$session gvses
    WHERE
    daws.aw_number = gvawo.aw_number
    AND SID = gvawo.session_id
    AND gvawc.session_id = SID
    AND gvawo.inst_id = gvawc.inst_id
    AND gvses.inst_id = gvawc.inst_id
    ORDER BY
    username,
    SID,
    daws.aw_name
    When i try to delete the work space i am getting the following error. I cannot able to attach the work space also.
    An error has occurred on the server
    Error class: Express Failure
    Server error descriptions:
    DPR: cannot create server cursor, Generic at TxsOqDefinitionManager::generic<CommitRoot>
    INI: XOQ-00703: error executing OLAP DML command "(AW DELETE DWH_REP.SAMPLE : ORA-37163: cannot delete or truncate AW with dependent CUBES or CUBE DIMENSIONS
    *)", Generic at TxsOqAWManager::executeCommand*
    Please help me to resolve this.
    Regards,
    Raghav

    Hi,
    When i try to execute your statement through Toad, i am getting the below error.
    ORA-03113: end-of-file on communication channel
    But the same is working for other AW which has not corrupted.
    When i try to open the corrupted work space through AWM, i get the below error.
    Unable to attach DWH_REP.SAMPLE Analytic Workspace read write
    java.sql.SQLException: No more data to read from socket
    at oracle.olap.awm.connection.AwAttachmentManager.attachInThread(Unknown Source)
    at oracle.olap.awm.navigator.node.WorkspaceNode.setExpanded(Unknown Source)
    at oracle.bali.ewt.dTree.DTreeButtonDecoration.processMouseEvent(Unknown Source)
    at oracle.bali.ewt.dTree.DTreeStackingDecoration.processMouseEvent(Unknown Source)
    at oracle.bali.ewt.dTree.DTree.processMouseEvent(Unknown Source)
    at oracle.olap.awm.navigator.Navigator.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at oracle.bali.ewt.LWComponent.processEventImpl(Unknown Source)
    at oracle.bali.ewt.dTree.DTree.processEventImpl(Unknown Source)
    at oracle.bali.ewt.LWComponent.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

  • Unable to start Analytic Workspace Manager

    Hi,
    I have installed the 10g client on my PC (Window XP professional). Nevertheless, when I tried to start
    the Analytic Workspace Manager, it just crashed
    with the error
    "no JAWTAccessBridge in java.library.path"
    Below is the full error log.
    C:\oracle\product\10.1.0\Client_3\BIN\awm.bat
    java.lang.UnsatisfiedLinkError: no JAWTAccessBridge in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at com.sun.java.accessibility.AccessBridge$2.run(AccessBridge.java:737)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.java.accessibility.AccessBridge.&lt;init&gt;(AccessBridge.java:733)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at java.awt.Toolkit.loadAssistiveTechnologies(Unknown Source)
    at java.awt.Toolkit.getDefaultToolkit(Unknown Source)
    at java.awt.Toolkit.getEventQueue(Unknown Source)
    at java.awt.EventQueue.isDispatchThread(Unknown Source) at javax.swing.SwingUtilities.isEventDispatchThread(Unknown Source)
    at oracle.olap.awm.util.MiscUtils.invokeInEventThreadAndWait(MiscUtils.j
    ava:304)
    at oracle.olap.awm.app.AppInitialisationThread.run(AppInitialisationThre
    ad.java:56)
    Will be most appreciated if someone can shed some
    light on this problem.
    Many thanks in advance.
    alfchan

    Can you check if these 3 files exist in %SystemRoot%\system32:
    - JavaAccessBridge.dll
    - WindowsAccessBridge.dll
    - JAWTAccessBridge.dll
    These are libraries for JAWS (for screen readers). Not sure where you can download these libraries from but this might be the issue.
    Hope this helps
    Oracle Business Intelligence Product Management Team
    Oracle Corporation

  • Install Analytic Workspace Manager

    Hi
    I have installed Oracle 10g(10.1.0.2) with OLAP option enabled.
    I would like to create some cubes using Analytic Workspace manager. When I look into Oracle HomeàIntegrated Management Tools, I wouldn’t find Analytic Workspace manager.
    Do I need to install Analytic Workspace manager separately? If it comes along with the oracle suite, what did I want to do to have analytic workspace manager in my machine?
    Please help me.
    Thanks,
    Deepa

    AWM does need to be installed separately. Download it from OTN and install (really just unzip!). http://www.oracle.com/technology/software/htdocs/devlic.html?=http://download.oracle.com/otn/java/olap/AWM102030_Win.zip

  • Analytic Workspace Manager default language

    Hi
    I installed Analytic Workspace Manager 12.1.0.1.0B  in my Windows 7 Enterprise (spanish version), and all messages and front-end is in spanish now.
    But I'm used to English interface.
    How can I change AWM default language?
    Thanks
    Oscar

    Hi Oscar,
    One way to change the default language that AWM uses would be launch AWM from a bat file or console with an option to set the user language.  Below is an example of how a bat file used to start AWM might be modified to set the default language to English.  The setting is -Duser.language=en.
    setlocal
    rem    Modify the path to your installed Java Run-time Environment
    rem    Make sure your environment has at least JRE version 1.6 installed
    set path=c:\Program Files\java\jre6\bin;%path%
    rem    Start AwM.  -mx sets the size of the memory allocated to the heap by the Java Virtual machine
    rem                -XX sets the size of the memory allocated to the permanent object space by the Java Virtual Machine
    rem   -Duser.language=en sets the default language used by java to English.
    start javaw -mx1024m -XX:MaxPermSize=128m -jar -Duser.language=en awm12.1.0.2.0.jar
    endlocal
    Hope this helps,
    Ken Chin

  • Analytic Workspace Manager possible bug: Maintain Cube hangs

    Hi All,
    I am a newbe, I have been following the tutorial "Building OLAP 11g Cubes". http://www.oracle.com/technology/obe/olap_cube/buildicubes.htm
    After the step "Maintain Cube SALES_CUBE", I got the information box "Loading facts for cube SALES_CUBE"...on the screen for the last 4 hours.
    Is this normal? Should I kill the process and start again?
    I am running Oracle 11g Enterprise Edition Release 11.1.0.7.0 on a Virtual Machine with Windows Server 2008 Standard SP1 with 1GB RAM.
    The Analytic Workspace Manager is 11.2.0.1.0 running on a Windows XP SP3.
    Any help is much appreciated

    I'm getting a similar problem, I cannot maintain cubes that worked fine yesterday:
    An error has occurred on the server
    Error class: Express Failure
    Server error descriptions:
    INI: error creating a definition manager, Generic at TxsOqConnection::generic<BuildProcess>
    INI: XOQ-01706: An unexpected condition occurred during the build: "TxsOqLoadCommandProcessor::generatePartitionListSource-unsupported join condition-table"., Generic at xsoqBuild
    at oracle.olapi.data.source.DataProvider.callGeneric(Unknown Source)
    at oracle.olapi.data.source.DataProvider.callGeneric(Unknown Source)
    at oracle.olapi.data.source.DataProvider.executeBuild(Unknown Source)
    at oracle.olap.awm.wizard.awbuild.UBuildWizardHelper$1.construct(Unknown Source)
    at oracle.olap.awm.ui.SwingWorker$2.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    It all started after I tried to add a calculated measure to an existing cube (something I have done before in 11g...a feature I love).
    This is too bad, so far I've been loving 11g Olap as compared to 10g Olap. But now 11g is starting to crop up these bullshit bugs as well. I guess OLAP is still too crappy to rely on for production....good thing I won't recommend a rollout of this product to my clients. It's a great tool for having fun with development, but using Oracle Olap + AWM in a real company is career suicide.
    AWM 11.2.01

  • Creating an Analytic Workspace

    Hi,
    i want to create an analytic Workspace without the AWM, but I want to see the Dimensions Cubes, etc what I create in the AWM. I Work with the AWM 10.2.0.3.0. What packages must I use for it? Someone say I must use the cwm2 and the dbms package an otherone say that I must use the AW/XML package.
    Give it a Example for Creating an AWM??
    Thanks

    If you want to create the AW without manually sitting in front of the AWM, Oracle prefers you to use the AWXML and AWAction packages in Java. If you have the AWM installed on your machine, you have the jar files you need in the AWM install directory. Download JDEV and try to load and compile this example program as a way to start learning the library.
    package oracle.olapi.examples;
    import oracle.AWAction.BuildDatabase;
    import oracle.AWAction.Interaction;
    import oracle.AWXML.AggregationDefinition;
    import oracle.AWXML.AggregationHierarchySpecification;
    import oracle.AWXML.Attribute;
    import oracle.AWXML.AttributeProjection;
    import oracle.AWXML.AttributeSourceExpression;
    import oracle.AWXML.AW;
    import oracle.AWXML.AWConnection;
    import oracle.AWXML.Cube;
    import oracle.AWXML.CubeDimensionSourceExpression;
    import oracle.AWXML.CubeDimRef;
    import oracle.AWXML.CubeMapGroup;
    import oracle.AWXML.Dimension;
    import oracle.AWXML.DimensionKeySourceExpression;
    import oracle.AWXML.DimensionMapGroup;
    import oracle.AWXML.DimensionMemberExpression;
    import oracle.AWXML.HierarchicalParentSourceExpression;
    import oracle.AWXML.Hierarchy;
    import oracle.AWXML.HierarchyLevelAssociation;
    import oracle.AWXML.Level;
    import oracle.AWXML.Measure;
    import oracle.AWXML.MeasureFolder;
    import oracle.AWXML.MeasureSourceExpression;
    import oracle.AWXML.PreComputeClause;
    import oracle.AWXML.SourceColumn;
    import oracle.express.spl.SPLExecutor;
    import oracle.jdbc.OracleConnection;
    import java.io.File;
    import java.io.FileWriter;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Iterator;
    import java.util.Properties;
    import java.util.StringTokenizer;
    import java.util.Vector;
    * Creates an analytic workspace based on the Global schema and populates
    * the analytic workspace with data from the tables of that relational schema.
    * Before creating the analytic workspace, the program deletes an analytic
    * workspace of the same name if it already exists.
    * The program generates a log file and it creates a file that records the
    * creation of the Oracle OLAP Analytic Workspace Java API objects as an XML string.
    * This program requires the Global schema, which is available on the Oracle
    * Technology Network at
    * http://www.oracle.com/technology/products/bi/olap/olap.html
    * To download the sample schema, in the Documentation section see Sample
    * Schemas for Documentation.
    * To run this program, use the following command-line arguments, where
    * server_name is the server on which the Oracle Database is running,
    * port is the number of the port on which Oracle OLAP is listening,
    * and sid is the system identifier (SID) of the database instance:
    * -conn server_name:port:sid -user global_aw -password global_aw
    * Instead of the -conn argument, you could substitute a -url argument
    * of the following form:
    * -url jdbc:oracle:thin:@server_name:port:sid
    * An example of the command-line arguments is the following:
    * -conn myOracleServer:1521:orcl -user global_aw -password global_aw
    public class BuildAWExample extends BaseExample
    public static AWConnection awConnection;
    private Interaction curInteraction;
    // The elements in the _keys Vector are the relational key columns to which
    // a Level is mapped.
    Vector _keys = new Vector(0);
    // The elements in the _cols Vector are the relational columns to which
    // the attributes for a Level are mapped.
    Vector _cols = new Vector(0);
    // The elements in the _levels Vector are the Level objects for specifying
    // the levels of a hierarchy.
    Vector _levels = new Vector(0);
    // The elements in the _levColumns Vector are the relation columns to which
    // the levels of the hierarchy are mapped.
    Vector _levColumns = new Vector(0);
    Vector _dimList = new Vector(0);
    Vector _measures = new Vector(0);
    Vector _measCols = new Vector(0);
    // File name for writing the XML string.
    String xmlStr = "buildAWEx.xml";
    // File for AW build log.
    String xmlBldStr = "buildAWEx.log";
    * Constructor.
    public void BuildAWExample()
    * Creates the top-level objects for the analytic workspace and calls methods
    * that create the lower-level objects.
    * Writes the analytic workspace objects to an XML string.
    * Builds the analytic workspace framework and populates the analytic
    * workspace with data.
    * Connects to the Oracle Database instance, retrieves information
    * about the construction of the analytic workspace, and writes the
    * information to a log file.
    * Finally, closes the connection to the database.
    public void run() throws Exception
    // Get the command line arguments that are stored in the Properties object.
    String connection = getConnectionProperty(props);
    String user = props.getProperty("user");
    String password = props.getProperty("password");
    // Create the AWConnection.
    try
    System.out.println("Connecting to " + connection + ".");
    awConnection = new AWConnection(user, password, connection);
    catch(Exception e)
    System.out.println("Error connecting to " + connection + ".\n" + e);
    // Specify a name for the analytic workspace.
    String awName = "GLOBALAW";
    // Delete the analytic workspace if it already exists.
    deleteExistingAW(awConnection, user, awName);
    // Create an AW object and give it a name.
    AW globalAW = new AW();
    globalAW.setName(awName);
    // Create Dimension objects, and pass each Dimension to a method that
    // creates Attribute, Hierarchy, and Level objects for it.
    // Create the TIME_AW Dimension and set names for the object.
    Dimension timeDim = globalAW.createDimension();
    timeDim.setName("TIME_AW");
    timeDim.setShortName("TIME_AW");
    timeDim.setLongName("TIME_AW dimension");
    timeDim.setIsTime(true);
    // Create the Attribute, Level, and Hierarchy objects for the Dimension.
    this.createTimeDim(timeDim);
    // Get the detail level to use when creating a Cube.
    Vector timelevels = timeDim.getLevels();
    Level monthLevel = (Level)_time_levels.elementAt(0);
    // Create the CUSTOMER_AW Dimension and set names for the object.
    Dimension customerDim = globalAW.createDimension();
    customerDim.setName("CUSTOMER_AW");
    customerDim.setShortName("CUSTOMER_AW");
    customerDim.setLongName("CUSTOMER_AW dimension");
    // Create the Attribute, Level, and Hierarchy objects for the Dimension.
    this.createCustomerDim(customerDim);
    // Get the detail level to use when creating a Cube.
    Vector customerDim_levels = customerDim.getLevels();
    Level shipToLevel = (Level)customerDim_levels.elementAt(0);
    // Create the PRODUCT_AW Dimension and set names for the object.
    Dimension productDim = globalAW.createDimension();
    productDim.setName("PRODUCT_AW");
    productDim.setShortName("PRODUCT_AW");
    productDim.setLongName("PRODUCT_AW Dimension");
    // Create the Attribute, Level, and Hierarchy objects for the Dimension.
    this.createProductDim(productDim);
    // Get the detail level to use when creating a Cube.
    Vector productDim_levels = productDim.getLevels();
    Level itemLevel = (Level)productDim_levels.elementAt(0);
    // Create the CHANNEL_AW Dimension and set names for the object.
    Dimension channelDim = globalAW.createDimension();
    channelDim.setName("CHANNEL_AW");
    channelDim.setShortName("CHANNEL_AW");
    channelDim.setLongName("CHANNEL_AW dimension");
    // Create the Attribute, Level, and Hierarchy objects for the Dimension.
    this.createChannelDimension(channelDim);
    // Get the detail level, which is shared by all dimension hierarchies,
    // to use when creating a Cube.
    Vector channellevels = channelDim.getLevels();
    Level channelLevel = (Level)_channel_levels.elementAt(0);
    // Create the UNITS_CUBE_AW Cube and the measures to associate with it.
    this.clearCubeMapVectors();
    Cube unitsCube = globalAW.createCube();
    unitsCube.setName("UNITS_CUBE_AW");
    // Add the dimensions to the _dimList Vector.
    _dimList.add(timeDim);
    _dimList.add(customerDim);
    _dimList.add(productDim);
    _dimList.add(channelDim);
    // Specify the dimensions for the Cube.
    this.associateCubeDimensions(unitsCube, _dimList);
    // Create an aggregation map for the Cube.
    this.precomputeNA(unitsCube, "AGGMAP_UC");
    // Create a Measure for the quantities of units sold.
    Measure units = unitsCube.createMeasure();
    units.setName("UNITS_AW");
    units.setShortName("UNITS_AW");
    units.setLongName("UNITS_AW measure");
    units.setDataType("NUMBER");
    // Add the Measure to the _measures Vector.
    _measures.add(units);
    // Add the column of the Global schema relational table to the
    // _measCols Vector.
    measCols.add("GLOBAL.UNITSHISTORY_FACT.UNITS");
    // Create a Measure for the monetary amount of units sold.
    Measure sales = unitsCube.createMeasure();
    sales.setName("SALES_AW");
    sales.setShortName("SALES_AW");
    sales.setLongName("SALES_AW measure");
    sales.setDataType("NUMBER");
    _measures.add(sales);
    _measCols.add("GLOBAL.UNITS_HISTORY_FACT.SALES");
    // Add the detail levels for the dimensions to the _levels Vector and
    // the relational columns for the levels to the _cols Vector.
    _levels.add(monthLevel);
    _cols.add("GLOBAL.UNITS_HISTORY_FACT.MONTH_ID");
    _levels.add(shipToLevel);
    _cols.add("GLOBAL.UNITS_HISTORY_FACT.SHIP_TO_ID");
    _levels.add(itemLevel);
    _cols.add("GLOBAL.UNITS_HISTORY_FACT.ITEM_ID");
    _levels.add(channelLevel);
    _cols.add("GLOBAL.UNITS_HISTORY_FACT.CHANNEL_ID");
    // Map the columns of the relational tables to the dimensions and measures
    // of the analytic workspace Cube.
    this.createCubeMap(unitsCube, _levels, _cols, _measures, _measCols);
    // Create the PRICE_COST_CUBE_AW Cube and the measures to associate with it.
    this.clearCubeMapVectors();
    Cube priceCostCube = globalAW.createCube();
    priceCostCube.setName("PRICE_COST_CUBE_AW");
    _dimList.add(productDim);
    _dimList.add(timeDim);
    this.associateCubeDimensions(priceCostCube, _dimList);
    this.precomputeNA(priceCostCube, "AGGMAP_PCC");
    // Create a Measure for unit prices.
    Measure price = priceCostCube.createMeasure();
    price.setName("UNIT_PRICE_AW");
    price.setShortName("UNIT_PRICE_AW");
    price.setLongName("UNIT_PRICE_AW measure");
    price.setDataType("NUMBER");
    _measures.add(price);
    _measCols.add("GLOBAL.PRICE_AND_COST_HIST_FACT.UNIT_PRICE");
    // Create a Measure for unit costs.
    Measure cost = priceCostCube.createMeasure();
    cost.setName("UNIT_COST_AW");
    price.setShortName("UNIT_COST_AW");
    cost.setLongName("UNIT_COST_AW measure");
    cost.setDataType("NUMBER");
    _measures.add(cost);
    _measCols.add("GLOBAL.PRICE_AND_COST_HIST_FACT.UNIT_COST");
    _levels.add(itemLevel);
    _cols.add("GLOBAL.PRICE_AND_COST_HIST_FACT.ITEM_ID");
    _levels.add(monthLevel);
    _cols.add("GLOBAL.PRICE_AND_COST_HIST_FACT.MONTH_ID");
    this.createCubeMap(priceCostCube, _levels, _cols, _measures, _measCols);
    // Create a MeasureFolder and add the measures to it.
    // A MeasureFolder appears as an MdmSchema object to an
    // Oracle OLAP Java API application.
    MeasureFolder measureFolder = globalAW.createMeasureFolder();
    measureFolder.setName("GLOBALAW_SCHEMA");
    measureFolder.setShortName("GLOBALAW_SCHEMA");
    measureFolder.setLongName("GLOBALAW_SCHEMA schema");
    measureFolder.addMeasure(units);
    measureFolder.addMeasure(sales);
    measureFolder.addMeasure(cost);
    measureFolder.addMeasure(price);
    // Write the XML string for the analytic workspace.
    String XML = globalAW.WriteToXML();
    try
    File xmlFile = new File(xmlStr);
    FileWriter xmlout = new FileWriter(xmlFile);
    xmlout.write(XML);
    xmlout.write("\n");
    xmlout.close();
    catch (Exception e)
    System.out.println("Failure to write XML string to file: " +
    e.toString());
    // Build the analytic workspace framework.
    System.out.println("Building the " + awName + " framework.");
    globalAW.Create(awConnection);
    globalAW.Commit(awConnection);
    System.out.println(awName + " framework built!");
    // Populate the analytic workspace with the metadata objects and
    // the data from the relational schema.
    System.out.println("Populating " + awName + "." );
    try
    xml_build_global_aw(awName);
    catch(Exception e)
    System.out.println("The following error occurred while building "
    + awName + ":\n\t" + e.toString());
    // Connect to the Oracle Database instance and retrieve information
    // about building the analytic workspace.
    try
    // Create a DriverManager.
    DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
    // Create a connection to the Oracle Database instance.
    OracleConnection o_connection =
    (OracleConnection)DriverManager.getConnection("jdbc:oracle:thin:@" +
    connection, user, password);
    // Get information from the olapsys.xml_load_log table.
    String result = null;
    String sqlText = "select distinct xml_loadid " +
    "from olapsys.xml_load_log " +
    "order by xml_loadid desc";
    Statement sqlStmt = o_connection.createStatement();
    ResultSet rs = sqlStmt.executeQuery(sqlText);
    if(rs.next())
    // Get the first value.
    int loadid = rs.getInt(1);
    rs.close();
    // Now get the rest of the log without the timestamp for easy diffing.
    sqlText = "select SUBSTR(xml_message, 9) xml_message " +
    "from olapsys.xml_load_log " +
    "where xml_loadid = " + loadid + " " +
    "order by xml_loadid, xml_recordid";
    rs = sqlStmt.executeQuery(sqlText);
    String tempResult;
    while(rs.next())
    tempResult = rs.getString(1);
    if(result == null)
    result = tempResult.trim();
    else
    result = result + "\n" + tempResult.trim();
    // Write the information to a file.
    try
    File xmlBuildLog = new File(xmlBldStr);
    FileWriter xmlBldout = new FileWriter(xmlBuildLog);
    xmlBldout.write(result);
    xmlBldout.write("\n");
    xmlBldout.close();
    catch (Exception e)
    System.out.println("Failure to write XML build log: " + e.toString());
    catch(Exception e)
    System.out.println("Verifier failure with " + e.toString());
    // Close the connection to the database.
    awConnection.close();
    * Builds the analytic workspace.
    public void xml_build_global_aw(String awName)
    // Create an Interaction object for building the analytic workspace.
    curInteraction = new Interaction();
    // Set the AWConnection to use when building the analytic workspace.
    curInteraction.setConnection(awConnection);
    // Create an BuildDatabase object.
    BuildDatabase myBuild =
    (BuildDatabase)curInteraction.createAction("BUILDDATABASE");
    // Set the name of the analytic workspace.
    myBuild.setAWName(awName);
    // Specify not running solves when building the database.
    myBuild.setRunSolve(false);
    // Build the analytic workspace.
    myBuild.Execute();
    * Creates Attribute, Level, and Hierarchy objects for the Time Dimension.
    public void createTimeDim(Dimension timeDim)
    // Indicate that the primary key of the dimension table contains the
    // lowest-level dimension members.
    timeDim.setUseNativeKey(true);
    // Create the Long and Short Description Attribute objects for the Dimension.
    Attribute timeLDAttr = createLongDescAttr(timeDim);
    Attribute timeSDAttr = createShortDescAttr(timeDim);
    // Create the End_Date and Time_Span Attribute objects.
    Attribute timeEndDateAttr = timeDim.createAttribute();
    timeEndDateAttr.setName("End_Date");
    timeEndDateAttr.setClassification("END_DATE");
    Attribute timeTimeSpanAttr = timeDim.createAttribute();
    timeTimeSpanAttr.setName("Time_Span");
    timeTimeSpanAttr.setClassification("TIME_SPAN");
    // Create the Level objects for the Dimension.
    // Create the detail level, MONTH_AW.
    Level monthLevel = timeDim.createLevel();
    monthLevel.setName("MONTH_AW");
    monthLevel.setShortName("MONTH_AW");
    monthLevel.setLongName("MONTH_AW level");
    // Create AttributeProjection objects for the attributes for the
    // MONTH_AW Level.
    this.setupAttributeProjection(monthLevel, "Long Description", timeLDAttr);
    this.setupAttributeProjection(monthLevel, "Short Description", timeSDAttr);
    this.setupAttributeProjection(monthLevel, "End Date", timeEndDateAttr);
    this.setupAttributeProjection(monthLevel, "Time Span", timeTimeSpanAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.TIME_DIM.MONTH_ID");
    _cols.add("GLOBAL.TIME_DIM.MONTH_DSC"); // Long description
    _cols.add("GLOBAL.TIME_DIM.MONTH_DSC"); // Short description
    _cols.add("GLOBAL.TIME_DIM.MONTH_END_DATE");
    _cols.add("GLOBAL.TIME_DIM.MONTH_TIMESPAN");
    this.createLevelMap(monthLevel, _keys,_cols);
    // Create the QUARTER_AW Level.
    Level quarterLevel = timeDim.createLevel();
    quarterLevel.setName("QUARTER_AW");
    quarterLevel.setShortName("QUARTER_AW");
    quarterLevel.setLongName("QUARTER_AW level");
    // Create AttributeProjection objects for the attributes for the
    // QUARTER_AW Level.
    this.setupAttributeProjection(quarterLevel, "Long Description",
    timeLDAttr);
    this.setupAttributeProjection(quarterLevel, "Short Description",
    timeSDAttr);
    this.setupAttributeProjection(quarterLevel, "End Date", timeEndDateAttr);
    this.setupAttributeProjection(quarterLevel, "Time Span", timeTimeSpanAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.TIME_DIM.QUARTER_ID");
    _cols.add("GLOBAL.TIME_DIM.QUARTER_DSC"); // Long description
    _cols.add("GLOBAL.TIME_DIM.QUARTER_DSC"); // Short description
    _cols.add("GLOBAL.TIME_DIM.QUARTER_END_DATE");
    _cols.add("GLOBAL.TIME_DIM.QUARTER_TIMESPAN");
    this.createLevelMap(quarterLevel, _keys, _cols);
    // Create the top level, YEAR_AW.
    Level yearLevel = timeDim.createLevel();
    yearLevel.setName("YEAR_AW");
    yearLevel.setShortName("YEAR_AW");
    yearLevel.setLongName("YEAR_AW level");
    // Create AttributeProjection objects for the attributes for the
    // YEAR_AW Level.
    this.setupAttributeProjection(yearLevel, "Long Description", timeLDAttr);
    this.setupAttributeProjection(yearLevel, "Short Description", timeSDAttr);
    this.setupAttributeProjection(yearLevel, "End Date", timeEndDateAttr);
    this.setupAttributeProjection(yearLevel, "Time Span", timeTimeSpanAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.TIME_DIM.YEAR_ID");
    _cols.add("GLOBAL.TIME_DIM.YEAR_DSC"); // Long description
    _cols.add("GLOBAL.TIME_DIM.YEAR_DSC"); // Short description
    _cols.add("GLOBAL.TIME_DIM.YEAR_END_DATE");
    _cols.add("GLOBAL.TIME_DIM.YEAR_TIMESPAN");
    this.createLevelMap(yearLevel, _keys, _cols);
    // Create the CALENDAR_YEAR_AW Hierarchy.
    Hierarchy calendarYearHier = timeDim.createHierarchy();
    calendarYearHier.setName("CALENDAR_YEAR_AW");
    calendarYearHier.setShortName("CALENDAR_YEAR_AW");
    calendarYearHier.setLongName("CALENDAR_YEAR_AW hierarchy");
    // Add the Level objects for the Hierarchy, and the columns for them,
    // to Vector objects in the hierarcharchical order of the levels,
    // with the top level first.
    this.clearHierarchyMapVectors();
    _levels.add(yearLevel);
    _levColumns.add("GLOBAL.TIME_DIM.YEAR_ID");
    _levels.add(quarterLevel);
    _levColumns.add("GLOBAL.TIME_DIM.QUARTER_ID");
    _levels.add(monthLevel);
    _levColumns.add("GLOBAL.TIME_DIM.MONTH_ID");
    // Specify the levels for the hierarchy and map them to relational columns.
    this.createHierarchyMap(calendarYearHier, _levels, _levColumns);
    * Create the Long_Description Attribute for a Dimension.
    public Attribute createLongDescAttr(Dimension dim)
    Attribute ldAttr = dim.createAttribute();
    ldAttr.setName("Long_Description");
    ldAttr.setClassification("MEMBER_LONG_DESCRIPTION");
    return ldAttr;
    * Creates Attribute, Hierarchy, and Level objects for the Customer Dimension.
    public void createCustomerDim(Dimension customerDim)
    // Indicate that the primary key of the dimension table contains the
    // lowest-level dimension members.
    customerDim.setUseNativeKey(true);
    // Create the Long and Short Description Attribute objects for the Dimension.
    Attribute customerLDAttr = createLongDescAttr(customerDim);
    Attribute customerSDAttr = createShortDescAttr(customerDim);
    // Create Level objects for the SHIPMENTS_AW Hierarchy.
    // Create the detail level, SHIP_TO_AW.
    // This level is in both of the hierarchies of the Customer Dimension.
    Level customerShip_ToLevel = customerDim.createLevel();
    customerShip_ToLevel.setName("SHIP_TO_AW");
    customerShip_ToLevel.setShortName("SHIP_TO_AW");
    customerShip_ToLevel.setLongName("SHIP_TO_AW level");
    // Create the Long and Short Description AttributeProjection objects for
    // SHIP_TO_AW Level.
    this.setupAttributeProjection(customerShip_ToLevel, "Long Description",
    customerLDAttr);
    this.setupAttributeProjection(customerShip_ToLevel, "Short Description",
    customerSDAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.CUSTOMER_DIM.SHIP_TO_ID");
    _cols.add("GLOBAL.CUSTOMER_DIM.SHIP_TO_DSC"); // Long description
    _cols.add("GLOBAL.CUSTOMER_DIM.SHIP_TO_DSC"); // Short description
    this.createLevelMap(customerShip_ToLevel, _keys, _cols);
    // Create the WAREHOUSE_AW level.
    Level customerWarehouseLevel = customerDim.createLevel();
    customerWarehouseLevel.setName("WAREHOUSE_AW");
    customerWarehouseLevel.setShortName("WAREHOUSE_AW");
    customerWarehouseLevel.setLongName("WAREHOUSE_AW level");
    // Create the Long and Short Description AttributeProjection objects for
    // WAREHOUSE_AW Level.
    this.setupAttributeProjection(customerWarehouseLevel, "Long Description",
    customerLDAttr);
    this.setupAttributeProjection(customerWarehouseLevel, "Short Description",
    customerSDAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.CUSTOMER_DIM.WAREHOUSE_ID");
    _cols.add("GLOBAL.CUSTOMER_DIM.WAREHOUSE_DSC"); // Long description
    _cols.add("GLOBAL.CUSTOMER_DIM.WAREHOUSE_DSC"); // Short description
    this.createLevelMap(customerWarehouseLevel, _keys, _cols);
    // Create the REGION_AW Level.
    Level custRegionLevel = customerDim.createLevel();
    custRegionLevel.setName("REGION_AW");
    custRegionLevel.setShortName("REGION_AW");
    custRegionLevel.setLongName("REGION_AW level");
    // Create the Long and Short Description AttributeProjection objects for
    // the REGION_AW Level.
    this.setupAttributeProjection(custRegionLevel, "Long Description",
    customerLDAttr);
    this.setupAttributeProjection(custRegionLevel, "Short Description",
    customerSDAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.CUSTOMER_DIM.REGION_ID");
    _cols.add("GLOBAL.CUSTOMER_DIM.REGION_DSC"); // Long description
    _cols.add("GLOBAL.CUSTOMER_DIM.REGION_DSC"); // Short description
    this.createLevelMap(custRegionLevel, _keys, _cols);
    // Create the top level, TOTAL_CUSTOMER_AW.
    Level allCustomersLevel = customerDim.createLevel();
    allCustomersLevel.setName("TOTAL_CUSTOMER_AW");
    allCustomersLevel.setShortName("TOTAL_CUSTOMER_AW");
    allCustomersLevel.setLongName("TOTAL_CUSTOMER_AW level");
    // Create the Long and Short Description AttributeProjection objects for
    // the ALL_CUSTOMERS_AW Level.
    this.setupAttributeProjection(allCustomersLevel, "Long Description",
    customerLDAttr);
    this.setupAttributeProjection(allCustomersLevel, "Short Description",
    customerSDAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.CUSTOMER_DIM.TOTAL_CUSTOMER_ID");
    _cols.add("GLOBAL.CUSTOMER_DIM.TOTAL_CUSTOMER_DSC"); // Long description
    _cols.add("GLOBAL.CUSTOMER_DIM.TOTAL_CUSTOMER_DSC"); // Short description
    this.createLevelMap(allCustomersLevel, _keys, _cols);
    // Create the SHIPMENTS_AW Hierarchy.
    Hierarchy shipmentsHier = customerDim.createHierarchy();
    shipmentsHier.setName("SHIPMENTS_AW");
    shipmentsHier.setShortName("SHIPMENTS_AW");
    shipmentsHier.setLongName("SHIPMENTS_AW hierarchy");
    // Add the Level objects for the Hierarchy, and the columns for them,
    // to Vector objects in the hierarcharchical order of the levels,
    // with the top level first.
    this.clearHierarchyMapVectors();
    _levels.add(allCustomersLevel);
    _levColumns.add("GLOBAL.CUSTOMER_DIM.TOTAL_CUSTOMER_ID");
    _levels.add(custRegionLevel);
    _levColumns.add("GLOBAL.CUSTOMER_DIM.REGION_ID");
    _levels.add(customerWarehouseLevel);
    _levColumns.add("GLOBAL.CUSTOMER_DIM.WAREHOUSE_ID");
    _levels.add(customerShip_ToLevel);
    _levColumns.add("GLOBAL.CUSTOMER_DIM.SHIP_TO_ID");
    // Specify the levels for the hierarchy and map them to relational columns.
    this.createHierarchyMap(shipmentsHier, _levels, _levColumns);
    // Create Level objects for the MARKET_SEGMENT_AW Hierarchy.
    // Create the ACCOUNT_AW Level.
    Level customerAccountLevel = customerDim.createLevel();
    customerAccountLevel.setName("ACCOUNT_AW");
    customerAccountLevel.setShortName("ACCOUNT_AW");
    customerAccountLevel.setLongName("ACCOUNT_AW level");
    // Create the Long and Short Description AttributeProjection objects for
    // the ACCOUNT_AW Level.
    this.setupAttributeProjection(customerAccountLevel, "Long Description",
    customerLDAttr);
    this.setupAttributeProjection(customerAccountLevel, "Short Description",
    customerSDAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.CUSTOMER_DIM.ACCOUNT_ID");
    _cols.add("GLOBAL.CUSTOMER_DIM.ACCOUNT_DSC"); // Long description
    _cols.add("GLOBAL.CUSTOMER_DIM.ACCOUNT_DSC"); // Short description
    this.createLevelMap(customerAccountLevel, _keys, _cols);
    // Create the MARKET_SEGMENT_AW Level.
    Level customerMktSegmentLevel = customerDim.createLevel();
    customerMktSegmentLevel.setName("MARKET_SEGMENT_AW");
    customerMktSegmentLevel.setShortName("MARKET_SEGMENT_AW");
    customerMktSegmentLevel.setLongName("MARKET_SEGMENT_AW level");
    // Create the Long and Short Description AttributeProjection objects for
    // the MARKET_SEGMENT_AW Level.
    this.setupAttributeProjection(customerMktSegmentLevel, "Long Description",
    customerLDAttr);
    this.setupAttributeProjection(customerMktSegmentLevel, "Short Description",
    customerSDAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.CUSTOMER_DIM.MARKET_SEGMENT_ID");
    _cols.add("GLOBAL.CUSTOMER_DIM.MARKET_SEGMENT_DSC"); // Long description
    _cols.add("GLOBAL.CUSTOMER_DIM.MARKET_SEGMENT_DSC"); // Short description
    this.createLevelMap(customerMktSegmentLevel, _keys, _cols);
    // Create the top level, TOTAL_MARKET_AW.
    Level customerTotalMktLevel = customerDim.createLevel();
    customerTotalMktLevel.setName("TOTAL_MARKET_AW");
    customerTotalMktLevel.setShortName("TOTAL_MARKET_AW");
    customerTotalMktLevel.setLongName("TOTAL_MARKET_AW level");
    // Create AttributeProjection objects for the long and short description
    // attributes for the TOTAL_MARKET_AW Level.
    this.setupAttributeProjection(customerTotalMktLevel, "Long Description",
    customerLDAttr);
    this.setupAttributeProjection(customerTotalMktLevel, "Short Description",
    customerSDAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.CUSTOMER_DIM.TOTAL_MARKET_ID");
    _cols.add("GLOBAL.CUSTOMER_DIM.TOTAL_MARKET_DSC"); // Long description
    _cols.add("GLOBAL.CUSTOMER_DIM.TOTAL_MARKET_DSC"); // Short description
    this.createLevelMap(customerTotalMktLevel, _keys, _cols);
    // Create the MARKET_SEGMENT_AW Hierarchy.
    Hierarchy marketSegmentHier = customerDim.createHierarchy();
    marketSegmentHier.setName("MARKET_SEGMENT_AW");
    marketSegmentHier.setShortName("MARKET_SEGMENT_AW");
    marketSegmentHier.setLongName("MARKET_SEGMENT_AW hierarchy");
    // Add the Level objects for the Hierarchy, and the columns for them,
    // to Vector objects in the hierarcharchical order of the levels,
    // with the top level first.
    this.clearHierarchyMapVectors();
    _levels.add(customerTotalMktLevel);
    _levColumns.add("GLOBAL.CUSTOMER_DIM.TOTAL_MARKET_ID");
    _levels.add(customerMktSegmentLevel);
    _levColumns.add("GLOBAL.CUSTOMER_DIM.MARKET_SEGMENT_ID");
    _levels.add(customerAccountLevel);
    _levColumns.add("GLOBAL.CUSTOMER_DIM.ACCOUNT_ID");
    _levels.add(customerShip_ToLevel);
    _levColumns.add("GLOBAL.CUSTOMER_DIM.SHIP_TO_ID");
    // Specify the levels for the hierarchy and map them to relational columns.
    this.createHierarchyMap(marketSegmentHier, _levels, _levColumns);
    * Creates Attribute, Level, and Hierarchy objects for the Product Dimension.
    public void createProductDim(Dimension productDim)
    // Indicate that the primary key of the dimension table contains the
    // lowest-level dimension members.
    productDim.setUseNativeKey(true);
    // Create the Attribute objects for the Dimension.
    Attribute packageAttr = productDim.createAttribute();
    packageAttr.setName("PACKAGE_AW");
    packageAttr.setClassification("USER");
    Attribute buyerAttr = productDim.createAttribute();
    buyerAttr.setName("BUYER_AW");
    buyerAttr.setClassification("USER");
    Attribute mktMngrAttr = productDim.createAttribute();
    mktMngrAttr.setName("MARKETING_MANAGER_AW");
    mktMngrAttr.setClassification("USER");
    Attribute productLDAttr = createLongDescAttr(productDim);
    Attribute productSDAttr = createShortDescAttr(productDim);
    // Create the detail level, ITEM_AW.
    Level itemLevel = productDim.createLevel();
    itemLevel.setName("ITEM_AW");
    itemLevel.setShortName("ITEM_AW");
    itemLevel.setLongName("ITEM_AW level");
    // Create AttributeProjection objects for the attributes for the
    // ITEM_AW Level.
    this.setupAttributeProjection(itemLevel, "PACKAGE_AW", packageAttr);
    this.setupAttributeProjection(itemLevel, "BUYER_AW", buyerAttr);
    this.setupAttributeProjection(itemLevel, "MARKETING_MANAGER_AW", mktMngrAttr);
    this.setupAttributeProjection(itemLevel, "Long Description", productLDAttr);
    this.setupAttributeProjection(itemLevel, "Short Description", productSDAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.PRODUCT_DIM.ITEM_ID");
    _cols.add("GLOBAL.PRODUCT_DIM.ITEM_PACKAGE_ID");
    _cols.add("GLOBAL.PRODUCT_DIM.ITEM_BUYER");
    _cols.add("GLOBAL.PRODUCT_DIM.ITEM_MARKETING_MANAGER");
    _cols.add("GLOBAL.PRODUCT_DIM.ITEM_DSC"); // Long description
    _cols.add("GLOBAL.PRODUCT_DIM.ITEM_DSC"); // Short description
    this.createLevelMap(itemLevel, _keys,_cols);
    // Create the FAMILY_AW level.
    Level familyLevel = productDim.createLevel();
    familyLevel.setName("FAMILY_AW");
    familyLevel.setShortName("FAMILY_AW");
    familyLevel.setLongName("FAMILY_AW level");
    // Create AttributeProjection objects for the attributes for the
    // FAMILY_AW Level.
    this.setupAttributeProjection(familyLevel, "Long Description",
    productLDAttr);
    this.setupAttributeProjection(familyLevel, "Short Description",
    productSDAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.PRODUCT_DIM.FAMILY_ID");
    _cols.add("GLOBAL.PRODUCT_DIM.FAMILY_DSC"); // Long description
    _cols.add("GLOBAL.PRODUCT_DIM.FAMILY_DSC"); // Short description
    this.createLevelMap(familyLevel, _keys,_cols);
    // Create the CLASS_AW level.
    Level classLevel = productDim.createLevel();
    classLevel.setName("CLASS_AW");
    classLevel.setShortName("CLASS_AW");
    classLevel.setLongName("CLASS_AW level");
    // Create AttributeProjection objects for the attributes for the
    // CLASS_AW Level.
    this.setupAttributeProjection(classLevel, "Long Description",
    productLDAttr);
    this.setupAttributeProjection(classLevel, "Short Description",
    productSDAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.PRODUCT_DIM.CLASS_ID");
    _cols.add("GLOBAL.PRODUCT_DIM.CLASS_DSC"); // Long description
    _cols.add("GLOBAL.PRODUCT_DIM.CLASS_DSC"); // Short description
    this.createLevelMap(classLevel, _keys,_cols);
    // Create the top level, TOTAL_PRODUCT_AW.
    Level totalProductLevel = productDim.createLevel();
    totalProductLevel.setName("TOTAL_PRODUCT_AW");
    totalProductLevel.setShortName("TOTAL_PRODUCT_AW");
    totalProductLevel.setLongName("TOTAL_PRODUCT_AW level");
    // Create AttributeProjection objects for the attributes for the
    // TOTAL_PRODUCT_AW Level.
    this.setupAttributeProjection(totalProductLevel, "Long Description",
    productLDAttr);
    this.setupAttributeProjection(totalProductLevel, "Short Description",
    productSDAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.PRODUCT_DIM.TOTAL_PRODUCT_ID");
    _cols.add("GLOBAL.PRODUCT_DIM.TOTAL_PRODUCT_DSC"); // Long description
    _cols.add("GLOBAL.PRODUCT_DIM.TOTAL_PRODUCT_DSC"); // Short description
    this.createLevelMap(totalProductLevel, _keys,_cols);
    // Create the PRODUCT_PRIMARY_AW Hierarchy.
    Hierarchy prodPrimaryHier = productDim.createHierarchy();
    prodPrimaryHier.setName("PRODUCT_PRIMARY_AW");
    prodPrimaryHier.setShortName("PRODUCT_PRIMARY_AW");
    prodPrimaryHier.setLongName("PRODUCT_PRIMARY_AW level");
    // Add the Level objects for the Hierarchy, and the columns for them,
    // to Vector objects in the hierarcharchical order of the levels,
    // with the top level first.
    this.clearHierarchyMapVectors();
    _levels.add(totalProductLevel);
    _levColumns.add("GLOBAL.PRODUCT_DIM.TOTAL_PRODUCT_ID");
    _levels.add(classLevel);
    _levColumns.add("GLOBAL.PRODUCT_DIM.CLASS_ID");
    _levels.add(familyLevel);
    _levColumns.add("GLOBAL.PRODUCT_DIM.FAMILY_ID");
    _levels.add(itemLevel);
    _levColumns.add("GLOBAL.PRODUCT_DIM.ITEM_ID");
    // Specify the levels for the hierarchy and map them to relational columns.
    this.createHierarchyMap(prodPrimaryHier, _levels, _levColumns);
    * Creates Attribute, Level, and Hierarchy objects for the Channel Dimension.
    public void createChannelDimension(Dimension channelDim)
    // Indicate that the primary key of the dimension table contains the
    // lowest-level dimension members.
    channelDim.setUseNativeKey(true);
    // Create the Long and Short Description Attribute objects for the Dimension.
    Attribute channelLDAttr = createLongDescAttr(channelDim);
    Attribute channelSDAttr = createShortDescAttr(channelDim);
    // Create the Level objects for the Dimension.
    // Create the detail level, CHANNEL_AW.
    Level channelLevel = channelDim.createLevel();
    channelLevel.setName("CHANNEL_AW");
    channelLevel.setShortName("CHANNEL_AW");
    channelLevel.setLongName("CHANNEL_AW level");
    // Create AttributeProjection objects for the long and short description
    // attributes for the CHANNEL_AW Level.
    this.setupAttributeProjection(channelLevel, "Long Description",
    channelLDAttr);
    this.setupAttributeProjection(channelLevel, "Short Description",
    channelSDAttr);
    this.clearLevelMapVectors();
    _keys.add("GLOBAL.CHANNEL_DIM.CHANNEL_ID");
    _cols.add("GLOBAL.CHANNEL_DIM.CHANNEL_DSC"); // Long description
    _cols.add("GLOBAL.CHANNEL_DIM.CHANNEL_DSC"); // Short description
    this.createLevelMap(channelLevel, _keys, _cols);
    // Create the top level, ALL_CHANNELS_AW.
    Level allChannelsLevel = channelDim.createLevel();
    allChannelsLevel.setName("TOTAL_CHANNEL_AW");
    allChannelsLevel.setShortName("TOTAL_CHANNEL_AW");
    allChannelsLevel.setLongName("TOTAL_CHANNEL_AW level");
    // Create the Long and Short Description AttributeProjection objects for
    // the TOTAL_CHANNEL_AW Level.
    this.setupAttributeProjection(allChannelsLevel, "Long Description",
    channelLDAttr);
    this.setupAttributeProjection(allChannelsLevel, "Short Description",
    channelSDAttr);
    this.clearLevelMapVectors();
    // The order of the elements in the _cols Vector depends on the order
    // in which the attributes are created.
    // Columns in the relational tables are specified in the form
    // user.tablename.column
    _keys.add("GLOBAL.CHANNEL_DIM.TOTAL_CHANNEL_ID");
    _cols.add("GLOBAL.CHANNEL_DIM.TOTAL_CHANNEL_DSC"); // Long description
    _cols.add("GLOBAL.CHANNEL_DIM.TOTAL_CHANNEL_DSC"); // Short description.
    this.createLevelMap(allChannelsLevel, _keys, _cols);
    // Create the CHANNEL_PRIMARY_AW Hierarchy.
    Hierarchy chanRollupHier = channelDim.createHierarchy();
    chanRollupHier.setName("CHANNEL_PRIMARY_AW");
    chanRollupHier.setShortName("CHANNEL_PRIMARY_AW");
    chanRollupHier.setLongName("CHANNEL_PRIMARY_AW hierarchy");
    // Add the Level objects for the Hierarchy, and the columns for them,
    // to Vector objects in the hierarcharchical order of the levels,
    // with the top level first.
    this.clearHierarchyMapVectors();
    _levels.add(allChannelsLevel);
    _levColumns.add("GLOBAL.CHANNEL_DIM.TOTAL_CHANNEL_ID");
    _levels.add(channelLevel);
    _levColumns.add("GLOBAL.CHANNEL_DIM.CHANNEL_ID");
    // Specify the levels for the hierarchy and map them to relational columns.
    this.createHierarchyMap(chanRollupHier, _levels, _levColumns);
    * Create the Short_Description Attribute for a Dimension.
    public Attribute createShortDescAttr(Dimension dim)
    Attribute sdAttr = dim.createAttribute();
    sdAttr.setName("Short_Description");
    sdAttr.setClassification("MEMBER_SHORT_DESCRIPTION");
    return sdAttr;
    * Creates an AttributeProjection for a Level and sets the name and the
    * Attribute to project onto the Level.
    public void setupAttributeProjection(Level _lev, String _name, Attribute _attr)
    AttributeProjection _ap = _lev.createAttributeProjection();
    _ap.setName(_name);
    _ap.setAttribute(_attr);
    * Creates the associations between Level objects and a Hierarchy.
    public void createHierarchyMap(Hierarchy _hier, Vector _levels, Vector columns)
    int i = 0;
    for(Iterator _lev = _levels.iterator(); _lev.hasNext();)
    Level _curLev = (Level)_lev.next();
    HierarchyLevelAssociation _hla = _hier.createHierarchyLevelAssociation();
    _hla.setLevel(_curLev);
    DimensionMapGroup _dmg = _hla.createSourceDimensionMapGroup();
    DimensionKeySourceExpression _dkse = _dmg.CreateKeyMap();
    SourceColumn _levColumn = _dkse.CreateSourceColumn();
    _levColumn.setColumn((String)columns.elementAt(i));
    // The first level has no parent.
    // Each subsequent level does have a parent.
    // The first element in the Vector must be the top-most level.
    if (i > 0)
    HierarchicalParentSourceExpression _hpse = _dmg.CreateParentMap();
    SourceColumn _hpsesc = _hpse.CreateSourceColumn();
    _hpsesc.setColumn((String)columns.elementAt(i-1));
    i++;
    * Clears the Vector objects that are used for specifying the Level objects
    * in a Hierarchy and for mapping the levels to the columns of a relational
    * table.
    public void clearHierarchyMapVectors()
    _levels.removeAllElements();
    _levColumns.removeAllElements();
    * Clears the Vector objects that are used for mapping a Level object to the
    * columns of a relational table.
    public void clearLevelMapVectors()
    _keys.removeAllElements();
    _cols.removeAllElements();
    * Creates a DimensionMapGroup that maps a Level to the columns of
    * a relational table.
    public void createLevelMap(Level _lev, Vector _keys, Vector _columns)
    // Map the keys of the relational table to the level.
    DimensionMapGroup _dmg = _lev.createSourceDimensionMapGroup();
    DimensionKeySourceExpression _key = _dmg.CreateKeyMap();
    for (int y=0; y < _keys.size(); y++)
    SourceColumn _keycol = _key.CreateSourceColumn();
    _keycol.setColumn((String)_keys.elementAt(y));
    // Map the columns of the relational tables or views to the
    // AttributeProjection objects.
    int i = 0;
    for(Iterator attrs = _lev.getAttributes().iterator(); attrs.hasNext();)
    AttributeProjection _curAttr = (AttributeProjection)attrs.next();
    AttributeSourceExpression _attrMap = _dmg.CreateAttributeMap();
    _attrMap.setTargetObject(_curAttr);
    SourceColumn _attrCol = _attrMap.CreateSourceColumn();
    _attrCol.setColumn((String)_columns.elementAt(i));
    i++;
    * Clears the Vector objects that are used for specifying the Level objects
    * in a Hierarchy and for mapping the levels to the columns of a relational
    * table.
    public void clearCubeMapVectors()
    _measures.removeAllElements();
    _measCols.removeAllElements();
    _levels.removeAllElements();
    _cols.removeAllElements();
    _dimList.removeAllElements();
    * Specifies the dimensions for a Cube.
    public void associateCubeDimensions(Cube _cube, Vector _dimList)
    for (int i=0; i < _dimList.size(); i++)
    CubeDimRef _cdr = _cube.createCubeDimRef();
    Dimension _dim = (Dimension)_dimList.elementAt(i);
    _cdr.setDimension(_dim);
    * Maps the columns of the relational tables to the dimensions and measures
    * of the analytic workspace Cube.
    public void createCubeMap(Cube _cube, Vector _levels, Vector _columns,
    Vector _measures, Vector _measCols)
    CubeMapGroup _cmg = _cube.createSourceCubeMapGroup();
    // Create the primary key in the fact table.
    for (int y=0; y < _levels.size(); y++)
    CubeDimensionSourceExpression _cdse = _cmg.CreateKeyMap();
    _cdse.addLevel((Level)_levels.elementAt(y));
    // Loop through the associated comma delimited
    // FKey columns in the fact table.
    StringTokenizer _st =
    new StringTokenizer((String)_columns.elementAt(y), "," );
    while (_st.hasMoreTokens())
    SourceColumn _keycol = _cdse.CreateSourceColumn();
    _keycol.setColumn(_st.nextToken());
    for(int x=0; x < _measures.size(); x++)
    Measure curMeasure = (Measure)_measures.elementAt(x);
    curMeasure.setAutoSolve("NO_AUTO_SOLVE");
    String curMeascol = (String)_measCols.elementAt(x);
    MeasureSourceExpression _measMap = _cmg.CreateAttributeMap();
    _measMap.setTargetObject(curMeasure);
    SourceColumn _meascol = _measMap.CreateSourceColumn();
    _meascol.setColumn(curMeascol);
    * Specifies excluding NA values when computing values while building the
    * analytic workspace.
    public void precomputeNA(Cube _cube, String _aggdef_name)
    // Rename the default aggregation definition that was implicitly created.
    AggregationDefinition _aggdef =_cube.getDefaultAggregationDefinition();
    _aggdef.setName(_aggdef_name);
    // Remove the default calculation specification.
    _aggdef.getCalculationSpecification().clear();
    Vector _dimrefs = _cube.getCubeDimRefs();
    for (Iterator _d = _dimrefs.iterator(); _d.hasNext();)
    AggregationHierarchySpecification _aggHierSpec =
    _aggdef.createAggregationHierarchySpecification();
    CubeDimRef _dimref = (CubeDimRef)_d.next();
    Dimension _dim = _dimref.getDimension();
    _aggHierSpec.setDimension(_dim);
    PreComputeClause _precompute_clause =
    _aggHierSpec.createPreComputeClause();
    DimensionMemberExpression _dimMemExp =
    _precompute_clause.createDimensionMemberExpression();
    _dimMemExp.setExpression("ALL");
    _dimMemExp.setExpressionType("EXCLUDE");
    * Deletes the analytic workspace if it already exists.
    private void deleteExistingAW(AWConnection awConnection, String user,
    String awName)
    try
    OracleConnection conn = (OracleConnection)
    awConnection.getSQLConnection();
    SPLExecutor splExec = new SPLExecutor(conn);
    splExec.initialize();
    try
    System.out.println("Deleting " + user + "." + awName + " if it exists.");
    splExec.executeCommand("aw delete " + user + "." + awName);
         // System.out.println("Deleted " + user + "." + awName + ".");
    catch(Exception e)
    // System.out.println("The " + user + "." + awName + " analytic workspace "
    // + "either did not exist or it could not be deleted.");
    catch(SQLException e)
    System.out.println("Could not initialize the SPL executor. " + e);
    private String getConnectionProperty(Properties props)
    String conn = props.getProperty("conn");
    if (conn == null)
    String url = props.getProperty("url");
    if (url.indexOf("@") > 0)
    conn = url.substring((url.lastIndexOf("@") + 1), url.length());
    props.put("conn", conn);
    return conn;
    public static void main(String[] args)
    new BuildAWExample().execute(args);
    }

  • Analytic Workspace Manager now available on OTN

    The Analytic Workspace Manager can now be downloaded from OTN at http://otn.oracle.com/software/htdocs/devlic.html?http://download.oracle.com/otn/java/olap/awm920.zip. It's 217MB and i've got it downloading now...
    It requires the 9.2.0.4.1 patch which can be downloaded from Metalink, using patch number 3084634
    To apply the 9.2.0.4.1 patch, you also need to have installed the 9.2.0.4 database patch beforehand, which can be downloaded from metalink using patch number 3095277.
    regards
    Mark

    I've managed to install the AWM + requisite patches now, and it's converting a relational star schema as I speak. Some points to note (not all steps listed here BTW)
    1. I first applied the 9.2.0.4 patch to an existing 9.2.0.1 database installation, which was installed alongside 9iAS R2, 9iDS, OWB9.2 and 9.0.4, and Express Server 6.3.4. The installer failed at an early stage with a 'resource bundle' error, and therefore I removed all Oracle software from my laptop, reinstalled just the Database 9.0.2.0.1, and started again from there.
    2. Follow the steps in the readme to drop the XMLCONCAT function, shutdown the database, and stop all services (including the database) in the ORACLE_HOME. Make sure you exit out of SQL*Plus before moving on.
    2. Run the 9.2.0.4 patch installer, install the new OUI, then install the 9.2.0.4 patch.
    3. Find the init.ora file (in my case named init.ora.962003152553 and located in C:/9ir2/admin/markr/pfile), and amend the file setting java_pool_size and shared_pool_size > 150M. You may need to set sga_max_size to a figure that is greater than these two amounts to fit this in. The figures I used were;
    sga_max_size=500000000
    java_pool_size=160554432
    large_pool_size=8388608
    shared_pool_size=160331648
    4. Startup the listener (lsnrct start), and the database (using 'startup migrate)
    5. set spool on, then run catpatch.sql
    6. run @ %ORACLE_HOME%/rdbms/admin/utlrp.sql
    7. Unlock the OLAPSYS account, then connect as OLAPSYS, then run @ %ORACLE_HOME%/cwmlite/admin/postamd.sql. When I ran this script, I got an error saying that a column I tried to add ('IS_AGGREGATABLE') already existed, but the rest of the script ran ok.
    8. I then unzipped the 9.2.0.4.1 patchset
    9. Run the One-Off patch that comes with the 9.2.0.4.1 patchset (in the /oneoffs directory) before you install the main 9.2.0.4.1 patch
    10. Once this has installed, start up the OUI that comes with Oracle 9i and select the products.jar file that comes with the patch. Install the patch as normal.
    11. cd $ORACLE_HOME/olap/admin, then connect as sqlplus "/ as sysdba", then run @olapu92041.sql
    12. Now the patches have all installed, unzip the awm920.zip file to a directory, run the installer, and the AWM will appear under the '%ORACLE_HOME%/Integrated Management Tools' start menu entry.
    I'm now in the process of trying to create an analytic workspace. I've submitted the COST_CUBE from the SH schema that comes with 9iR2 for conversion, although from what I understand this will not convert properly, and it has to be replaced by the BIBDEMO schema that comes with the BI Beans 9.0.3 download (http://otn.oracle.com/software/products/bib/download.html). The conversion's at 55% at the moment, so i'll see how it goes, and report back.

Maybe you are looking for

  • Exit required to "drop" two segments from an IDOC

    hi, how can we dropped some of the segments in we02 according to my condition.can somebody tell me how to find out the program means where we can see the idoc data is populating in segments.in we02 i am finding 6 segments with E1EDP10.i want to drop

  • Oracle 9i Certification Expiry

    Dear All, Can anybody tell me the expiry of Oracle 9i DBA Track. As I am planing to certify this course. Aqeel Nawaz

  • Flash won't work on after updating

    When I went to play Boggle Bash or Mahjong Garden on POGO.com. , a pop-up came up and said that my flash player was out of date. After updating 3 times, I still cannot play my flash games on POGO. The same pop-up shows up stating that my flash player

  • Bluetooth doesn't recognize other devices, Assistant slows computer

    I'm trying to set up a bluetooth connection with my LG VX8600 but I cannot get the phone or the computer to recognize one another. I have also attempted connecting with an LG VX8300 but was unable to get a connection there either. The Bluetooth also

  • HT1430 Outgoing calls & sms not working in Iphone 4S

    I am having the following problems with my IPhone 4S:- 1. Outgoing calls - Not in the outgoing record                           - My phone no sound, silent                           - Unable to end the calls, the phone hanging at the "End calls' scre