Multiple key level associations

Hi,
I am getting the below error during the consistency check.
Table, X, has multiple key level associations.
Can anyone please let me know the reason for the same.
Also, when I drag the physical tables from the physical layer to the BMM Layer, there are some default primary keys in the Logical Table.What considerations does OBIEE take into when deciding upon the Primary Key in the Logical table.
Thanks in Advance
Akshatha

"can you check the keys foreign keys for those table "
You didn't mention what I should be checking for.
However, I think I've worked it out now.
I have a dimension table that is referenced by both other dimension tables and the fact tables. Therefore, when imported into BI, both the dimension tables and the fact tables have foreign keys to this common dimension table.
I'm guessing that the foreign keys on the dimension tables are not required - because there are foreign key references from the fact tables to the common table anyway. Bearing in mind that this is a star schema and not a snowflake schema.
=> I deleted all the foreign keys from all my dimension tables, and now the consistency check works ok.

Similar Messages

  • Error 15037: Table has multiple key level associations

    Oracle BI 11g.
    I get this error when doing a consistency check with the BI Admin tool:
    Table DIMCPN has multiple key level associations: [DIMCPN.CPNKEY] and [DIMCPN.CPNKEY]
    I've seen the notes in the following thread:
    Re: nQSerror 15037
    However, these don't help.
    I'm not doing anything complicated.
    All I've done is to create the Physical model by importing some dimension and fact tables, then create the Business layer object by dragging across from the physical layer, then create the Presentation layer object by dragging across from the Business layer.
    I've not done anything else at all. I.e. I've not renamed any columns, created any hierarchies, etc, etc.
    Any ideas what's happening?

    "can you check the keys foreign keys for those table "
    You didn't mention what I should be checking for.
    However, I think I've worked it out now.
    I have a dimension table that is referenced by both other dimension tables and the fact tables. Therefore, when imported into BI, both the dimension tables and the fact tables have foreign keys to this common dimension table.
    I'm guessing that the foreign keys on the dimension tables are not required - because there are foreign key references from the fact tables to the common table anyway. Bearing in mind that this is a star schema and not a snowflake schema.
    => I deleted all the foreign keys from all my dimension tables, and now the consistency check works ok.

  • Associating multiple key fields.

    Is it common practice to associate multiple key fields with a dimension level or fact? For example, if ITEM dimension has two primary key fields (inventory_item_id, sr_instance_id) to identify one single item, PLAN fact table the same, I can't manually associate ITEM dimension or PLAN cube with their tables from Analytic Workspace Manager. But I can do this with OLAP Analytic Workspace Java API. Problem with Java approach is that my AW can't be viewed corrected in AWM.
    Is it "right way" to associate multiple key fields? Or should I avoid this (say concatinate keys into one item_key field)?

    Hi,
    Refer below code of FM 'F4IF_INT_TABLE_VALUE_REQUEST',it will useful to you.
    DATA: IL_RETURN   TYPE TABLE OF DDSHRETVAL,                              
          WAL_RETURN  TYPE DDSHRETVAL,
          IL_FIELDS   TYPE TABLE OF DFIES ,
          WAL_FIELDS  TYPE DFIES,
          VL_RETFIELD LIKE DFIES-FIELDNAME.
    CLEAR IL_FIELDS.
      REFRESH IL_FIELDS.     
      LOOP AT FIELDS.                    
          WAL_FIELDS-FIELDNAME = FIELDS-FIELDNAME .                    
          WAL_FIELDS-TABNAME   = FIELDS-TABNAME.
          WAL_FIELDS-KEYFLAG   = FIELDS-SELECTFLAG.
          APPEND WAL_FIELDS TO IL_FIELDS.
      ENDLOOP.
       VL_RETFIELD = 'TABNAME'.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
        DDIC_STRUCTURE         = ''
          RETFIELD               = VL_RETFIELD
        VALUE_ORG              = ''
        TABLES
          VALUE_TAB              = VALUES
          FIELD_TAB              = IL_FIELDS
          RETURN_TAB             = IL_RETURN
        EXCEPTIONS
          PARAMETER_ERROR        = 1
          NO_VALUES_FOUND        = 2
          OTHERS                 = 3.
      READ TABLE IL_RETURN INTO WAL_RETURN WITH KEY FIELDNAME = VL_RETFIELD.
      IF SY-SUBRC EQ 0.
          VIEWNAME = WAL_RETURN-FIELDVAL.                    
      ENDIF.
    Best regards,
    Syf

  • Multiple Key Figures and SINGEDATA

    Hi Experts,
    There are different Key Figures in BI like Amount, Quantity, Number, Integer, Date, Time, and the associated Unit. Whereas, in BPC there is only one type of object is used for recording quantitative values for transaction in BPC, that is SINGEDDATA. This object is equivalent to a Key Figure in SAP NetWeaver BI. So, while extracting data from BI to BPC, there are multiple Key Figures in BI, then how to take these multiple Key Figures in BPC? Do we need to take multiple SINGEDDATA?
    Appreciate your help.
    Thanks

    Hello Qakbar -
    The typical practice is to map each BW key figure to a combination of SIGNDATA and another dimension, such as ACCOUNT (or any combination of one or more dimensions).  BPC is a true account based data model (only one key figure).
    You can use BW transformations along with Rule Groups to define how each multiple key figure based BW record can be broken into separate single key figure records.  These records can be stored in a BW staging cube for easy import into BPC upon demand. 
    Alternatively, you could use the BPC transformation command, MVAL, to allow loading of multiple Keyfigure BW records directly into BPC.
    Regards,
    Sheldon

  • [38073] dimension has multiple leaf levels which are not identical

    Hi,
    I am trying to implement a time dimension with 2 source tables.
    The time dimension is from minute to year where logical table includes 2 source tables :
    Source table#1 : Year,month,week,day
    Source table#2: hour,minute (minute is a leaf level and chronological key)
    When i try to check-in i got the following error: [38073] dimension has multiple leaf levels with are not identical.
    Thank you.
    Michael

    Hi RM
    i am able to create multiple hirerachy in time dimension and assigned time_id as chronological key which is at the dimension detail level and acting as shared child level for both of them......
    I have created AGO function for calendar year as
    AGO(Test."Fact".amount_sold, Test."Time Dim"."Calendar Year", 1)
    but when i have used AGO column in answers i am getting below mentioned error:-
    State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 22046] To use AGO function, the query level ('Calendar Year, Fiscal Year') must be a static level. (HY000)
    any suggestion would be appreciated to solve this.
    thanks & regards

  • How do you register multiple key presses at the same time?

    Hi. I'm trying to write a first person game in OpenGL and I'm having some trouble with key listening. Right now I just use the basic AWT KeyListener. The problem that arises is that whenever I hold down a key, such as a movement key, there is a short pause after it moves me in the appropriate direction, and only after the pause does it start continuously moving me. In addition to that, I can't press multiple keys at once to get diagonal movement (I use WASD for movement). Is there something I can do with AWT to fix both of these problems, or is there something other than AWT that I should use that would be better?

    the pause is the typomatic rate of the keyboard, you can avoid that by using the keyPressed and setting a flag then a sleep(myDelayTime).... if they keyRelease--and clearing of the flag--hasn't happened after the sleep, then you're key is still down so keep firing, moving, or what ever.

  • Can I have multiple volume levels in one track?

    I have a track composed of audio from a cassette recorder of a now deceased relative's voice.
    Since the cassette was turned on and off during recording, the recordings are at different volumes.
    I have been able to import the cassette into a GarageBand project, and delete dead space, but now I find that the volume is not consistent.
    Any way to remedy that? I am wondering if I need to chop it up and make more than one track, and adjust the volume on each track? Will this work as long as the tracks don't overlap?
    And then do I send the finished product to iTunes in order to be able to use it in an iMovie?
    Or can I drag it right from GarageBand to iMovie?
    Many thanks, I'm a very new GarageBand user.

    JGolomb wrote:
    Can I have multiple volume levels in one track?.
    search GB's help for "curve"
    And then do I send the finished product to iTunes in order to be able to use it in an iMovie?
    "Share" it to disc
    can I drag it right from GarageBand to iMovie?
    no

  • How to get Multiple Key Combinations

    Hi,
    I am trying to get the event for multiple key combinations, ie some thing like "*Ctrl + I + M*" or "*Alt + A + S + D*".
    For two key combinations ( like Ctrl+I or Ctrl+M) i am able to get, but for more than two keys combinations, can someone give an idea how to get it.
    I tried with both KeyCodeCombination and KeyCharacterCombination.
    Below is a quick example to check for the key combination demo.
    import javafx.application.Application;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.control.Label;
    import javafx.scene.input.KeyCharacterCombination;
    import javafx.scene.input.KeyCode;
    import javafx.scene.input.KeyCodeCombination;
    import javafx.scene.input.KeyCombination;
    import javafx.scene.input.KeyEvent;
    import javafx.scene.layout.StackPane;
    import javafx.scene.paint.Color;
    import javafx.stage.Stage;
    public class KeyCombinationDemo extends Application {
         Stage stage;
         Scene scene;
         StackPane root;
         public static void main(String[] args) {
              Application.launch(args);
         @Override
         public void start(Stage stage) throws Exception {
              this.stage = stage;
              root = new StackPane();
              root.getChildren().add(new Label("Enter any Key"));
              this.scene = new Scene(root, Color.LINEN);
              stage.setTitle(this.getClass().getSimpleName());
              stage.setWidth(600);
             stage.setHeight(600);
             stage.setScene(this.scene);
             stage.show();
              final KeyCombination keyComb1=new KeyCodeCombination(KeyCode.I,KeyCombination.CONTROL_DOWN);
              final KeyCharacterCombination keyComb2 = new KeyCharacterCombination("M",KeyCombination.CONTROL_DOWN);
              this.scene.addEventHandler(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() {
                   @Override
                   public void handle(KeyEvent event) {
                        if(keyComb1.match(event)){
                             System.out.println("Ctrl+I pressed");
                        }else if(keyComb2.match(event)){
                             System.out.println("Ctrl+M pressed");
    }Thanks in Advance.
    Regards,
    Sai Pradeep Dandem.

    Hi John,
    Thanks for the prompt response.
    I tried the way you suggested and it worked well !! Thanks :)
    But, still i am expecting a direct way to handle this. :p
    Anyway here is code which i modified accordingly
    final String keyCombination1 = "_ALT_E_O";
    final String keyCombination2 = "_ALT_E_P";
    final String keyCombination3 = "_CONTROL_H";
    final StringBuilder key = new StringBuilder();
    this.scene.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
         @Override
         public void handle(KeyEvent event) {
              String codeStr = event.getCode().toString();
              if(!key.toString().endsWith("_"+codeStr)){
                   key.append("_"+codeStr);
    this.scene.addEventHandler(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() {
         @Override
         public void handle(KeyEvent event) {
              if(key.length()>0){
                   if(key.toString().equals(keyCombination1)){
                        System.out.println("Key Combination 1 pressed");
                   }else if(key.toString().equals(keyCombination2)){
                        System.out.println("Key Combination 2 pressed");
                   }else if(key.toString().equals(keyCombination3)){
                        System.out.println("Key Combination 3 pressed");
                   key.setLength(0);
    });Thanks & Regards,
    Sai Pradeep Dandem

  • BPC for Excel: Are multiple key ranges really possible?

    Hi Experts,
    in a training document I found to possibility of multiple key ranges, to make an input schedule sheet more attractive or insert rows with excel formulas etc.
    For example: ColKeyRange: EVRNG(H13:J13;M13:O13)
    RowKeyRange: EVRNG(G15:G20;L15:L20)
    In my case I want the balance sheet separated. On the left side asset positions, on the right side liability positions (in columns for bot: Previous Year | Actual | Plan
    If I define my input schedule like that it gets messed up. No figures, weird formatting etc. Have you implemented an input schedule with multiple key ranges and did it work ok?
    Thank you,
    Cora

    Hi Cora,
    Yes, multiple key ranges do work, but it is a bit complicated as Dzmitry suggests. Your example row expansion will not work, as the row expansion needs to remain in the same columns for each part of the expansion. (In other words, EVRNG(G15:G20;L15:L20) is wrong but EVRNG(G15:G20;G25:G30) is ok.) To achieve your result, Dzmitry is correct that you will probably need to use two EVDREs.
    That said, multiple expansions work as follows:
    If you are not using an expansion, or you use NOEXPAND in your columns or rows, you can use a multiple key range for formatting purposes and simply hardcode in the members that you wish to see in each key range.
    If you want to see different expansions in each key range, then you need to use a special expansion syntax. To take your example, say you have a single dimension in your column with column range defined EVRNG(H13:J13;M13:O13). You could have your column expansion on the category dimension be "PRIORYR,ACTUAL,PLAN|PLAN,ACTUAL,PRIORYR", giving you the same set of categories reversed in each column.
    Ethan

  • Thinkpad keyboard problem - some keys generate multiple keys when pressed

    thinkpad keyboard problem - some keys generate multiple keys when pressed
    For example, "t" generates "tr", "y" generates "yu", "backspace" generates "backspace" plus "IBM access connections", "m" generates "mn" and "n" generates "mn".  Not all keys are wrong. 
    For what it's worth, the odd behaviour started shortly after a trip to Miami in which I had a meeting at a cafe in which we were undercover but it was pouring cats and dogs - it was like having a meeting in a sauna - so I am wondering if the high humidity could have caused the behaviour.
    I tried replacing the keyboard but the new keyboard has the same problem.  
    The machine in question is a Thinkpad T23 running Windows XP Pro
    Any help would be appreciated as I am now in Los Angeles using a borrowed Mac! :-) 

    i have something along the lines of the same problem.
    http://bbs.archlinux.org/viewtopic.php?id=56777
    my conclusion is something in the last system update screwed it up.

  • How to sort on MULTIPLE Keys which are elements of VO's stored in  list

    How to sort on MULTIPLE Keys which are elements of VO's stored in a list.. without disturbing the ordering done by previous sorting...?
    Is there any best soln for the same...
    Thanks..

    How to sort on MULTIPLE Keys which are elements of
    VO's stored in a list.. without disturbing the
    ordering done by previous sorting...?Do you mean you want to do a heirarchical sort? Where the secondary key is only used when the primary keys are equal etc.? That's pretty trivial. If the primary keys are equal, check the secondary key. How do you sort words in alphabetical order? It's the same process.

  • BDB- Recno multiple key/data pairs retrieval

    Hey,
    I am new to BDB and have just started to work with Berkley DB (ver. 5.3.15) using the Linux C API.
    I set up a simple Recno DB which is populated with sequential keys 1,2,3….100. DB Records are in variable length size, although, I am limiting them to a max size.
    Below are the environment and DB open flags I am using:
    dbenv->open(dbenv, DB_HOME_DIR, DB_SYSTEM_MEM | DB_INIT_LOCK | DB_CREATE | DB_INIT_MPOOL, 0)
    dbp->open(dbp, NULL, NULL,DATABASE_NAME, DB_RECNO, DB_CREATE, 0664))
    Single record get/put or using cursor to iterate over the all DB works well.
    However, I would like to retrieve multiple records in a single get call.
    These records can be non-sequential.
    For example, retrieving 3 records with the keys 4,89,90. I prefer the bulk buffer to be as minimal as possible (avoiding stack or heap unnecessary memory allocation).
    I was reading and saw few examples about using bulk retrieval. Though, I couldn’t find any example for racno bulk get on multiple specified keys.
    From what I figured out till now, it seems that I should use:
    Get flags: DB_SET_RECNO, DB_MULTIPLE_KEY. And the macros: DB_MULTIPLE_INIT and DB_MULTIPLE_RECNO_NEXT to iterate over a bulk buffer received.
    But, I couldn’t figure it out where and how I should specify the list of Keys.
    Beside, the BDB man says: "For DB_SET_RECNO to be specified, the underlying database must be of type Btree, and it must have been created with the DB_RECNUM flag."
    Does the BDB open with DB_RECNO flag imply that the underlying database is Btree? If creating Btree instead of recno, wouldn’t I loss access performances?
    I would appreciate if anyone could supply some guidelines or an example which will assist me to figure it out how to retrieve multiple key/data pairs from a recno DB.
    Thanks in advance
    Kimel

    I am checking the BDB to see if it can suit my needs (mostly performance wise).
    It should work on a simple home router device and should hold router runtime information (static/dynamic).
    This information should be accessible for process in the system which can write or read the device info.
    The DB is not require to be persistent and is recreated every reboot (memory only).
    I believe the DB will hold not more then 200 parameters at max.
    DB access rate is around 30 records per sec (write/read)...
    Currently, I think of either BDB or maybe just use a normal Linux shared memory (random access + semaphore).
    Cons and pros to each...
    If I choose BDB, I will use the in memory DB and recno due to access performance considerations.
    Getting back to my question, I would like to be able to read a list of parameters in a single get call.
    In order to use recno, I will give every parameter a unique id (1 - ip, 2 - subnet , 3 - default gateway).
    e.g: ip , subnet , default gateway. (get keys 1,2,3)
    Hope you have the relevant info.
    Thanks

  • Copy & paste multiple key frames?

    Is there a way to copy and paste multiple key frames?
    Thanks.

    Drawing a marque around multiple keyframes is easy, too. You can select a property and all of its keyframes will be selected. You can performa sophisticated choices of non-continguous keyframes with command-select. You can also do lots of editing in the graph view.

  • IsKeyDown - Multiple key detection ?

    does anyone know of how to read two keys or check two keys are down/pressed?
    I am trying to do a game where the object can mover diagonally so i need the game to react differently if 2 cursor keys are down?
    Any ideas about the isKeyDown() function?
    The keypressed/ keyreleased function i think will only detect one at a time.
    cheers all

    Try this quick Swing App I knocked up using Sun One. It shows multiple key detection, doesn't mind simultaneous key presses.
    I wrote the code for clarity more than anything else.
    Run it, see what it does and how it reacts to the cursor keys being pressed.
    * KeyEvents.java
    * Created on 05 December 2002, 16:21
    package andy.apps.KeyEvents;
    import java.awt.event.*;
    import java.awt.*;
    import javax.swing.*;
    public class KeyEvents extends javax.swing.JFrame {
        /** Creates new form KeyEvents */
        public KeyEvents() {
            initComponents();
            upPanel.registerKeyboardAction(new UpOnListener(), KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0, false), JComponent.WHEN_IN_FOCUSED_WINDOW);
            upPanel.registerKeyboardAction(new UpOffListener(), KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0, true), JComponent.WHEN_IN_FOCUSED_WINDOW);
            downPanel.registerKeyboardAction(new DownOnListener(), KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0, false), JComponent.WHEN_IN_FOCUSED_WINDOW);
            downPanel.registerKeyboardAction(new DownOffListener(), KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0, true), JComponent.WHEN_IN_FOCUSED_WINDOW);
            leftPanel.registerKeyboardAction(new LeftOnListener(), KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0, false), JComponent.WHEN_IN_FOCUSED_WINDOW);
            leftPanel.registerKeyboardAction(new LeftOffListener(), KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0, true), JComponent.WHEN_IN_FOCUSED_WINDOW);
            rightPanel.registerKeyboardAction(new RightOnListener(), KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0, false), JComponent.WHEN_IN_FOCUSED_WINDOW);
            rightPanel.registerKeyboardAction(new RightOffListener(), KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0, true), JComponent.WHEN_IN_FOCUSED_WINDOW);
        class UpOnListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                KeyEvents.this.upPanel.setBackground(Color.black);
        class UpOffListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                KeyEvents.this.upPanel.setBackground(Color.white);
        class DownOnListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                KeyEvents.this.downPanel.setBackground(Color.black);
        class DownOffListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                KeyEvents.this.downPanel.setBackground(Color.white);
        class LeftOnListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                KeyEvents.this.leftPanel.setBackground(Color.black);
        class LeftOffListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                KeyEvents.this.leftPanel.setBackground(Color.white);
        class RightOnListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                KeyEvents.this.rightPanel.setBackground(Color.black);
        class RightOffListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                KeyEvents.this.rightPanel.setBackground(Color.white);
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
        private void initComponents() {
            upPanel = new javax.swing.JPanel();
            leftPanel = new javax.swing.JPanel();
            downPanel = new javax.swing.JPanel();
            rightPanel = new javax.swing.JPanel();
            getContentPane().setLayout(new java.awt.GridLayout(2, 2));
            addWindowListener(new java.awt.event.WindowAdapter() {
                public void windowClosing(java.awt.event.WindowEvent evt) {
                    exitForm(evt);
            upPanel.setBorder(new javax.swing.border.TitledBorder("Up"));
            upPanel.setBackground(new java.awt.Color(255, 255, 255));
            getContentPane().add(upPanel);
            leftPanel.setBorder(new javax.swing.border.TitledBorder("Left"));
            leftPanel.setBackground(new java.awt.Color(255, 255, 255));
            getContentPane().add(leftPanel);
            downPanel.setBorder(new javax.swing.border.TitledBorder("Down"));
            downPanel.setBackground(new java.awt.Color(255, 255, 255));
            getContentPane().add(downPanel);
            rightPanel.setBorder(new javax.swing.border.TitledBorder("Right"));
            rightPanel.setToolTipText("null");
            rightPanel.setBackground(new java.awt.Color(255, 255, 255));
            getContentPane().add(rightPanel);
            pack();
        /** Exit the Application */
        private void exitForm(java.awt.event.WindowEvent evt) {
            System.exit(0);
         * @param args the command line arguments
        public static void main(String args[]) {
            new KeyEvents().show();
        // Variables declaration - do not modify
        private javax.swing.JPanel upPanel;
        private javax.swing.JPanel leftPanel;
        private javax.swing.JPanel rightPanel;
        private javax.swing.JPanel downPanel;
        // End of variables declaration
    }

  • Combine multiple key figures in single key figure

    Hi,
    We have a requirement where we need to put multiple key figures into a single key figure
    For example source DSO is as follows (+ Unit object):
    Region    |   Date           |    Amount  |    Quantity
    Asia        |  01-01-2008  |    100        |    1000
    Eurpoe    |  02-02-2008  |     200       |     2000
    In Target DSO / Cube, the data must appear like this (no Unit Object)
    Region    |   Date            |  Type        |    Value
    Asia       |   01-01-2008   |   Amount   |    100
    Asia       |   01-01-2008   |   Quantity  |    1000
    Eurpoe   |   02-02-2008   |   Amount   |     200
    Eurpoe   |   02-02-2008   |   Quantity  |     2000
    How do we achieve this?
    Regards,
    Nikhil

    Hi
    Write a strart routine that maps Type ->Amount and Quantity,Value -> Kf of Amount or Quantity
    Put these chars into Key fields in target DSO = Region | Date | Type ,that will assure unique entries
    Bye

Maybe you are looking for