Multiple 'logical joins' between a fact table and one dimension table

It appears that one cannot create multiple ‘logical joins’ between a fact table and one dimension table in OBIEE using the Oracle BI Administration Tool. For example, considering a Business Model with a dimension table TIMES and a fact table FACT containing START_TIME and END_TIME, we would like to create separate logical joins from FACT to TIMES for the START_TIMEs and END_TIMEs? Obviously, the underlying foreign keys can be created, but as far as I can tell the Oracle BI Administration Tool doesn’t support this. The workaround would be to replicate the TIMES table, but that’s ugly.
I seek an alternative approach.

Try this. Create an two aliases for the TIMES dimension (Start & End) in the Physical Layer and then remove foreign key to the "Parent" Times dimension. Create the Foreign Key in the Physical Layer to the new aliases and then create the complex joins in the BMM Layer to the new aliases as well. This will allow you to present both dates within the same table in the Presentation Layer. Not the most elegant solution but it works.

Similar Messages

  • Resolving loops in a star schema with 5 fact tables and 6 dimension tables

    I have a star schema, ie 5 FACT tables and 7 dimension tables, All fact tables share the same dimension tables, some FACT tables share 3 dimesnsions, while other share 5 dimensions.  
    I did adopt the best practices, and as recommended in the book, I tried to resolve them using Context, as it is the recommended option to Alias in a star schema setting.  The contexts are resolved, but I still have loops.  I also cleared the Multiple SQL Statement for each context option, but no luck.  I need to get this resoved ASAP

    Hi Patil,
    It is not clear what exactly is the problem. As a starting point you could set the context up so that it only covers the joins from fact to dimension.
    Fact A, joins Dim 1, Dim 2, Dim 3, and Dim 4
    Fact B, joins Dim 1, Dim 2, Dim 3, Dim 4 and Dim 5
    Fact C, joins Dim 1, Dim 2, Dim 3, Dim 4 and Dim 6
    Fact D, joins Dim 1, Dim 2, Dim 3, Dim 4 and Dim 7
    Fact E, joins Dim 1, Dim 2, Dim 4 and Dim 6
    If each of these are contexts are done and just cover the joins from fact to dim then you should be not get loops.
    If you could lay out your joins like above then it may be possible to specify the contexts/aliases that should work.

  • Two fact and one dimension table

    Hi folks
    i am new to this field ( 3 months ), my TL has given me one task i have to finish it up today itself, Can anyone one give me some idea how to implement
    req. The req is
    1. there are 2 fact and one dimension table is there, i have to create reports on Quaterly and monthly basis by using one dimension table.
    Can any one tell me what all are the steps in need to follow
    2.What is standalone and integrated systems?

    If u r having mapping keys for quarter level n monthly level then create a Alias for the dimension table.Use the original dim table for quarter level mapping and the alias dim for monthly level.

  • Help on  Setting logical Levels  in Fact tables and on Dimension tables

    Hi all
    Can any body provide any blogs or any king of material on what exactly is levelling .
    Like after creating the Dimensional hierarchies we need to set the logical levels for the LTS of fact tabels ri8 .So what is the difference between setting logical levels to fact tabels and also Setting levelling on Dimension tables .
    Any kind of help is appreciated
    Edited by: Xavier on Aug 4, 2011 10:50 AM

    I have read these blogs ,but what my question is
    Setting the logical levels in LTS of Fact tables i understood .
    But we can also set the logical levels for dimensions also ri8 .I didn't understand why do we set the logical levels for dimensions .Is there any reason why we go with the levelling at dimensions
    Edited by: Xavier on Aug 4, 2011 2:03 PM
    Edited by: Xavier on Aug 4, 2011 2:32 PM

  • Forcing full outer join between two facts according to common dimensions

    Hi everyone,I have an issue with the way obiee "joins" 2 fact tables regarding according to common dimensions.
    Let's assume 2 fact tables F1 and F2 and 2 dimension D1 and D2.
    Fi is joined to Dj thanks to IDs.
    F1 and F2 have got aggregates sum(mes1), respectively sum(mes2).
    The group by is performed on dim1 for D1 and dim2 for D2.
    The following 2 queries work fine...but separately:
    select dim1, dim2, sum(mes1) from F1, D1, D2 where ... group by dim1, dim2; //7 lines
    select dim1, dim2, sum(mes2) from F2, D1, D2 where ... group by dim1, dim2; //8 lines
    When I try to select dim1, dim2, sum(mes1) and sum(mes2), the following sql is created by the BI server:
    select dim1, dim2, sum(mes1) c3 from F1, D1, D2 where ... group by dim1, dim2
    ), SAWITH1 AS (
    select dim1, dim2, sum(mes2) c3 from F2, D1, D2 where ... group by dim1, dim2
    select ... dim1,
         ... dim2,
         ... SAWITH0.c3,
         ... SAWITH1.c3
         on SAWITH0.dim1=SAWITH1.dim1 and SAWITH0.dim2=SAWITH1.dim2
    I get only 7 lines. It means I miss one line from the second query on F2.
    The solution is to perform a full outer join. (I tried in TOAD and changing LEFT by FULL is ok)
    How can I force the full outer join?
    Thanks a lot!

    If you use the fact vertical capabilities of OBIEE, it will normally perform a full outer join :
    Check here for an example (replace the fact cross join by your second fact table F2)

  • Issue using one 2 Fact tables with one dimension Table.

    I have 1 Dimension table X and 2 Fact tables A and B
    X is joined to Both A and B for Loan Amount ( with A) and for colleatral amount (with B) when I am selecting the X.Product_Name, A.Loan_Amt, B.Collateral Amount, it is giving an error message
    State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 15018] Incorrectly defined logical table source (for fact table EIP Collateral FACT) does not contain mapping for [EIP Reporting FACT.PD ID]. (HY000)
    Any clues???
    Is there a Inner or Outer join which needs to be created or set in the RPD to get the desired results???

    I have one table which is Porfolio Details which has Portfolio name, Product Category , Product Name, Product ID, Product sources code.- This is my Dimension table.
    I have another 2 set of fact tables : EIP Reporting FACT and EIP Collateral FACT..
    These two tables are joined to Portfolio Details table.
    EIP Reprting FACT gives portfolio wise Loan Amount
    and EIP Collateral FACT gives Portfolio wise Collateral Amount details for same set of customer..
    Now, I am selecting Portfolio Name, Product Category, Product Name,SUM( EIP Reporting FACT.LOAN_AMOUNT), SUM(EIP Collaetral FACT.Collateral_Amt) in a report
    Now, on selecting these columns I am getting that error message which is related to mapping.
    If I take any column from Portfolio details table and any column from EIP Reporting FACT- It works.
    If I take any column from Portfolio details table and any column from EIP Colletral FACT- It works.
    But if I take any column from portfolio table and columns from both FACT tables it gives mapping error...
    Hope I am able to explain the issue in a better way now..
    Edited by: help-required on Mar 11, 2010 6:53 PM
    Edited by: help-required on Mar 11, 2010 6:53 PM

  • Mapping Issue with 7 source tables and one target table in one step

    Request for a small help in OWB.
    I am trying to map 7 source tables to a single target table in one step.These source tables are in Oracle 10G database but dont have PK and FK relation ship.
    I am able to link one table to the target by pointing some of the columns. But when coming to the second table it is giving some error message :
    Ap18003: Connection target attribute group is already connected to a incompatible data source. Use a joiner or set operator to join the upstream data first before connection it to this operator.
    As per the error message I used a Join operator and tried to map the second table to the target but still giving me the same error message. Could some body give me a hand to give out from this step.
    Thanks for your help in advance.

    like this:
    - id -> Number(9,0)
    - name -> VARCHAR2(500)
    - my_id -> Number(9,0)
    - name -> VARCHAR2(500)
    - id -> point to
    - name -> point to
    - id -> Number(9,0)
    - name -> VARCHAR2(500)
    - name -> VARCHAR2(500)
    - my_id -> VARCHAR2(9)

  • Using different logical tables in one dimension

    I have two fact tables and two dimension tables Country and Region. One fact table depend on one dimension table like it shown in this link - Table Country is received from table Region by DISTINCT.
    At the presentation I have to realize one column in Presentation Catalog for both columns Country Name (or Country Id) from Country and Region, the user won't know that one fact table depends on COUNTRY and other on REGION.
    Also I have to realize the dimention "Geography" (Country->District->Region) for fact table SALE_REGION.
    Could Oracle BI automatically choose from which table get data and if it can, how I should make the logical model?
    The best variant I realized it this - where District is the shared child for second Country level, but it doesn't work properly.

    Y don't u use union request in first request details of fact1 and its related dimensions and in 2nd request fact 2 and its related dimensions.
    I guess this should work

  • How to provide joins between oracle tables and sql server tables

    I have a requirement that i need to generate a report form two different data base. i.e Oracle and Sql Server.
    how to provide joins between oracle tables and sql server tables ? Any help on this

    user10675696 wrote:
    I have a requirement that i need to generate a report form two different data base. i.e Oracle and Sql Server. Bad idea most times. Heterogeneous joins do not exactly scale and performance can be severely degraded by network speed and b/w availability. And there is nothing you can do in the application and database layers to address performance issue at the network level in this case - your code's performance is simply at the mercy of network performance. With a single glaring fact - network performance is continually degrading. All the time. Always. Until it is upgraded. When the performance degradation starts all over again.
    If the tables are not small (few 1000 rows each) and row volumes static, I would not consider doing a heterogeneous join. Instead I would rather go for a materialised view on the Oracle side, use a proper table and index structure, and do a local database join.

  • Inner join on Buffred table and not buffered table.

    Hi guys,
       Can you suggest me how can i write select query using inner join on buffered table and not buffered table. i written like this. is it right?
    SELECT a~vbeln                         
       FROM likp AS a INNER JOIN tvko AS b
        ON avkorg = bvkorg BYPASSING BUFFER
      INTO TABLE itab_likp
      WHERE vbeln = s_vbeln.              

    Hi Raj ,
    Please find below my Commentes :
    1. When you use "Bypassing buffer" clause in Select statement , the data what is there in the buffer of application sever is always ignored and Read is performed from the Physical database always. This Clause is advisable where you require realtime data (Not recommended generally in reporting)
    2. It is advisable that you should not use small table in the innerjoin with big table. In the query you have written there are 2 tables:- LIKP and TVKO outof which TVKO is a master table containing very few records than LIKP (Contains huge data for Delivery header).
    So my recommendation will be : -
    1. Eliminate the "Bypassing Buffer" clause from your Query
    2. Break the select query into 2 select queries breaking the join and with some ABAP logic populate the Internal table "itab_likp".
    This will be optimum way inwhich you can write the select query for your senarion. Also Ensure that indexes are being used for better selectivity.
    Hope this will help to you.

  • Difference between client dependent table and client independent table

    hi all,
                  i m new in sap pls tell me the difference between client dependent table and client independent table.
    tell me in detail.
    thanks and regards
      vikas saini

    Client dependent Means if you create that data in one client is limited to that client only and it is not accessable in other clients
    Like SAP SCRIPTS and STD texts data
    where as Client Independent means the data if you create in one client that is available in that as well as in other clients
    Like SMARTFORMS, All dictionary Objects data and Repository objects data like Programs, Fun modules, tables etc..
    There is no specific reason behind why scripts are client dep[endent and smartforms are client independent!!!
    As for SAP -- Scripts are called client dependent because if you create client in say,200 it would be available in that only.If you want to test the script in client 300 then it won't be there,you will have to go to transaction se71 in 300 .Then Utilities-> Copy from client.Give the source as 200 & form name(i.e. script name) & copy.
    Few more reasons why....? Please read below:
    SAPscript technology is based on a mainframe product from the 1980s.SAPscript forms have always been -- under the hood -- relatively passive objects, with minimal embedded logic. These forms were designed to be driven and controlled by ABAP programs, much in the way ABAP programs read in database tables to produce reports;
    if you ever download a SAPscript form (e.g., via utility program RSTXSCRP), and look at the portable text file it produces you'll see what I mean.
    Many text objects (e.g., invoice header texts) are bound directly to documents which are client-dependent, so it makes sense for these text objects to also be client-dependent. From a complexity standpoint, SAPscript forms are close enough to these text objects where I can see how it made sense at the time to make them client-dependent too.
    What is client dependent and Client Independent

  • JOINING local table and DB Link table performance

    Hellou everybody,
    can somebody tell me how it is work in Oracle DB when you want to join some local table and DB Link table for example:
    Select a.col1, b.col2
    from local_table a , [email protected] b
    where a.key = b.key;
    and when I use DRIVING_SITE hint and the all data from remote table is transforming (pushing) into my DB (in some temporar space), it will transform although Indexes from remote table?
    So when I use some JOINS, this joins will be fast enought? Will they using remote table indexes to query the data or not?
    Thank you for response.

    user10708026 wrote:
    Is it as simple as:No. Use:
    UPDATE  habitationalsupplement live_hab
       SET  primaryheatingapparatuscode = (
                                           SELECT  hab_backup.primaryheatingapparatuscode
                                             FROM  [email protected] hab_backup
                                             WHERE hab_backup.itemobjectid = live_hab.itemobjectid
                                               AND hab_backup.itemversionnumber = live_hab.itemversionnumber
      WHERE (itemobjectid,itemversionnumber) IN (
                                                 SELECT  hab_backup.itemobjectid,
                                                   FROM  [email protected] hab_backup

  • How to synchronize between DHCP binding table and DHCP snooping table ?

    I clear DHCP snooping table with command "clear ip dhcp snooping binding " , and PC can't communicate with other any more. So how to synchronize between DHCP binding table and DHCP snooping table ?
    dhcp-test#sh ip dhcp bind
    IP address Client-ID/ Lease expiration Type
    Hardware address 0100.1125.353c.25 Mar 02 1993 01:05 AM Automatic 0100.1438.059f.85 Mar 02 1993 12:01 AM Automatic
    dhcp-test#sh ip dhcp snooping binding
    MacAddress IpAddress Lease(sec) Type VLAN Interface
    Total number of bindings: 0

    ip dhcp snooping binding mac-address vlan vlan-id ip-address interface interface-id expiry seconds
    Add binding entries to the DHCP snooping binding database. The vlan-id range is from 1 to 4904. The seconds range is from 1 to 4294967295.
    Enter the above command for each entry that you add
    To delete the database agent or binding file, use the no ip dhcp snooping database interface configuration command. To reset the timeout or delay values, use the ip dhcp snooping database timeout seconds or the ip dhcp snooping database write-delay seconds global configuration command.To renew the database, use the renew ip dhcp snooping database privileged EXEC command.

  • Whats the link between Pur. Tables and KONH & KONP tables

      Whats the link between Pur. Tables i.e EKKO EKPO etc and KONH & KONP tables?
      Link B'tween KONH, KONP & EINA, EINE Tables?
      Link b'tween the LFA1 Table and EINA, EINE Tables?
      Link b'tween the LFA1 Table and KONH, KONP Tables?
    Pls reply guys

    Hi Imran,
    EKKO gives you the Header data of the purchasing documents (Vendor , Dates, Etc)
    EKPO gives the item Data (The materials ordered, Qty of each material etc)
    KONP & KONH store the condition records used for price calculation
    KONH is the header data
    KONP is the item data
    EINA &  EINE -> These are Purchasing info records Used in source of supply determination & price calculations , the Condition record number for pricing is obtained from EINA & EINE
    EINA is for Purchase org level data
    EINE is for vendor level data
    The link to LFA1 is the vendor master data & while picking up the price you can have different price for different vendor .
    Hope you find it useful.
    Kindly reward helpful answers
    Best regards,

  • Difference between a value table and a check table?

    What is the difference between a value table and a check table?

    Value Table
    This is maintained at Domain Level.
    When ever you create a domain , you can entered allowed values.   For example  you go to Domain   SHKZG - Debit/credit indicator.  Here only allowed values is H or S.
    When ever you use this Domain, the system will forces you to enter only these values.
    This is a sort of master check . To be maintained as a customization object. This mean that if you want to enter values to this table you have to create a development request & transport the same.
    Check table
    For example you have Employee master table & Employee Transaction table.
    When ever an employee Transacts we need to check whether that employee exists , so we can refer to the employee master table.
    This is nothing but a Parent & Child relationship .  Here data can be maintained at client level , no development involved.
    As per DBMS what we call foregin key table, is called as check table in SAP.
    Reward points for the answer

Maybe you are looking for