One to one join, complex join

How can I make a one to one join in physical layer??
And, when can I use complex join in Physical layer???
Thanks in advance

In physical layer it is simple join when you join two objects like fact and dimension. You can change the cardinality of the join in BMM by specifying the relationship(like one-one, one - many and so on)
In simple join it is always an equal to condition. You will not be able to change the condition b/w joins
The complex join can be used when you are using like a between, greater than or less than operator joins between two columns. It is not recommended to use a complex join as it impacts performance
Hope it helps
Thanks
Prash

Similar Messages

  • One to One join

    Hello All,
    I have one doubt...
    Let us say we have two table A and table B in my dataware house
    Both have One to one relation ship
    how come we can implement in RPD...
    1st step import these table
    2nd step do a foreign key join in Physical layer
    3rd import those two table in BMM
    4th BMM do a complex join
    5th set cardinality as 1 to 1
    Please let me know if i am correct...
    can't we do 1 to 1 mapping in my Physical.....

    Hi All,
    Thanks for help but i still have doubt,
    Let us take my example where there is Table A and Table B
    In siebel these table have one to one relationship.
    Now when i imported in my physical layer, as per blog which has been mentioned i should go with foreign key join, Right or Wrong ?
    If i am right then I import those table in BMM and do a complex join, and will not set the cardinality right or worng ?
    if I am right then how should OBI sever know it s one to one join.....
    Please let me know....

  • How does one join the CS SDK Prerelease Program?

    How does one join the CS SDK Prerelease Program? We're already on the ID SDK and CS Family Prerelease programs. Who at Adobe can we contact for this?

    Hi,
    please send me a private message.
    Best regards,
    Hallgrimur

  • More than one join condition for 2 tables in obiee

    Hello,
    I am using obiee 11g.
    There are 2 tables tableA and tableB where the join condition is like (tableA.col1=tableB.col1) or (tableA.col1 is null and tableB.col1 is null)
    where should i do these type of joins.
    I tried putting in physcial layer->f(x) but giving error like here only columns an d opertaors are allowed.
    Thanks

    ok here it goes.
    I have a tableA with columns col1(pk),col2 and other columns
    I have tableB with columns col1(pk),col2..Only these 2 columns.
    Now distinct tableA.col2 values are put in tableB.col2. For those distinct values i have put the tableB.col1 values.
    Now tableA.col2 as well as tableB.col2 can be null beacuse there may be null values in tableA.col2.
    Now in tableB i have added one more row which has col1 as value and col2 as null.
    Now when in physical layer when i do tableA.col2=tableB.col2 i dont get the null values.
    What i want is whenever the tableA.col2 and tableB.col2 is null then take tableB.col1 for those vales.
    So when i query i do
    select * from tableA,tableB where
    ((tableA.col2=tableB.col2) or (tableA.col2 is null and tableB.col2 is null))
    What i want is when i do a join i should be able to give this OR condition in rpd thats it.
    because when i do in where clause of content tab it goes like a AND condition and not OR.
    Thanks
    Edited by: user123 on Jul 5, 2011 1:57 PM

  • How does one "join" a community?

    I'm trying to personalize my home page, and to add to my "Places," it says to "Join a community."
    How do I accomplish that?

    I wonder why different terminology is used?
    In my opinion, the "Join" should be changed to "Follow" or the "Follow" should be changed to "Join."
    As it is, it's about as clear as mud.

  • Can one join a 2011 Mini to an older model, plus external HD?

    I currently have the 2006 Mac Mini connected by firewire to a La Cie external hard drive.
    I would like to know if the new Mini can be connected to the existing mini -- and by extension the firewire HD --
    Also would i need to purchase a separate edition of Lion to upgrade the system on the 2006 Mini?
    thanks for helping....

    Why not just use a USB hub?

  • How does one join the dev team?

    Hi,
    I was looking around the wiki and did some keyword searches for dev and developer, and I know the wiki talks about becoming TUs.  A recent thread mentioned several times that the devs were swamped.  Is it silly to ask if it's possible to add more devs?
    Thank you,
    Rob

    Generally it's an invite-only process.  AFAIK, we currently don't have any kind of formal application process - I became a dev because I was noticed as being an energetic TU, IIRC.
    If you want to become a developer, and you feel you have an impressive 'resume', I suppose you could email Aaron and ask to be inducted - worst that could happen would be he says "try to establish yourself in the community first - become a TU" or something like that.

  • RE: Complex Join

    Hi Experts,
    I have few questions regarding complex joins
    1> First when we import the tables into the Physical layer we will do the FK Joins for the tables according to our requirement then in BMM layer we will create new business model next again why we have to make complex join in BMM layer already there is joins between the tables in physical layer which scenarios we have to make the Complex join if we won't do the complex join what will happens.
    2> Also if we do FK join in the place of complex join in BMM layer what will be the result.
    Thanks in Advance,

    Hi,
    we have two joins in OBIEE one is foreign key join and other one is complex join.Mostly 99% cases we use foreign key join in physical layer.we use complex join in phycical layer mostly in three scenarios.
    1)when there is extended join conditions.
    2)when we join key column of one table to non key column of other table.
    3)when the operator is other than equal to operator.
    In these 3 situations we can use complex join in physical layer.
    Next one is we have already joins in physical layer then what is the need to create complex joins in BMM layer right.
    The answer for this question is whenever user runs a report that will generate logical sql query our OBIEE understands only logical sql query this logical sql query generated based on the logical joins in BMM layer.
    Based on this logical joins only it will create most optimized sql query.And another reasons for creating logical joins is
    if we want to specify driving table it is possible only thriugh complex join in BMM layer.
    and if we want to specify type of join it is possible only thriugh complex join in BMM layer
    and if we want to specify cordinality it is possible only thriugh complex join in BMM layer
    and another one is my tool is not able to identify facts and dimensions because it has no intelligence,we need to incorporate the intelligence by giving logical joins only it identifies the facts and dimensions.
    so we have to create logical joins in BMM Layer..
    Give me Like,,if you aresatisified with my post.
    Thanks,
    Sai Pelluri

  • Complex join and f.k. join

    Hi Team,
    In which cases we will go complex join in physical layer and f.k. join BMM layer.
    thanks,

    In the BMM layer its recommended to use Complex joins always, as in this case obiee will dynamically select
    which Logical table sources to join together from the Logical tables, and put some intelligence in choosing this source. a FK join here would mean that obi has to always use the table sources specified even if it is not the optimum one.
    Complex join is used in the physical layer when there is no direct foreign key - primary key relationship between tables e.g. >,< is required to join instead of =.

  • Joining external tables

    In a scenario where i have
    1. external table EXT (containing more than 20 million records)
    2. dimension table1 DIM1
    3. dimension table DIM2
    we have two mappings,
    First mapping joins EXT,DIM1,DIM2 where EXT.REC_TYPE=1
    other mapping joins EXT,DIM1,DIM2 where EXT.REC_TYPE=2
    both of the above mappings do a full table scan on external table EXT, is there any way i can avoid full table scans.
    or just do full table scan once and let other mapping use that result.

    ... an alternative is to build one mapping, join dim1 and dim2 with the external table and put a splitter behind. One outgroup for the rec_type=1 records and one for rec_type=2.
    You can process them after this in this one mapping or if it is to complex load the records in two different tables. From there you can build individual mappings to process them.
    Than you have only one join and one full table scan on the external table.
    Regards,
    Detlef

  • Join Between PO and Requisition

    Hi,
    I am trying to do a report in Disco (4.1.48) on all the Open Po's associated Req with the Req Amount and Amount receipted.
    I can get the info for the Req fine and the info for the PO's fine.
    But I cannot get the join between the Po and Req to work so all the data pulls onto one sheet.
    I keep getting an error "Join configuration cannot resolved as one detail folder uses non aggregated items"
    I have a Join between Po Distributions All.Req Distribution Id and Po Req Distributions All.Distribution Id
    Any Help Greatly appreciated
    Mick

    Hi,
    Personally, I would avoid custom folders. It sounds as though you are using a master and two detail folders in your report, and you are using an aggregation function (e.g. SUM) on an item in one of the detail folders. You may be able to resolve this by changing (using Discoverer Administrator) the join on the other detail folder to be a one-to-one join.
    Rod West

  • Dynamic SQL Joining between tables and Primary keys being configured within master tables

    Team , Thanks for your help in advance !
    I'm looking out to code a dynamic SQL which should refer Master tables for table names and Primary keys and then Join for insertion into target tables .
    EG:
    INSERT INTO HUB.dbo.lp_order
    SELECT *
    FROM del.dbo.lp_order t1
    where not exists ( select *
    from hub.dbo.lp_order tw
    where t1.order_id = t2.order_id )
    SET @rows = @@ROWCOUNT
    PRINT 'Table: lp_order; Inserted Records: '+ Cast(@rows AS VARCHAR)
    -- Please note Databse names are going to remain the same but table names and join conditions on keys
    -- should vary for each table(s) being configured in master tables
    Sample of Master configuration tables with table info and PK Info :
    Table Info         
    Table_info_ID    Table_Name    
    1        lp_order    
    7        lp__transition_record    
    Table_PK_Info        
    Table_PK_Info_ID    Table_info_ID    PK_Column_Name
    2                1    order_id
    8                7    transition_record_id
    There can be more than one join condition for each table
    Thanks you !
    Rajkumar Yelugu

    Hi Rajkumar,
    It is glad to hear that you figured the question out by yourself.
    There's a flaw with your while loop in your sample code, just in case you hadn't noticed that, please see below.
    --In this case, it goes to infinite loop
    DECLARE @T TABLE(ID INT)
    INSERT INTO @T VALUES(1),(3),(2)
    DECLARE @ID INT
    SELECT @ID = MIN(ID) FROM @T
    WHILE @ID IS NOT NULL
    PRINT @ID
    SELECT @ID =ID FROM @T WHERE ID > @ID
    So a cursor would be the appropriate option in your case, please reference below.
    DECLARE @Table_Info TABLE
    Table_info_ID INT,
    Table_Name VARCHAR(99)
    INSERT INTO @Table_Info VALUES(1,'lp_order'),(7,'lp__transition_record');
    DECLARE @Table_PK_Info TABLE
    Table_PK_Info_ID INT,
    Table_info_ID INT,
    PK_Column_Name VARCHAR(99)
    INSERT INTO @Table_PK_Info VALUES(2,1,'order_id'),(8,7,'transition_record_id'),(3,1,'order_id2')
    DECLARE @SQL NVarchar(MAX),
    @ID INT,
    @Table_Name VARCHAR(20),
    @whereCondition VARCHAR(99)
    DECLARE cur_Tabel_Info CURSOR
    FOR SELECT Table_info_ID,Table_Name FROM @Table_Info
    OPEN cur_Tabel_Info
    FETCH NEXT FROM cur_Tabel_Info
    INTO @ID, @Table_Name
    WHILE @@FETCH_STATUS = 0
    BEGIN
    SELECT @whereCondition =ISNULL(@whereCondition+' AND ','') +'t1.'+PK_Column_Name+'='+'t2.'+PK_Column_Name FROM @Table_PK_Info WHERE Table_info_ID=@ID
    SET @SQL = 'INSERT INTO hub.dbo.'+@Table_Name+'
    SELECT * FROM del.dbo.'+@Table_Name+' AS T1
    WHERE NOT EXISTS (
    SELECT *
    FROM hub.dbo.'+@Table_Name+' AS T2
    WHERE '+@whereCondition+')'
    SELECT @SQL
    --EXEC(@SQL)
    SET @whereCondition = NULL
    FETCH NEXT FROM cur_Tabel_Info
    INTO @ID, @Table_Name
    END
    Supposing you had noticed and fixed the flaw, your answer sharing is always welcome.
    If you have any question, feel free to let me know.
    Eric Zhang
    TechNet Community Support

  • One DIMENSION, Two FACT Tables - One WEEKLY grain, one DAILY grain

    All the OBIEE gurus, thanks for checking out this post.
    Background: We have a common DIMENSION referencing two FACT tables having different granularity.
    DIM = Customer Dim
    FACT = Forecasting (Weekly granularity)
    FACT = Sales (Daily granularity)
    There is a need to report from the Customer Dimension table AND access the Forecasting FACT (weekly grain) & Sales FACT (daily grain).
    Example of query is listed below:
    Give me customer = 'ABC' and the forecast and sales for a specific time period.
    What will be the best way to handle something like this? I have seen examples of handing multi-fact table access in OBIEE but the granularity of both the FACT tables is different (weekly vs. daily).
    Any help with an example is greatly appreciated.
    Thanks,
    Sunshine

    Hi.
    This one:
    Joining different level aggregation measures together into a single logical fact table
    http://108obiee.blogspot.com/2009/07/joining-different-level-aggregation.html
    Regards
    Goran
    http://108obiee.blogspot.com

  • Table design one-to-one relation

    For a big table such as this: PROJECT_TABLE which contains 75 columns. But, only 40 columns are frequently searched against, i.e., the user enter some criteria on a web page, then start the search. The rest 35 columns are used on as-needed basis, i.e., only if the user want to view a specific record (in the returned search result). I am afraid that as the records grow, someday, the search will slow down (due to the large number of columns in the table).
    So, I plant to break the PROJECT_TABLE into two separate tables PROJECT_PARENT (project_id) and PROJECT_CHILD (project_id) and reference them by one-to-one relation. By this way, when the user conducts the search, it will be done against the PROJECT_PARENT table; while when user wants to view a specific record, it will then retrieve the data by using one-to-one join of the two tables.
    Like to know if it really help by breaking into two tables. What is your comment?
    Thanks
    Scott

    scottjhn wrote:
    For a big table such as this: PROJECT_TABLE which contains 75 columns. But, only 40 columns are frequently searched against, i.e., the user enter some criteria on a we page, then start the search. The rest 35 columns are used on as-needed basis, i.e., only if the user want to view a specific record (in the returned search result). I am afraid that as the records grow, someday, the search will slow down (due to the large number of columns in the table).
    So, I plant to break the PROJECT_TABLE into two separate tables PROJECT_PARENT (project_id) and PROJECT_CHILD (project_id) and reference them by one-to-one relation. By this way, when the user conducts the search, it will be done against the PROJECT_PARENT table; while when user wants to view a specific record, it will then retrieve the data by using one-to-one join of the two tables.
    Like to know if it really help by breaking into two tables. What is your comment?if you proceed, performance will be worse than if you do nothing.
    Do you suffer from Compulsive Tuning Disorder?
    Are you bored & looking for some activity to keep you busy?

  • Spatial Performance with join

    I have a Oracle Spatial table with 3.5 million rows plus another auxillary table with 3.5 million rows. A query over these two tables joined returns a full result (250 rows) based on one to one join - here's an example:
    Select count(*)
    from F, N
    where F.id = n.id and (F.GEOM,mdsys.sdo_geometry (2003,8307, null, mdsys.sdo_elem_info_array (1,1003,1), mdsys.sdo_ordinate_array(-120.0,49.5,-119.0,49.5,-119.0,60.35,-120.0,60.35,-120.0,49.5)),
    'mask= ANYINTERACT querytype=WINDOW') = 'TRUE') AND N.PNUM = '4';
    It takes an average of 35 seconds to get the full result set back. I've gathered statistics, tweaked memory parameters and this is the best I can get. Does anyone have any suggestions?

    This is an interesting problem. It looks like Oracle is doing the right thing for each of the table accesses - use the index and fetch by rowid.
    The only thing you have to play with if you don't go to materialized views or temp tables is how the results of the two table queries are joined.
    You don't have a lot of options. Hash join seems to be slow, but you don't know if it is faster or slower compared with nested loops or merge join.
    I'd compare what you have done with something like the following to test nested loops:
    select /*+ no_merge use_nl (f1,n1) */ count(*)
    from
    (select id
    from f
    where sdo_anyinteract ( F.GEOM,
    sdo_geometry (2003,8307, null, sdo_elem_info_array (1,1003,1),
    sdo_ordinate_array (-120.0,49.5,-119.0,49.5,-119.0,60.35,
    -120.0,60.35,-120.0,49.5))) = 'TRUE') f1,
    (select id
    from n
    where n.pnum='4') n1
    where f1.id=n1.id ;
    and presort with a merge join hint to see how it performs:
    select /*+ no_merge use_merge (f1,n1) */ count(*)
    from
    (select id
    from f
    where sdo_anyinteract ( F.GEOM,
    sdo_geometry (2003,8307, null, sdo_elem_info_array (1,1003,1),
    sdo_ordinate_array (-120.0,49.5,-119.0,49.5,-119.0,60.35,
    -120.0,60.35,-120.0,49.5))) = 'TRUE'
    order by id) f1,
    (select id
    from n
    where n.pnum='4'
    order by id) n1
    where f1.id=n1.id ;
    It might be that you already have the best Oracle can do, but I'd be curious to know how you make out.
    Dan Abugov
    VP Software Support and Services
    Acquis Inc.

Maybe you are looking for