Problem: two tables of facts and a dimension in accordance with

Hello world!

I need solve this situation:

I have two fact tables, say F1 and F2, which are both linked to D1, my dimension in line
I just need to select fields of D1, but I know that, when querying, OBIEE links to a table of facts anyway... How is it chooses the fact table? In other words, if I want to only fields D1, not the system also queries of F1 or F2? What is a random choice?

Is there a way to "force" this choice, saying the system for example to choose only from F1?

Is there a work around to resolve this situation? Remember, I only need fields D1.

Thank you!!

The solution to your problem is "column name".
Go to the layer of presentation and double click on your domain. Then you will see name column option. Click on set. give the corresponding column actually it (in your column of fact give deal F1)

References: http://oracle-bi.siebelunleashed.com/articles/implicit-fact-column/
Thank you
GSR

Published by: GSR on 20 March 2012 15:22

Tags: Business Intelligence

Similar Questions

  • Two Tables of FACTS, some common Dimensions and common

    Hello to all, question, I'm sure you have met in the past, but always wanted to get your opinion.

    I have a few FACT tables and dimensions that are shared (common size). Rest of the dimensions are related to one or the other FACT tables.

    What is the best way to present a view where users CAN pull information from both tables?

    I managed by pulling the shared dimensions (common) on the tables of BOTH FACTS and having the same grain, but this view breaks down when I pull information from a Dimension that does not much to do with another.

    What is the best way to present it? Should it be broken down in three areas?

    Business line 1-> some Dims-> FACT Table has
    Area 2-> some Dims-> Table of FACTS B

    AND

    Business line 3-> * only commune Dims *-> Table of FACTS A & B Table of FACTS?

    Your comments are always appreciated.

    Kind regards

    Published by: user10679130 on October 12, 2009 15:27

    Start by checking the forum for similar discussions/questions.

    Join two tables of facts different dimensions in the single logical table
    http://108obiee.blogspot.com/2009/08/joining-two-fact-tables-with-different.html

    This solution maintains two tables of facts in the same area in the logical table is unique, with municipalities and non-common dimensions.

    Concerning
    Goran
    http://108obiee.blogspot.com

  • Query two tables of facts which is non-compliant dimension

    I have two fact tables and I have this implementation to the RPD:


    Fact1 joined DimA and Edin

    Fact2 joined DimA



    On the front-end, I build two analyses:

    Analysis 1:

    DimA.A, Fact1.1, Fact2.2



    Analysis 2:
    DimA.A, DimB.B, Fact1.1, Fact2.2


    In the results of the analysis 1, I see valid values for Fact2.2
    In the results of the analysis 2, I see Fact2.2 vacuum of the column. I think the reason is that Fact2 is not joined to the EDIN.


    Is it possible that I should be able to report against the two columns of the dimension tables (DIMA and EDIN) to FACT1 and FACT2 measures... Even if I did not join between EDIN and FACT2.

    Any answer would be useful!

    Kind regards
    Annu

    Hello

    Go to the LTS level - content of the fact that not having the join with the Dimension and put on a Total of this Dimension and level total Column (Measure also) (Double click - levels) (Dim hierarchy assume is already configured)

    Shoot everything (D1, D2, F1, F2) you will see results.

    Update Me

    Thank you
    NK

    Published by: DNK on March 20, 2013 13:35

  • Several facts and consistent dimensions / nonconfirmed

    Hi all

    There has been a lot of posts on this issue, I've read a lot about this, but still can not get this to work. We are looking for a basic marketing operation where we can follow the links that were clicked in email marketing that have been sent. What I have is two fact tables, with a dimension in line with each other and one of the facts with a dimension not compliant:

    Fact 1 Sun - related links
    Fact 2 Sun - related links. Dim - Email name;

    In fact, I've defined a measure that counts the number of links clicked 1
    In fact 2, I defined a measure that counts the number of links

    So I can't take fields of Sun - Email name and fact 2 this properly will show me the number of links in this e-mail. I can add in the name of the Sun link - links to give me the details of the links in the email. However, when I then add the number of links clicked of the fact 2, it is shown as zero. Withdrawal of the name Email will cause the number of clicks to display correctly for each link.

    I read this post here:

    report based on 2 different fact tables

    which seems to contain my exact problem, but the listed solution did not work for me. I created hierarchies, set the LTS of fact 1 retail for Dim - links and the LTS in fact 2 detail for Dim - Dim - Email name and links. It does not work. I then put the LTS in fact 1 total for Dim - Email name. It does not work. I then put the LTS to the dimension tables to be detail in every case, and this does not work either. My business issue is quite simple: for each email list links and the number of times the link has been clicked.

    I started from scratch, I seek only to these 4 logical tables, I've got to the stage where I'm BI reboot after each change, but I still don't see the problem. Can someone give me some advice please?

    Thank you
    Matt

    Matt,

    Just a small change more...

    / * The single fact table now columns as two, one a separate count on linkid, and the other a number on the clicksid * /.

    Given that clicksid is a source is 1 that has no mapping to Dim Email, for this column value mapping contained level Email Total.
    That is to say, double-click your count (clicksid)--> go to the tab levels--> set Email name Dim at the Total level. Note to all levels of rest must be left untouched (unselected).

    This South do the trick...

    Blackburn

  • Window and rescheduling content in accordance with the resolution of the screen

    Hello

    I wrote a program LabWindows and drew a UI according to him. The software is now used on another computer which is much lower display resolution. This leads to the problem that not all content is visible.

    Is it possible for the scale of the user interface compared to the available resolution without writing a lot of code?

    Thanks in advance,

    Christoph

    You can use the resolution setting and scale content on resize the attributes of the Group of experts, as well as SetPanelSize, to get the full scale of the Panel and controls according to the display resolution you use. See this knowledge base entry for more details.

  • Problem finding tables of project and the repository working interface

    Hello

    Under a project (p. ex. - customer_m_table), with two interfaces (cust_regular and cust_special) and a package (cust_m).

    In working repository schema I had the table (snp_session) to the interface where I get the session Id, interface ran, etc...

    There is an even project table giving details of the project as the project name (snp_project).

    But is there any table where I can get information as part of a project, what are interfaces and what are packages?

    Thank you.

    Hello

    You can see how ODI under table SNP_TRT

    Select the RPD. Project_name, SF. Folder_name, SPA. PACK_NAME, SP.pop_name, P.TRT_NAME

    Of

    ODEV91119_ODI_WORK. SNP_POP SP,

    ODEV91119_ODI_WORK. SNP_folder SF,

    ODEV91119_ODI_WORK.snp_project RPD,

    ODEV91119_ODI_WORK.snp_package SPA,

    ODEV91119_ODI_WORK. SNP_TRT P

    where

    RPD. I_PROJECT = SF. I_PROJECT AND

    PFM I_FOLDER = SP. I_FOLDER AND

    PPM I_FOLDER = SPA. I_FOLDER AND

    PFM I_FOLDER = P.I_FOLDER

    AND RPD. I_PROJECT = 2010

    and spa.i_package = 3010

    If you're ok with this, please mark as correct or useful

    Thank you

  • Performance problem with SQL for recovering data in FACT and Dimension Table

    Hello

    We have a query that performs very slow when extracting data in FACT and the DIMENSION Table.

    SQL and Plan are in the attachment.

    Please suggest how this can be improved.

    The version of DB is 11.2.0.4

    Kind regards

    VN

    Slow is a very relative term, for about 1 hour is slow for some 1s is slow. So please always quantify your settings.

    The first thing caught my eye is done 4 times ia_oasis_tot_prov_cur_d access. Try to isolate which and change it like this and see if it returns the same result.

    select case when a.clm_capitn_ia_bil_prov_edw_sk = b.prov_edw_sk then b.prov_id end ben_billing_prov
         , case when a.clm_capitn_attnd_prov_edw_sk  = b.prov_edw_sk then b.prov_id end ben_attending_prov
         , case when a.clm_capitn_ia_pcp_edw_sk      = b.prov_edw_sk then b.prov_id end ben_pcp_number
         , case when a.clm_capitn_ia_ipa_prov_edw_sk = b.prov_edw_sk then b.prov_id end ben_ipa_number
      from edw.clm_capitn_f partition (jan2015) a
      left join
           edw.ia_oasis_tot_prov_cur_d b
        on (
               a.clm_capitn_ia_bil_prov_edw_sk = b.prov_edw_sk
            or a.clm_capitn_attnd_prov_edw_sk  = b.prov_edw_sk
            or a.clm_capitn_ia_pcp_edw_sk      = b.prov_edw_sk
            or a.clm_capitn_ia_ipa_prov_edw_sk = b.prov_edw_sk
           )
    

    If it works this means allows you to reduce certain I/O.

  • I want to compare two tables and out a boolean

    This should be simple.  I want to compare two tables (5 items) and return a single Boolean value (T/F), not an array of Boolean.

    Thank you

    Kevin

    Right click on the comparison, the comparison mode, select compare the aggregates.

  • How to join two tables if you transpose the rows, columns and rows in one of the table

    Hi guys,.

    can someone help me please in the write request

    I have two tables

    Agents and Agent phones but in the agent phones table for the id of an agent it displays 4 rows because one of the column there types of different phones (office, mobile, home, fax)

    So instead of display 4 rows, I used max(case...) to convert rows to columns

    now how to reach it with another table

    Requirement:

    Database: 11.2.0.2.0

    create the table AGENT_PHONE

    (

    agent_id NUMBER (20) not null,

    agent_type_code VARCHAR2 (10) not null,

    agent_type_prefix VARCHAR2 (10) not null,

    Phone_Number VARCHAR2 (16) not null,

    phone_type_code VARCHAR2 (10) not null

    )

    CREATE TABLEAGENTS

    (

    agent_id NUMBER (20) not null,

    agent_type_code VARCHAR2 (10) not null,

    agent_type_prefix VARCHAR2 (10) not null,

    NAME VARCHAR2 (40) NOT NULL

    )

    INSERT INTO AGENT_PHONE(AGENT_ID,AGENT_TYPE_CODE,AGENT_TYPE_PREFIX,PHONE_NUMBER,PHONE_TYPE_CODE)

    VALUES (29709, ARE ', 'OFFICE', '4805551436', 'CELL');

    INSERT INTO AGENT_PHONE(AGENT_ID,AGENT_TYPE_CODE,AGENT_TYPE_PREFIX,PHONE_NUMBER,PHONE_TYPE_CODE)

    VALUES (29709, ARE ', 'OFFICE', '1111111111', 'PHONE');

    INSERT INTO AGENT_PHONE(AGENT_ID,AGENT_TYPE_CODE,AGENT_TYPE_PREFIX,PHONE_NUMBER,PHONE_TYPE_CODE)

    VALUES (29709, ARE ', 'OFFICE', '2223334444',' OFF');

    INSERT INTO AGENT_PHONE(AGENT_ID,AGENT_TYPE_CODE,AGENT_TYPE_PREFIX,PHONE_NUMBER,PHONE_TYPE_CODE)

    VALUES (29709, ARE ', 'OFFICE', '5556667788', 'FAX');

    INSERT INTO VALUES AGENTS

    (29709, ARE ', 'OFFICE', 'FLY');

    INSERT INTO VALUES AGENTS

    (1234, ARE ', 'OFFICE', 'MIKE');

    SELECT * FROM AGENT_PHONES

    AGENT_IDAGENT_TYPE_CODEAGENT_TYPE_PREFIXPHONE_NUMBERPHONE_TYPE_CODE

    ---------------------------------------------------------------------------------------------

    29709REOFFICE4805551436CELL
    29709REOFFICE1111111111PHONE
    29709REOFFICE2223334444OFF
    29709REOFFICE5556667788

    FAX

    SELECT * AGENTS

    AGENT_IDAGENT_TYPE_CODEAGENT_TYPE_PREFIX

    NAME

    29709REOFFICEROB
    1234REOFFICE

    MIKE

    This is so the data we have in both table

    Now, I transposed rows to columns in the table of agent phones so I used the following query

    SELECT AP. AGENT_ID,. AGENT_TYPE_CODE,. AGENT_TYPE_PREFIX.

    MAX (CASE WHEN AP. PHONE_TYPE_CODE = 'CELL' THEN AP. PHONE_NUMBER END) AS CELL.

    MAX (CASE WHEN AP. PHONE_TYPE_CODE = 'OFF' THEN AP PHONE_NUMBER END) AS TURNED OFF.

    MAX (CASE WHEN AP. PHONE_TYPE_CODE = 'FAX' THEN AP. PHONE_NUMBER END) LIKE FAX,.

    MAX (CASE WHEN PHONE_TYPE_CODE = 'PHONE'. THEN AP PHONE_NUMBER END) AS PHONE

    AGENT_PHONE AP

    WHERE AP. AGENT_ID = 29709

    GROUP OF AP. AGENT_ID, AP. AGENT_TYPE_CODE, AP. AGENT_TYPE_PREFIX.

    AGENT_IDAGENT_TYPE_CODEAGENT_TYPE_PREFIXCELLOFFFAXPHONE
    129709REOFFICE4805551436222333444455566677881111111111

    My question is how this to join the agents table so that my output should be like this...

    I want to display all the results in the table of the Agent, even if they are not in the table of agent phones. As you can see there are other agent id 1234 is also populated

    AGENT_IDAGENT_TYPE_CODEAGENT_TYPE_PREFIXNAMEAGENT_IDAGENT_TYPE_CODEAGENT_TYPE_PREFIXCELLPHONEOFFFAX

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    29709REOFFICEROB29709REOFFICE4805551436111111111122233344445556667788
    1234REOFFICEMIKE

    Currently, I run this query and I get the output as below

    SELECT *.

    AGENTS HAS

    LEFT OUTER JOIN AGENT_PHONE AP

    ON A.AGENT_ID = AP. AGENT_ID

    AND A.AGENT_TYPE_CODE = AGENT_TYPE_CODE.

    AND A.AGENT_TYPE_PREFIX = AGENT_TYPE_PREFIX.

    AGENT_IDAGENT_TYPE_CODEAGENT_TYPE_PREFIXNAMEAGENT_IDAGENT_TYPE_CODEAGENT_TYPE_PREFIXPHONE_NUMBERPHONE_TYPE_CODE
    129709REOFFICEROB29709REOFFICE4805551436CELL
    229709REOFFICEROB29709REOFFICE1111111111PHONE
    329709REOFFICEROB29709REOFFICE2223334444OFF
    429709REOFFICEROB29709REOFFICE5556667788FAX
    51234REOFFICEMIKE

    I want id 29709 agent in a line with 1234 agent also id to display

    You can rotate your phone number of agent in columns

    Select *.

    of AGENT_PHONE

    pivot)

    min (PHONE_NUMBER)

    for PHONE_TYPE_CODE in ('CELL' as a 'CELL', 'PHONE' like 'PHONE', 'OFF' in the 'OFF', 'FAX' as 'FAX')

    )

    AGENT_ID AGENT_TYPE_CODE AGENT_TYPE_PREFIX CELL PHONE OFF FAX
    29709 RE OFFICE 4805551436 1111111111 2223334444 5556667788

    Then you can join to view inline or CTE

    with AGENT_PHONE_PIVOT like)

    Select *.

    of AGENT_PHONE

    pivot)

    min (PHONE_NUMBER)

    for PHONE_TYPE_CODE in ('CELL' as a 'CELL', 'PHONE' like 'PHONE', 'OFF' in the 'OFF', 'FAX' as 'FAX')

    )

    )

    SELECT *.

    AGENTS HAS

    LEFT OUTER JOIN AGENT_PHONE_PIVOT AP

    ON A.AGENT_ID = AP. AGENT_ID

    AND A.AGENT_TYPE_CODE = AGENT_TYPE_CODE.

    AND A.AGENT_TYPE_PREFIX = AGENT_TYPE_PREFIX.

    AGENT_ID AGENT_TYPE_CODE AGENT_TYPE_PREFIX NAME AGENT_ID AGENT_TYPE_CODE AGENT_TYPE_PREFIX CELL PHONE OFF FAX
    29709 RE OFFICE ROB 29709 RE OFFICE 4805551436 1111111111 2223334444 5556667788
    1234 RE OFFICE MIKE - - - - - - -

    Is that what you're looking for?

  • Table of facts, the number of columns?

    I have my built dimensions and am designing my first table of facts and I hit a little confusion. Should the fact table just be nothing else than the foreign key pointing to the primary key of the dimension tables? Or should he have one column for each column of each dimension table? Thanks for the clarification.

    Foreign key (for most types of dimension) columns. Then the columns for measures in all these dimensions.

    See you soon
    David

  • BUG? Statement of BRIDGE to compare two tables

    Hello

    I tried to compare two tables different dbs and remembered a post on applications to Connectin Cross
    http://barrymcgillin.blogspot.com/2010/11/cross-connection-queries.html
    BRIDGE temparb AS "EB05 01"
    (SELECT * FROM arb)
    (SELECT * FROM temparb 
    MINUS 
    SELECT * FROM arb
    )
    UNION ALL
    (SELECT * FROM arb
    MINUS
    SELECT * FROM temparb 
    );
    I expect to get the differences between the ARB table in my current schema and the table alias temparb arb in the other db. Yet it seems that in this case only the table in my current schema is read.

    I materialize at the table BRIDGE with
    BRIDGE temparb AS "EB05 01"
    (SELECT * FROM arb)
    and select the value that I know to be only in the remote schema
    SELECT id FROM temparb WHERE id = 2562;
    SELECT id FROM arb WHERE id = 2562;
    Both times I get no results. I even tried to use aliases on the table, same result. Tested in EA3 3.0 and 3.1.

    Has anyone tried this before?

    Concerning
    Marcus

    Hi Marcus,

    Have you tried without the quotes around the name of connection?

    I have a named connection
    system_local
    which I run the following command

    drop table testbridge_remote;
    drop table testdbrige;
    create table testbridge (col1 int);
    insert into testbridge values (1);
    insert into testbridge values (2);
    insert into testbridge values (3);
    commit;

    I have a named connection
    Name of the connection with space
    I performed the following in the

    drop table testdbrige;
    create table testbridge (col1 int);
    insert into testbridge values (4);
    insert into testbridge values (5);
    insert into testbridge values (3);
    commit;

    Then I can execute the following statement in the connection of system_local/worksheet

    BRIDGE testbridge_remote as the name of connection with Space(select * from testbridge)
    + (SELECT * FROM testbridge_remote +)
    LESS
    SELECT * from testbridge
    +)+
    UNION ALL
    + (SELECT * FROM testbridge +)
    LESS
    SELECT * from testbridge_remote
    +);+

    It works well.
    Returns the rows in the remote table not in the local table and lines in the local table, not the remote table.

    Kind regards
    Dermot
    SQL development team.

  • Compare two Tables question

    Hello

    I need to compare two tables (T1, T2) and update existing records only in T2, but not in T1. So basically, the lines updated in T2:

    Select * from T2 where T2.id not in (select id from T1).

    What would be a good way to achieve this in ODI?

    I created an ODI interface with a join T2.id not in T1.ID, but it did not work "coz:" ORA-01427: einreihig subquery returns several lines "."

    Appreciate any input/access map.

    Thank you.

    Hi Michele...

    At first glance, there are at least 2 ways to do it:

    (1) put the steps in "(select id from T1)" (you can use an ODI API to get the schema dynamically) as an object filter to T2 (interface), use the incremental update IKM SQL and put "Insert" option on 'No'. " This will do a few updates.

    OR

    (2) in an interface set the T1 and T2 and left join (based on T2) load a temp table where all fields accept the value zero. Next to the columns to update (of course the T2), create an ID column (I named him as T1_Temp_ID) and map the Id of the T1 to it.
    Now just create new interface where the temperature is source and put a filter like "T1_Temp_ID is not null.

    The first option is less complex and can bring better performance.
    The second option gives a better follow-up of the use of the table and the columns, but can be less performatique.

    This help you?

  • Problem with a lot of facts and dimension conform

    Hello gurus:

    I'll have 2 consistent dimensions and 3 facts.
    Now the problem is that whenever I try to wear all three made, I get an error display of consistency.

    I need to make a report that has at least one column of all of them.
    Please guide me.

    Thank you.

    ~ Vinay

    Vinay,

    You can resolve this problem by creating dimensional hierarchies and fix levels of content appropriate to the fact tables. Follow this

    1 create hierarchies for both of your consistent dimension, if you don't have all of the levels, create the hierarchy with at least two levels, total and retail.
    2. open the properties of the logical source of each fact table and define the level of content at retail for the two dimensions.

    It will work. Make sure that you select only measures the fact with confirmed dimensions tables (aggregated).

    Madan

  • Problem with populating a table of facts, of dimension tables

    My goal is there are 5 dimensional tables created

    Student-> primary key s_id, upn(unique pupil no), name
    Rank-> key primary g_id, grade, exam_level, values
    Object-> key primary sb_id, subjectid, subname
    School-> key primary sc_id, schoolno, school_name
    year-> y_id primary key, year (like 2008)

    S_ID g_id sb_id, sc_id, y_id are sequences
    select * from student;
    S_ID UPN FNAME COMMONNAME GENDER DOB
    ==============================
    9062 1027 MELISSA ANNE       f  13-OCT-81
    
    ...
    
    9000 rows selected
    select * from grade;
          G_ID GRADE      E_LEVEL         VALUE
    ---------- ---------- ---------- ----------
            73 A          a                 120
            74 B          a                 100
            75 C          a                  80
            76 D          a                  60
            77 E          a                  40
            78 F          a                  20
            79 U          a                   0
            80 X          a                   0
    ...
    18 rows selected
    It's basically the dimensional point of view

    According to the given specifications, now need to create a table of facts like facts_table that contains all the primary keys of tables IMG as foreign keys in it.

    The problem is when I say, I'll look at an example of smaller that the reality of dimension tables 5 let say there are 2 student dim tables, rank with s_id, g_id as the p key.
    create materialized view facts_table(s_id,g_id)
    as
    select  s.s_id,g.g_id
    from   (select distinct s_id from student)s
    ,         (select distinct g_id from grade)g
    The result is a massive duplication as there is no join between two tables. But basically there is no common things between the two tables to join, how to solve?

    Think of it as when I do for 5 tables the amount of duplication being involved, why there is not enough tablespace.

    I was hoping that if there is no other way then don't create a fact table with just a column at the start
    create materialized view facts_table(s_id)
    as
    select s_id
    from student;
    then
    alter materialized view facts_table add column g_id number;
    Then fill this column g_id fetching all the grade table g_id values using some sort of loop, although we shouldn't use pl/sql, I don't know if it works?

    All of the suggestions.

    TROPPER,

    Your information, I have tried this test see if it works for you

    DROP TABLE fact_1 CASCADE CONSTRAINTS;
    
    CREATE TABLE fact_1 (
       s_id NUMBER NOT NULL,
       sc_id NUMBER NOT NULL,
       g_id NUMBER NOT NULL
    )
    LOGGING
    NOCOMPRESS
    NOCACHE
    NOPARALLEL
    MONITORING;
    
    ALTER TABLE student_1
     DROP PRIMARY KEY CASCADE;
    DROP TABLE student_1 CASCADE CONSTRAINTS;
    
    CREATE TABLE student_1 (
       s_id NUMBER NOT NULL,
       student_id NUMBER,
       studentname VARCHAR2 (40 BYTE)
    )
    LOGGING
    NOCOMPRESS
    NOCACHE
    NOPARALLEL
    MONITORING;
    
    ALTER TABLE school
     DROP PRIMARY KEY CASCADE;
    DROP TABLE school CASCADE CONSTRAINTS;
    
    CREATE TABLE school (
       sc_id NUMBER NOT NULL,
       school VARCHAR2 (40 BYTE),
       schoolname VARCHAR2 (100 BYTE)
    )
    LOGGING
    NOCOMPRESS
    NOCACHE
    NOPARALLEL
    MONITORING;
    
    ALTER TABLE grade
     DROP PRIMARY KEY CASCADE;
    DROP TABLE grade CASCADE CONSTRAINTS;
    
    CREATE TABLE grade (
       g_id NUMBER NOT NULL,
       e_level VARCHAR2 (40 BYTE)
    )
    LOGGING
    NOCOMPRESS
    NOCACHE
    NOPARALLEL
    MONITORING;
    
    CREATE UNIQUE INDEX fact_1_u01
       ON fact_1 (s_id)
       LOGGING
       NOPARALLEL;
    
    CREATE UNIQUE INDEX fact_1_u02
       ON fact_1 (sc_id)
       LOGGING
       NOPARALLEL;
    
    CREATE UNIQUE INDEX fact_1_u03
       ON fact_1 (g_id)
       LOGGING
       NOPARALLEL;
    
    CREATE UNIQUE INDEX grade_pk
       ON grade (g_id)
       LOGGING
       NOPARALLEL;
    
    CREATE UNIQUE INDEX school_pk
       ON school (sc_id)
       LOGGING
       NOPARALLEL;
    
    CREATE UNIQUE INDEX student_1_pk
       ON student_1 (s_id)
       LOGGING
       NOPARALLEL;
    
    ALTER TABLE fact_1 ADD (
      CONSTRAINT fact_1_u01
     UNIQUE (s_id),
      CONSTRAINT fact_1_u02
     UNIQUE (sc_id),
      CONSTRAINT fact_1_u03
     UNIQUE (g_id));
    ALTER TABLE student_1 ADD (
      CONSTRAINT student_1_pk
     PRIMARY KEY
     (s_id));
    ALTER TABLE school ADD (
      CONSTRAINT school_pk
     PRIMARY KEY
     (sc_id));
    ALTER TABLE grade ADD (
      CONSTRAINT grade_pk
     PRIMARY KEY
     (g_id));
    ALTER TABLE fact_1 ADD (
      CONSTRAINT fact_1_r01
     FOREIGN KEY (s_id)
     REFERENCES student_1 (s_id),
      CONSTRAINT fact_1_r02
     FOREIGN KEY (sc_id)
     REFERENCES school (sc_id),
      CONSTRAINT fact_1_r03
     FOREIGN KEY (g_id)
     REFERENCES grade (g_id));
    ALTER TABLE fact_1 ADD (
      CONSTRAINT fact_1_r02
     FOREIGN KEY (sc_id)
     REFERENCES school (sc_id),
      CONSTRAINT fact_1_r03
     FOREIGN KEY (g_id)
     REFERENCES grade (g_id),
      CONSTRAINT fact_1_r01
     FOREIGN KEY (s_id)
     REFERENCES student_1 (s_id));
    
     -- This should be the sequence you will loading data
    
    INSERT INTO student_1
    VALUES (3, 1, 'Tropper A');
    
    INSERT INTO school
    VALUES (3, 'new school', 'new school name');
    
    INSERT INTO grade
    VALUES (4, 'a');
    
    INSERT INTO fact_1
    VALUES (3, 4, 4);
    
    commitl
    

    Concerning

  • several "logical joins" between a fact table and a dimension table

    It seems that cannot create multiple "logical joins" between a fact table and the table of a dimension in OBIEE with Administration Oracle BI tool. For example, whereas a business model with a dimension table TIMES and has made the table containing the value of START_TIME and END_TIME, we want to create separate logical joins BOTH done for the START_TIMEs and the END_TIMEs? Of course, underlying foreign keys can be created, but as far as I can tell the Administration Oracle BI tool does not support this. The solution would be to reproduce the table in TIME, but it's ugly.
    I'm looking for another approach.

    Try this. Create an alias of two for the TIME dimension (beginning & end) in the physical layer, then remove foreign key to the 'Parent' time dimension. Create the foreign key in the physical layer for new aliases, then create complex joins in the MDB layer for new aliases as well. This will allow you to present the two dates within the same table in the presentation layer. Not a more elegant solution, but it works.

Maybe you are looking for