Left outer join usage in obiee BMM layer

Hi All,
We lately started using left outer join in our bmm layer , to meet the requirement expectation .
problem : We have two tables  Fact A , Dim B . There is an join int_id column to join them . Problem is... in table Dim B , we have 3 millions rows of Int_id and in fact table it is loaded for only data available(1 million rows).
Due to this we are dropping rows  in the report ..as it is only getting data where fact.int_id = dim.int_id. So we used left outer join to solve to one particular report .(we know we can do ETl to load dummy int_id and make it null , but it is huge effort ..so we did left outer join)
These days , same kind of reports are in requirement . if i keep on doing same left outer join to meet the requirement in BMM layer ? is there any disadvantages due to this ? any performance degrade due to this ? please throw few lines on left outer join and its usage ?
Thanks,
Sri

Remodel your tables that might be a partition or any other way and follow in BI as per your new model.
Simply: Go for ETL kind of solution

Similar Messages

  • Left outer join (business model and mapping layer)

    hi, experts!
    !http://img693.imageshack.us/img693/9642/joinp.png!
    if there are a dimension table and a fact table, I wanna have a left join from dimension to fact (select * from dimension a left outer join fact b on a.key = b.key;)
    is the selection for cardinality correct?
    And I only change TYPE to "Left Outer" ?
    however, I tested on this setting.
    if I only select the dimension , 15xx records returned.
    if I select the dimension and fact, 14xx records returned.
    any wrong setting ?

    Just to make I'm getting your situation correct, are the following true:
    --you've got a total of 15 records in your dimension table
    --you want to see every dimension record, regardless if there is any fact records that have that dimension
    --if a fact record exists, it must have one of the 15 values in your dimension table.
    --a single dimension record can match to multiple fact records
    If those statements are true, then you want your dimension cardinality set to 1 and your fact cardinality set to N.
    Then you'll want to do the left outer join like you mentioned and you should be set.
    -Joe

  • Left Outer Join in Logical Layer

    Dear Gurus,
    I have report like this:
    Absent
    3 31
    Month-Name
    Jan 1 2
    Feb
    March
    I use Master Date as dimension and Transactional Absent as fact
    How if I want to show the date (from 1 to 31) even if there's no transaction?
    How to use driving table and join in the business logical?or there is another alternatif?
    Please help
    Regards
    Maria

    Hi,
    If you want to show all the transactions for the month, even if there is no transactions then you need to use the outer joins present in the BMM layer. Left, right and full outer joins according to your requirement. Driving tables are used when the number of the data is low to pick up the table.
    Hope this helped/ answered.
    Regards
    MuRam

  • Left Outer Join in BMM layer

    Hi All,
    while building the RPD we have to use the join as Left outer join for two tables , we added join condition in BMM layer like evey table we have three tabs like General,Column Maooing and Content.
    In General tab we have to sections like map to these tabls and Joins right. In the Join Scetion we add join conditions for two tables as left outer join.
    Now i need to move the first table as second table and wise versa , how i can?? move these two tables
    Thanks for your help.

    Hi User,
    You will have to remove and add the table as there is no option to reorder the tables.
    Rgds,
    Dpka

  • Left Outer Join In OBIEE

    Hi,
    I have two Oracle tables in the physical layer: a fact table and a dimension table.
    The fact table (FACT_TBL) like this:
    CURR_MTH | PREV_MTH | CURR_GRADE | PREV_GRADE | CITY | VALUE
    Jun | May | B | A | X | 5
    Jun | May | A | A | Y | 10
    Jun | May | C | C | X | 15
    Jun | May | D | C | Y | 20
    And the dimension table (GRADE_TBL) like this:
    GRADE | GRADE_NAME
    A | A
    B | B
    C | C
    D | D
    I joined those two tables above in the physical layer using GRADE field. Then, I created a business model using those two tables. I want to create a 4x4 matrix report with PREV_GRADE as the first column and the CURR_GRADE accross to the right like this:
    CURR_MONTH PROMPT = Jun
    PREV_MONTH PROMPT = May
    CITY PROMPT = X
    PREV_GRADE | A | B | C | D |
    A | (null) | 5 | (null) | (null) |
    B | (null) | (null) | (null) | (null) |
    C | (null) | (null) | 15 | (null) |
    D | (null) | (null) | (null) | (null)|
    The problem is that I couldn't show all grade (A to D) in the PREV_GRADE column in that table. Every time I filter the CITY in the prompt to X, I always get only A and C. The B and D rows are suppressed. How do I achieve the left outer join that I wanted above? Thanks a lot for the help.

    hi,
    this can be done in BMM layer.
    select the required BMM model. Right click and select "Buisness Model Diagram" and "whole diagram" .
    now double click on the joining link and specify the type of join here. (assuming you have used "New Complex join" to join these tables).

  • Left outer join in presentation layer

    Could I do left outer join in presentation layer? I have 2 reports. They both have a common column - "Month". The first report have columns - "Month" and "Measure1" and the second report have columns - "Month" and "Measure2". I would like to put them together so the final report would have "Month", "Measure1" and "Measure2".
    Thanks,
    Ted

    Ted,
    It is not clear to me, why you want to do an outer join. If the dimension Month is shared by both "Measure1" and "Measure2", then it will work without any problem (assuming the RPD is configured correctly).
    An outer join comes into play if you need to preserve the dimension records. Let's assume you want to run an analysis like "Show me all months were there was no sales". In plain SQL you would to do a left-outer join between the Month dimension table and the sales fact table. If you want to know how this can be achieved in OBIEE you might want to have a look here [Outer join style report - OBIEE 10g|https://forums.oracle.com/forums/message.jspa?messageID=9805768#9805768]. This should be still valid for OBIEE 11g.
    Best regards,
    Peter

  • Apply filter before Left Outer joins in OBIEE.

    Hi Experts,
    I have an user requirement where a filter need to be applied before the Left outer join applied on the OBIEE generated query.
    But obiee normally applies the filters on the resulted data after the Left outer join applied which eliminates some required data.
    Is there any way to achieve this at the RPD level.
    Thanks
    Swami

    Swam,
    your syntax for sql is not correct.
    you are doing outer join and filter I am not sure what you are trying to achieve here
    assume T1 is fact table and T2 is time dimension
    T1 left outer T2 means you are trying to pull all the records from fact irrespective of the date filter!!
    you will see all the records.
    Please manually write the Sql and we have lot of ways  to force that in to OBIEE.
    Thanks
    NK

  • Why left outer join is happening between two queries

    Hi, I have 2 facts in my request. So 2 queries are getting generated D1 and D2. But OBIEE is doing a D1 left outer join on D2. I am not understanding from where this left outer join is coming. I want an inner join. Can anybody help.
    thx,
    parag

    Hi Parag,
    Can you please check it in your BMM layer column mapping and double click you join here you can find type option. Please change to type inner.
    Go--> BMMLayer--> double click column Joins--> Type--> you can change what type you want.
    Award Points it is useful.
    Thanks,
    Satya

  • Outer join style report - OBIEE 10g

    Hi All,
    I have a requirement to generate a report for product & sales. I have two dimensions and various fact data elements.
    Some products may not be sold on a month but still i want to display them in the report with 0 value. I have tried this by creating a Left outer join in RPD, since we are using some other dimension in the fact calculation (calculated column) so that also comes in to the left outer join group and that mess with the results.
    So am looking for the better approach to bring the results through answers. Here is the data and expected results
    Data
    Product | Month | Sale | Margin
    Fridge | May | 100 | 20%
    Coolers| May | 50 | 4%
    Laptop| Jun| 300 | 15%
    Now am filtering the report for the month of May, my results should be looks like
    Product | Sale | Margin
    Fridge | 100 | 20%
    Coolers|50 | 4%
    Laptop| 0 | 0%
    Can anyone provide a solution for this ?
    Thanks,
    Ugser

    One possible solution is based on the fact, that OBIEE is combining (=outer joining) measures from two different fact tables by their commonly shared dimensions. What you have to do is:
    Physical layer:
    - create a new dummy fact table in the physical layer (e.g. using a view like Select 1 from dual;)
    - join all required dimension tables to the dummiy fact table using a complex foreign key. Make sure it evaluates always to true, e.g. 1=1.
    BMM:
    - create a new logical fact table for the dummy fact and join all required logical dimension tables to it using complex joins. Set the levels in content tab of LTS same way as for your other fact.
    Presentation layer:
    - expose the dummy fact column
    Answers:
    - Drag the dummy fact into your report. You might want to hide it because for a normal user it is confusing and meaningless since it will always show 1.
    - Filtering should work fine now.
    The dummy fact column will cause OBIEE to create a cartesian join, i.e. all combinations of dimension attributes used in the report will be created. Then the result of the second fact (in your case sales) will be added. In your example it will create a record for each Month for each Product. Sales and Margin will be only added for those Month and Product combinations where there are data in the sales fact.
    Hope this helps.
    Cheers,
    Peter

  • Display all dates between date range (Time Dimension left outer join Fact)

    All,
    I have done some searching around this issue but within all the posts regarding date variables, date prompts and date filtering I haven't seen one exactly answering my issue (maybe they are and I just dont have my head around it correctly yet).
    My report requirement is to allow a user to select a start day and an end day. The report should show all activity between those two days - AND display 0/null on days where there is no activity. That second part is where I am getting hung up.
    The tables in question are:
    TimeDim
    EventFact
    CustomerDim
    My BMM is setup as follows:
    TimeDim left outer join EventFact
    CustomerDim inner join EventFact
    If I run a report selecting DAY from TimeDim and a measure1 from EventFact with day range 1/1/2010 - 12/31/2010 .. I get a record for every day and it looks perfect because of the left outer join between TimeDim and CustomerDim.
    But .. if I add in a field from CustomerDim, select TimeDim.DAY, CustomerDim.CUSTNAME, EventFact.MEASURE1, OBIEE only returns records for the days that have EventFact records.
    This is due to the fact that the TimeDim is still outer joined into EventFact but adding in CustomerDim makes OBIEE setup an inner join between those tables which then causes only data to be returned where EventFact data exists.
    There is a way around this in this simple case and that is to define the relationship between CustomerDim and EventFact as an outer join as well. This will give the desired effect (but an outer join between these two tables is not the true relationship) and as I add additional dimensions and add additional logical sources to a single dimension in the BMM it gets complicated and messy.
    Ive also messed with setting the driving table in the relationship, etc.. but it has not given the desired effect.
    Has anyone ever encountered the need to force display all dates within a specfied range with a fact table that may not have an entry for every date?
    Thanks in advance.
    K
    Edited by: user_K on Apr 27, 2010 11:32 AM

    It worked!!!* Even my time drill downs and date based filtering still work!
    That is awesome. Never would have thought of that intuitively.
    Now, just need a little help understanding how it works. When I run my report and check the logs I can see that two queries are issued:
    Query 1: Joins the fact table to all the associated dimensions. I even changed all the relationships to inner joins (which is what they truly are). And calculates the original measure. If I copy and paste this query into sql developer it runs fine but only returns those rows that joined to the time dimension - which is what was happening before. It is correct but I wanted a record for every time dimension record.
    Query 2: Looks like the following:
    select sum(0)
    from timedim
    where date between <dateprompt1> and <dateprompt2>
    group by month *<--* this is the time dimension level specified in Query 1, so it knows to aggregate to the month level as was done in query 1
    Final Question: So what is OBIEE doing ultimately, does it issue these two requests and then perform a full outer join or something to bring them together? I couldn't see anywhere in the log a complete query that I could just run to see a similar result that I was getting in Answers.
    Thanks for all the help .. Id give more points if I could.
    K

  • Left outer join 3 tables with where-statement

    Hi folks,
    I hope you can understand (and maybe solve) my problem.
    Generally I try to left outer join three tables. The third table is used for a WHERE-statement.
    The three table structures are the following:
    table 1 (user)   
    user1 | key
    table 2 (detail)  
    key | ID
    table 3 (header)
    ID | user2                 
    ...and I want to achieve the following structure (as example filled with data):
    user | key | ID
    |-----|----
    xy    | a    | 001
    xy    | b    | #
    z     | b     | #
    The clue ist the usage of the third table. I need the table to set user1 and user2 equal (WHERE) but there are two problems:
    1) Obviously I can't left outer join two tables with each other. In this case I already used the 'key' of table 1 to join it with the 'key' of table 2. So I can't left outer join the 'ID' of table 2 with the 'ID' of table 3. Error message that I can only left outer join a table once. Any proposals?
    2) I have to include a WHERE to equal user1 with user2. But I am not allowed to use the user2 from table 3 because of the left outer join.
    I tried this coding:
    SELECT auser1 akey b~id INTO TABLE itab FROM ( table1 AS a
      LEFT OUTER JOIN table2 AS b ON akey = bkey )
      LEFT OUTER JOIN table3 AS c ON bID = cID )
      WHERE auser1 = cuser2.
    I would really appreciate your help.
    Regards
    MrclSpdl

    IF you want to join a DB table with an internal table, you need to use the 'FOR ALL ENTRIES' statement.
    select dbfields
    into table itab2
    from dbtab
    for all entries in itab
    where dbfield1 = itab-field1.
    This will get you a second internal table with all the corresponding data for the first selection.  You can then join them with a loop through the first table and a read table on the second table (for 1 - 1 relation) or a nested loop statement on both tables (for 1 - N relation).  Make itab a hashed table when using read table with key, use a sorted table if you need to loop without key access.
    Regards,
    Freek

  • Update Statement with left outer join

    hi,
    i have to update a column in table "a" from table "b" and both of them joined with left outer join
    How can I do this
    Thanks in Advance

    Please consider the following when you post a question. This would help us help you better
    1. New features keep coming in every oracle version so please provide Your Oracle DB Version to get the best possible answer.
    You can use the following query and do a copy past of the output.
    select * from v$version 2. This forum has a very good Search Feature. Please use that before posting your question. Because for most of the questions
    that are asked the answer is already there.
    3. We dont know your DB structure or How your Data is. So you need to let us know. The best way would be to give some sample data like this.
    I have the following table called sales
    with sales
    as
          select 1 sales_id, 1 prod_id, 1001 inv_num, 120 qty from dual
          union all
          select 2 sales_id, 1 prod_id, 1002 inv_num, 25 qty from dual
    select *
      from sales 4. Rather than telling what you want in words its more easier when you give your expected output.
    For example in the above sales table, I want to know the total quantity and number of invoice for each product.
    The output should look like this
    Prod_id   sum_qty   count_inv
    1         145       2 5. When ever you get an error message post the entire error message. With the Error Number, The message and the Line number.
    6. Next thing is a very important thing to remember. Please post only well formatted code. Unformatted code is very hard to read.
    Your code format gets lost when you post it in the Oracle Forum. So in order to preserve it you need to
    use the {noformat}{noformat} tags.
    The usage of the tag is like this.
    <place your code here>\
    7. If you are posting a *Performance Related Question*. Please read
       {thread:id=501834} and {thread:id=863295}.
       Following those guide will be very helpful.
    8. Please keep in mind that this is a public forum. Here No question is URGENT.
       So use of words like *URGENT* or *ASAP* (As Soon As Possible) are considered to be rude.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • BI 7.0 Infoset - Infocube - Left outer join - query

    Hi Expert,
    A infoset contain Infocube and ODS, linked with left outer join, common fields are PO,PO item.  PO account assignment ODS have three keyfields: PO Doc.,Item,account Assignment  .
         PO  Infocube                                     <b>PO Account Assignment ODS</b>
    PO       PO item  Amt<b>PO Doc.  Item   AccAssignment         Cost object</b>
    1000    10            230  <b>1000       10        1                          CC1</b>
    1001    10            250  <b>1002       10        1                          CC1</b>
    1002    10            150  <b>1002       10        2                          CC2</b>
    in BEx result are like this:    
    1000    10            230      1     CC1
    1001    10            250      #      #
    1002    10            150      1     CC1
    1002    10            150      2     CC2 ( amount only duplicated)
    The issue was that amount gets duplicated. It only occurs if PO has more than one account assignment.
    In report, we want show like this
    1000    10            230       1       CC1
    1001    10            250       #        #
    1002    10            150       1       CC1
    1002    10            #        2       CC2
    Any suggestion or input to overcome this issue?
    Thanks,
    Saran
    Message was edited by:
            Saravanan K

    Hi,
    did you solve your problem? because I have the same issue right now: the left outer join doesn't seem to do its job.
    Let me know if you have found a solution, it would be appreciated.
    have a nice day,
    Dominic

  • BI Infoset left outer join  (NW04s)

    I created an Infoset using a left outer join for infoproviders:
    - 0FIGL_O10 (GL transaction figures - DSO )
    - 0CCA_C03 (CCA Statistical key figures - CUBE)
    DSO 0FIGL_O10 is the left table with joins on:
    - 0COSTCENTER
    - 0FISCPER
    The data set returned by Infoset appears to be based on a SQL using an
    inner join.
    This appears to be a bug.
    We are on BI 700 SP 15.

    Hi Raynald - I did a demo with few records and it works fine for me.  We are on 7, SP14.

  • Left Outer Join Not working in BI 7.0 Infoset

    Hi All,
    I am working on BI 7.0. I have to create a report where I have to display the Target values from a target DSO against the transactional data (Operational data).
    I have a DSO where for a “subteam” value target has been set up on different KPIs.
    In the Info Cube, I have transactional data on daily basis per “subteam”. I have to show the actual and target values.
    I have created an Info Set using Target DSO and Daily operational cube, so that I should able to compare the target and actual values of KPIs, for all the “subteam” values (From DSO, irrespective of whether the data is available in cube for those sub team).
    I have used Outer Left Join in the Info set (DSO on left side), but I am unable to see the desired results. It is working just like an inner join.
    Any Idea why the Outer Left Join is not working? The DSO has only one fey field called “subteam” on which I have set outer left join.
    Regards,
    Amit

    Hi,
    did you solve your problem? because I have the same issue right now: the left outer join doesn't seem to do its job.
    Let me know if you have found a solution, it would be appreciated.
    have a nice day,
    Dominic

Maybe you are looking for

  • Error When Deploying a planning application

    I've prepared a planning application in hyperion 9.3; Validation is successful but when deploying the application deployment fails with the message "Action aborted. Please check the Job Status for results." Job status shows: =========================

  • Error while assigning the Position through Hiring

    Dear all, I am getting error "Time constraint" while assigning a newly created Position. it says "Position cannot be assigned to two employees". However when I checked through PO13 no person is assigned to that position. so please suggest. Regards, K

  • Last chance saloon really. Absolutely fed up.

    I swore I wasn't going to make another thread, but I just can't take it anymore. As some of you know here, we have had broadband problems for over a month now and nothing is getting resolved. Constant Home Hub reboots through morning, noon and night.

  • My app crashed and now I constantly get Photoshop quit unexpectedly even after reinstall...what to do?

    Was working on Lightroom and bringing an image into PS when it crashed and I constantly got "Photoshop quit unexpectedly", tried to reinstall a clean install also removing all preferences with no luck. For some reason I still get "Photoshop quit unex

  • Pointer to Hand

    How do I get the pointer to change to a hand when the user rolls over a button, like normal web page viewing.  In my project the point just stays the same....a pointer.  Thanks