Joins in rpd
Hi, I know that we create foreign key joins in the Physical Layer and complex joins in BMM layer. Can we create complex join in Physical Layer and foreign key joins in BMM layer? Under which circumstances should we do this? Is there any benefit/disadvantage in doing so?
Thanks,
D
hi,
Can we create complex join in Physical Layer
Re: complex join at physical layer
In BMM layer we can do only complex joins not physical joins
thanks,
saichand.v
Similar Messages
-
Hi All,
I want to document all Physical Joins present in RPD. Is there any way to do it instead of going through each and every join and documenting manually.
Thanks1.) Agreed.
2.) Not really. This is a physcial FKey in UDML:
DECLARE FOREIGN KEY "Writeback (MSSQL)".."PADISHA"."Writeback (Fact)"."Writeback (Fact)_FKey" AS "Writeback (Fact)_FKey" HAVING
"Writeback (MSSQL)".."PADISHA"."Writeback (Fact)"."COMMENT_ID" ) REFERENCES "Writeback (MSSQL)".."PADISHA"."Dim - Market (WRITEBACK_F)"."COMMENT_ID"
PRIVILEGES ( READ);Join expression:
"Writeback (MSSQL)".."PADISHA"."Writeback (Fact)"."COMMENT_ID" ) REFERENCES "Writeback (MSSQL)".."PADISHA"."Dim - Market (WRITEBACK_F)"."COMMENT_ID"Tables:
- "Writeback (MSSQL)".."PADISHA"."Writeback (Fact)"
- "Writeback (MSSQL)".."PADISHA"."Dim - Market (WRITEBACK_F)"
These tables are alias objects and point to the physical table.
So UDML has all you need. -
Complex Join in RPD with Subquery
Hi Experts,
We have a complex requirement in our RPD Development which needs to use a subquery in the complex join in Physical layer. Here are the tables:
Fact A
DIM B
Join is A.case_no = B.case_no
and ( a.active_date between b.start_date and b.end_date or
(a.active_date < b.start_date and
b.start_date = (select min(b2.start_date)
from DIM B2
where b.case_no = b2.case_no
group by b2.case_no
Is there a way other than creating opaque view or making ETL changes to having the min(start_date) as part of the table ?
Appreciate your inputs and responses.
Thanks
VKyou got 2 tables or 3?
I see 3 tables A, B and B2
you need to join B with B2 time being just ignore min value since its equi join you get matching only
and then B with A
in bmm map B2 to B -
Hi Gurus/Experts
I want to apply an outer join on a fact and dimension table. I am very new to OBI and have no idea of how to go about it. i had read a few links which says creating an opaque view etc but have not got a clear picture.
Quick response would be really appreciated.Hi,
If you want to give the outer join with the fact and the dimension. Then give the join condition in the physical layer.
In the BMM layer, open the fact table general tab and you can find symbol to add new tables. It will list all the tables with which the fact table is joined in the physical layer. Then add the dimension table and in the'joins' section you can find the dimension and the fact table with a 'tick' symbol and inner join as default. You can apply outer joins(left,right,full) depending upon your requirements.
You need to create a opaque view when you need to retrieve data from dimension and dimension. In order to provide BI server one fact table common to both the dimensions. But if you have fact and dimensions already for you coming from the database, then its not required.
Hope this clears your doubts.
Regards
MuRam -
Unable to do Physical Join in rpd
Hi
I tried to join table Ra_Customer_trx_all and OE_order_header_all but the join condition is to_char(OE_order_header_all .order_number) = Ra_Customer_trx_all .Attribute6
can i use this join condition in physical layer..Because in physical join we staraightway give the join condition but here we are changing the column type and then using the join.
I am using OBIEE 11g
thanks in advance for the help
DeboHi
Thanks for the solution in physical join but when i simply join the two tables in the business layer the logical join is not pulling any data..Do we need to do something else to do the logical join between those tables
Regards
Debo -
Additional join in rpd physical layer.
Hi,
I created a subject area joning all the tables in physical and BMM. Now I need to existing two tables with one more key. Can I just go the physical layer joins, double click on the join and add the new join there. Can we do like this or is there any process to follow. Please advice.user4683504 wrote:
Hi,
I created a subject area joning all the tables in physical and BMM. Now I need to existing two tables with one more key. Can I just go the physical layer joins, double click on the join and add the new join there. Can we do like this or is there any process to follow. Please advice.Yes thats it, or edit the join from the UI (right click table -> Foreign Keys) -
Bug in either ANSI Join or Oracle 10.2
I can't tell whose bug this is, but it's almost certainly a bug.
My co-worker Martin wrote a query (below) that returned zero rows, which he knew was wrong.
In exploring this further, he discovered that rewriting the join from ANSI 92 to the old WHERE clause join suddenly caused a "ORA-00918: column ambiguously defined" error to arise.
Then, when he added a table qualifier to one of the column names (effective_dt became fam.effective_dt), suddenly he began to get his data.
So, here's my question. Why does a query that uses ANSI-92 Join syntax not raise the "ORA-00918: column ambiguously defined" error, WHEN THERE WAS AN AMBIGUOUSLY DEFINED COLUMN? Does the ANSI-92 join syntax imply some sort of hierarchy of table precedence that resolves the ambiguity by implication?
Here's the query, FYI:
SELECT fam.asset_mix_percent_nbr
FROM rp_mip_rpd_fund_asset_mix fam
JOIN rp_mip_rpd_fund mrf ON fam.rp_mip_rpd_fund_seq =
mrf.rp_mip_rpd_fund_seq
JOIN rp_rpd_fund rpd ON mrf.rp_rpd_fund_seq = rpd.rp_rpd_fund_seq
JOIN rp_psrpd_fund psrpd ON rpd.rp_rpd_fund_seq = psrpd.rp_rpd_fund_seq
JOIN rp_cpsrpd_fund cpsrpd ON psrpd.rp_psrpd_fund_seq =
cpsrpd.rp_psrpd_fund_seq
WHERE rpd.fast_fund_id = LPAD('96', 3, '0')
AND cpsrpd.cntrct_nbr_id = '800710'
AND fam.effective_dt =
-- AND effective_dt = -- this version returns no rows
(SELECT MAX(fam1.effective_dt)
FROM rp_mip_rpd_fund_asset_mix fam1
WHERE fam1.effective_dt <= '03-Oct-07'
AND fam1.rp_mip_rpd_fund_seq = mrf.rp_mip_rpd_fund_seq);We're at 10.2.0.2.0 on a Sun box:
SunOS saturn1 5.9 Generic_122300-13 sun4u sparc SUNW,Sun-Fire-15000
The explain plans are identical. Here's one:
SQL Statement from editor:
SELECT fam.asset_mix_percent_nbr
FROM rp_mip_rpd_fund_asset_mix fam
JOIN rp_mip_rpd_fund mrf ON fam.rp_mip_rpd_fund_seq =
mrf.rp_mip_rpd_fund_seq
JOIN rp_rpd_fund rpd ON mrf.rp_rpd_fund_seq = rpd.rp_rpd_fund_seq
JOIN rp_psrpd_fund psrpd ON rpd.rp_rpd_fund_seq = psrpd.rp_rpd_fund_seq
JOIN rp_cpsrpd_fund cpsrpd ON psrpd.rp_psrpd_fund_seq =
cpsrpd.rp_psrpd_fund_seq
WHERE rpd.fast_fund_id = LPAD('96', 3, '0')
AND cpsrpd.cntrct_nbr_id = '800710'
AND effective_dt = -- this version returns no rows
(SELECT MAX(fam1.effective_dt)
FROM rp_mip_rpd_fund_asset_mix fam1
WHERE fam1.effective_dt <= '03-Oct-07'
AND fam1.rp_mip_rpd_fund_seq = mrf.rp_mip_rpd_fund_seq);
Statement Id=CB0A0233 Type=SELECT STATEMENT
Cost=44 TimeStamp=10-DEC-07::06:46:32
(1) SELECT STATEMENT CHOOSE no rows returned
Est. Rows: 1 Cost: 20
FILTER
(13) TABLE TABLE ACCESS BY INDEX ROWID RP.RP_MIP_RPD_FUND_ASSET_MIX [Analyzed]
(13) Blocks: 5 Est. Rows: 1 of 275 Cost: 1
Tablespace: RP
(12) NESTED LOOPS
Est. Rows: 1 Cost: 18
(10) NESTED LOOPS
Est. Rows: 1 Cost: 17
(7) HASH JOIN
Est. Rows: 1 Cost: 16
(5) HASH JOIN
Est. Rows: 20 Cost: 12
(3) TABLE TABLE ACCESS BY INDEX ROWID RP.RP_CPSRPD_FUND [Analyzed]
(3) Blocks: 1,152 Est. Rows: 20 of 75,726 Cost: 6
Tablespace: RP
(2) INDEX INDEX RANGE SCAN RP.RP_CPSRPD_FUND_F5 [Analyzed]
Est. Rows: 20 Cost: 1
(4) TABLE TABLE ACCESS FULL RP.RP_PSRPD_FUND [Analyzed]
(4) Blocks: 34 Est. Rows: 3,145 of 3,145 Cost: 5
Tablespace: RP
(6) TABLE TABLE ACCESS FULL RP.RP_RPD_FUND [Analyzed]
(6) Blocks: 13 Est. Rows: 3 of 276 Cost: 3
Tablespace: RP
(9) TABLE TABLE ACCESS BY INDEX ROWID RP.RP_MIP_RPD_FUND [Analyzed]
(9) Blocks: 5 Est. Rows: 1 of 275 Cost: 1
Tablespace: RP
(8) INDEX INDEX RANGE SCAN RP.RP_MIP_RPD_FUND_FK2 [Analyzed]
Est. Rows: 1
(11) INDEX INDEX RANGE SCAN RP.RP_MIP_RPD_FUND_ASSET_MIX_FK1 [Analyzed]
Est. Rows: 1
(16) SORT AGGREGATE
Est. Rows: 1
(15) TABLE TABLE ACCESS BY INDEX ROWID RP.RP_MIP_RPD_FUND_ASSET_MIX [Analyzed]
(15) Blocks: 5 Est. Rows: 1 of 275 Cost: 2
Tablespace: RP
(14) INDEX INDEX RANGE SCAN RP.RP_MIP_RPD_FUND_ASSET_MIX_FK1 [Analyzed]
Est. Rows: 1 Cost: 1 -
Joining bridge ,dim,fact table
Hi
I have scenario where I have a bridge table,dimension table,and 2 fact tables.
The dimension table is a common table for both fact tables.
The bridge table contains the dimension tables Primary key.
The bridge is also having an other dimension table PK, but that table is not joined to any fact table.
Now I have a req where I have to get a column from bridge table and fact2 tables.
Individually when I pull those columns I am getting data.
When I pull those 2 columns together , getting " the specified criteria dint result in any data".
Tried changing joins in RPD nothing worked.please help me , this is very urgent.
In SQL developer when I joined bridge and fact or dimension and bridge I am able to get expected results.
Thanks
SrHi Suyog,
Run this Program in SE38 SAP_INFOCUBE_DESIGNS .
This gives the Ratio aswell number of records.And also Dimension Mismatch.
Rgds
SVU -
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,
UgserOne 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 -
Hi All,
I am creating reports from two fact tables. However, in spite of using only inner joins in RPD, obiee is generating full outer joins between two WITH (sub-query factoring) . Is there a way to enforce inner joins.
Thanks
Surya872073 wrote:
All the joins in RPD are inner joins. The query generated is similar as follows. The full outer join is automatically created between SAWITH0 SAWITH1
WITH
SAWITH0 AS (SELECT sum(T245.QUANTITY_SOLD) AS c1,
T161.CHANNEL_DESC AS c2
FROM
SH.CHANNELS T161,
SH.SALES T245
WHERE ( T161.CHANNEL_ID = T245.CHANNEL_ID )
GROUP BY T161.CHANNEL_DESC),
SAWITH1 AS (SELECT sum(T168.UNIT_COST) AS c1,
T161.CHANNEL_DESC AS c2
FROM
SH.CHANNELS T161,
SH.COSTS T168
WHERE ( T161.CHANNEL_ID = T168.CHANNEL_ID )
GROUP BY T161.CHANNEL_DESC)
SELECT DISTINCT case when SAWITH1.c2 IS NOT NULL then SAWITH1.c2 when SAWITH0.c2 IS NOT NULL then SAWITH0.c2 end AS c1,
SAWITH0.c1 AS c2,
SAWITH1.c1 AS c3
FROM
SAWITH0 FULL OUTER JOIN SAWITH1 ON SAWITH0.c2 = SAWITH1.c2
ORDER BY c1
If I change the underlined FULL OUTER JOIN above to just "JOIN", the query returns what I want.
Edited by: 872073 on Oct 24, 2012 1:14 PMCheck to see if PERF_PREFER_INTERNAL_STITCH_JOIN was turned off in the DB Features.ini file
The path to the file is Oracle/Middleware/instances/instance1/config/OracleBIServerComponent/coreapplication_obis1/DBFeatures.INI -
Default Selection Issue in Dashboard Prompt
Hi All,
I am using the below logical SQL in SQL Results for Default Selection of a column in a dashboard prompt,
SELECT "Facts"."Service Provider", "Config"."Integration Id" FROM "IMONIT - Transaction Log" WHERE "Config"."Integration Id"='@{inttype}'
Here, I have used a presentation variable, which is set by another prompt. Also the Facts and Config table are joined in RPD. The issue is it does not selects the values returned by the logical SQL by default. But if i use the same logical SQL in SQL Results of Choice List Values for the same column in the prompt, the logical SQL does work and populates the prompt only with the values returned by the logical SQL.
Any help is much appreciated.
Regards,
MariaDeepak, actually the scenario is that I am navigating to the page with the dashboard prompt from another answers report located on another dashboard page. This SQL works perfectly when I press the GO button of prompt on the same page. But its not working when I am navigating to the same page with the prompt from any other report. Any ideas ?
-
Hi All,
I apologize to bring similar question. .
I am able to create the logical foreign key for logical table A with new joining condition (A.2=B.2) (2 is calculated logical column).
However there still exist Physical foreign key join with old condition (A1.=B.1). When I deploy this rpd, the report generates sql with (A1.=B.1) join condition.
Then,I removed this Physical foreign key join in rpd,and got a warning' logical dimension B has a source that does not join with any fact table' in consistency check.
Still after deploying this rpd , I am getting error [nQSError: 14025] No fact table exists at the requested level of detail: in report.
I am missing anything.The logical foreign key has correct join condition still it is not over riding the physical join.
Thanks for going through this question,
http://tinypic.com/r/2qiwmrr/6Based on your comments I'm looking at documentation:
I found a Note: A logical key for a fact table must be made up of the key columns that join to the attribute tables. Logical foreign key joins may be needed if the Oracle BI Server is to be used as an ODBC data source for certain third-party query and reporting tools.
I need to see why ODBC, and unlike the Logical Foreign key join is not overriding join Physical layer.
Btw: Since you want to go with a join using defined logical column, can you use the same expression in Physical join using expression builder?
This should work.
EX: T43770.DEPARTMENT_ID = case when T43764.DEPARTMENT_ID > 10 then T43764.DEPARTMENT_ID else 0 end
Edited by: Srini VEERAVALLI on Jan 18, 2013 4:52 PM -
Need limited data in the prompts
Hi All,
Its kind of really urgent and important to me.
I have a prompt which hold the emp name. In the list of values i need only the list which comes when is join the emp table with the fact.
Like is its a SQL it would be lik this.
select e.emp_name
from w_emp_d e, fact f
where e.row_wid= f.emp_wid
Thanks,
LonaDhi,
Select the Choice list values in the column prompt editor and enter the logical sql.
It will give u the joined list if the emp table and the fact is joined in rpd. -
Logical And Physical Joins Of SH_PartTwo.rpd provided by oracle OBIEE
Hi,
I am new the OBIEE tool.After downloading SH_PartTwo.rpd .Planned to recreate the physical and logical joins.
If any one has already tried this, kindly explain why we are creating Alias tables of (SALES,TIMES)and joining COSTS to them instead of directly joining to Sales fact table. Below is the table structure.My question again,previously in SH.rpd we were joining Sales fact with other dimensions.If I need cost data then why should'nt I join cost with sales.
Thanks for your cooperation in advance.
Regards,
Sreekanth
Costs Sales Times Customers Countries Products Promotions Channels
Timeid Timeid Timeid
Productid Productid Productid
Promotionid Promotionid Promotionid
Channelid Channelid Channelid
Custid Custid
Countryid Countryid
Unitcost Amount_soldWell don't know the example anymore ;)
But you normally will make aliasses to reuse the object.
So if you have a time dimension, and you have all kind of fields, like date_sold, date_bought, date_paid...
Now if you connect those dates directly to the time dimension, then you can get very odd reports... if you use aliasses, then the times have nothing to do with each other...
So it is always better to use aliasses... you never know if you need a table only once.. -
Urgent - How to join multiple facts and dimensions in OBIEE rpd??
Hi,
In my RPD I have 3 facts and 4 dimensions and the joins defined are as below
Physical layer - All joins are FK and inner (1:N)
FACTA-------------- DIM_TIME, DIM_CUST,DIM_CAL
FACTB-------------- DIM_TIME, DIM_CUST,DIM_CAL
FACTC-------------- DIM_TIME, DIM_CUST,DIM_CAL, DIM_XYZ
BM layer - All joins are complex, inner
The logical table F1 pulls columns from FACTA, FACTB and FACTC . Complex join exists between all 4 dimensions DIM_TIME, DIM_CUST,DIM_CAL, DIM_XYZ to logical table F1.
Issue: I need to build a report with $ column from FACTA, FACTB and FACTC and need to add filter conditions using columns from DIM_TIME, DIM_CUST,DIM_CAL, DIM_XYZ.
However when ever I add a filter condition from DIM_XYZ the physical query generated is not generating code to access data from FACTA and FACTB. Instead it is subsituting a NULL and just pulls data frm FACTC.
My Questions: What is the best way to build the physical and BMM layer using FACTA, FACTB,FACTC, DIM_TIME, DIM_CUST,DIM_CAL and DIM_XYZ??
I need to resolve this issue ASAP so any help is appreciated. Thanks
Edited by: user11935561 on Feb 10, 2010 6:27 AM
Edited by: user11935561 on Feb 10, 2010 6:28 AMYou can find the same issue in
Logic of queries in OBIEE
or
Connection between 2 fact tables
Follow the link
http://there-n-back-again.blogspot.com/2009/04/oracle-analytics-how-to-report-over-non.html
Put 'All' or 'Total' at levels for dim_xxx for those facts you need in your report from facta and factb
Regards
Nicolae
Maybe you are looking for
-
I have downloaded lectures from iTunes u. It had been working fine, but now my downloads do not show up on my bookshelf. They do show up as downloaded when I search through the catalog. How do I fix this?
-
CE Bank Statement Open Interface
Hi, I have successfully run the Bank Statement Loader for Open Interface. Then I run the 2nd step > Bank Statement Import: The docs said: 2. Bank Statement Import The required parameters to this job are the following: Bank Branch Name - Provide the b
-
My iPhone 5 rear camera was not working, now the rear camera is also not working. I have procured the phone in 2012 from San Fransico. USA Can anyone help me, please?
-
Goldengate expects a column that is not in the unique constraint
I do not know golden gate. I am working with a golden gate engineer who doesn't really know oracle. I am the DBA supporting this. This is the issue we are having. Please bare with me if I have trouble explaining it. I am pulling from oracle and loadi
-
Question on Grouping()
I am using Grouping function in one of my select statement. Now In the statement there is a substr on a particular column within the grouping. If the number of characters to be returned by substr is used as a bind variable then the query returns "not