Weight factors in a many-to-many relationship with bridge table
Hi, I have the same N:N relationship schema of this link:
http://www.rittmanmead.com/2008/08/28/the-mystery-of-obiee-bridge-tables/
In my bridge table I have a weight factor for every couple (admission,diagnosis). If I aggregate and query in Answers these columns:
DIAGNOSIS | ADMISSIONS_COSTS
every single diagnosis has the sum of the WHOLE Admission_cost it refers to, not its contribute to it (for example 0.30 as weight factor). The result is an ADMISSION_COSTS sum larger than the ADMISSION_COSTS sum in the lowest detail level, because it sums many times the same cost.
How could I use my weight factor and calculate the right diagnosis contribute to its admission? In BI Admin I tried to build a calculated LogicalColumn based on Physical column, but in the expression builder I can select only the ADMISSION_COST measure physical column, and it doesn't let me pick the weight factor from the bridge table.
Thanks in advance!
I'm developing a CS degree project with 2 professors, Matteo Golfarelli and Stefano Rizzi, who have developed the Dimensional Fact Model for data warehouses and wrote many books about it.
They followed the Kimball theory about N:N and used its bridge table concept, so when I said them that in OBIEE there is this definition they were very happy.
But they stopped this happiness when I said that bridge tables only connect fact tables to dimension tables, and to create N:N between levels at higher aggregation we should use logical joins as you said in your blog. I need to extract metadata concepts from UDML exportation language, and about N:N I can do it only with bridge table analysis, I can't extract and identify a N:N level relationship from a multiple join schema as in your blog... this is the limit of your solution for our project, only this!
PS: sorry for my english, I'm italian!
thanks for the replies!
Similar Messages
-
SD Billing document many to one relationship with sales order
Hi experts,
We have a scenario where we have done collective billing for some time. So, obviously we have from sales order to billing one to many relationship. Meaning, one sales order has many billing docs.
Now, we want to merge the sales order (VBAP) data with billing data (VBRP). But, we want to take only one billing document which is appropriate.
For example, we have a sales order, corresponding that we have a billing debit memo followed by a cancellation, followed by another debit memo. In this case we have to take the third debit memo as it is the latest and the first one has a cancellation.
We will know alll this through VA02 Tcode. However, we want to derive this logic off of the above tables. We are actaully clue less as to how to pick up the right billing doc from VBRP for a sales order out of many.
Please post ur replies.
Thanks.Hi Jain,
Thanks for the reply. The sort out mechanism may not be the one we are looking for. There may be several DIFFERENT billing docs for a single sales doc. More over, these billing docs may have been created on the same date. So, what we are looking for is a fied or information like XBLNR in VBAP with which we can for sure eliminate all other billing docs and cancellations against them, for exmaple, and pickup the right billing doc alone.
I relly appreciate your efforts.
Thanks. -
Many-to-One relationship with composed key
Hi all,
I have problems inserting an entity with a 1:n-relationship.
The relationship is defined over two columns. In detail:
There are two database-tables:
VERDECK
ID_PROJECT NUMBER (key)
ID_INTERN VARCHAR2(10 BYTE) (key)
UZSB
ID_PROJECT NUMBER (key)
ID_UZSB VARCHAR2(10 BYTE) (key)
ID_PROJECT_VERDECK NUMBER
ID_INTERN_VERDECK VARCHAR2(10 BYTE)
On UZSB there is a referential integrity defined between these tables:
FOREIGN KEY (ID_PROJECT_VERDECK, ID_INTERN_VERDECK)
REFERENCES R57SCHRAUB.VERDECK (ID_PROJECT,ID_INTERN))
This is mapped into JPA as follows:
@Entity
public class Verdeck implements Serializable {
@EmbeddedId
private VerdeckPK pk;
@OneToMany(cascade={CascadeType.ALL},mappedBy="verdeck")
private Collection<Uzsb> uzsbCollection;
@Embeddable
public class VerdeckPK implements Serializable {
@Column(name="ID_PROJECT")
private BigDecimal idProject;
@Column(name="ID_INTERN")
private String idIntern;
@Entity
public class Uzsb implements Serializable {
@EmbeddedId
private UzsbPK pk;
@ManyToOne
@JoinColumns({@JoinColumn(name="ID_PROJECT_VERDECK", referencedColumnName="ID_PROJECT"),@JoinColumn(name="ID_INTERN_VERDECK", referencedColumnName="ID_INTERN")})
private Verdeck verdeck;
@Embeddable
public class UzsbPK implements Serializable {
@Column(name="ID_UZSB")
private String idUzsb;
@Column(name="ID_PROJECT")
private BigDecimal idProject;
I try inserting a new entity VERDECK with some associated UZSBs as follows:
Verdeck einVerdeck = new Verdeck();
VerdeckPK myKey = new VerdeckPK();
myKey.setIdProject(idProject);
myKey.setIdIntern(lsId);
einVerdeck.setPk(myKey);
Uzsb lsUzsb = new Uzsb();
UzsbPK lsUzsbKey = new UzsbPK();
lsUzsbKey.setIdProject(idProject);
lsUzsbKey.setIdUzsb(lsId);
lsUzsb.setPk(lsUzsbKey);
lsUzsb.setVerdeck(einVerdeck);
Vector<Uzsb> uzsbColl = new Vector<Uzsb>();
uzsbColl.add(lsUzsb);
einVerdeck.setUzsbCollection(uzsbColl);
em.persist(einVerdeck);
As result I get the error
"ORA-02291: integrity constraint (R57SCHRAUB.SYS_C0022330) violated - parent key not found"
Does anybody have an idea? I think the problem could be the embedded key in Verdeck.
Perhaps I should take this into account in my JPA-definition of the relationship?
But how can I do this?
Regards,
ChristophHi Christoph,
our JPA implementation does not sort sqlstatements in the right order to work with foreign keys. This feature will come with the next release. The problem here is that databases check the constraint for every statement executed instead of checking at commit time (when our state is ok again).
As workaround you can set the settings for the foreign key constraints to deferred (pls. see oracle docu: alter table defferrable / alter session deffered) and the database will check at commit time. Second approach would be to delete the foreign key constraints.
hth
-Andreas -
Data Access Object relationship with other tables
Hi,
I have two entities which are related. One is customer other is account.
I need to get accounts of the customer as well , when I do a search for customer.
I am using data access objects both for customer and account.
Now where shall do the above mentioned search.
Do I have to write one sql in Customer Data Access Object or does the Customer DAO has to refer to Account DAO to get account details.
Which method is the best.
Thanking You,
Chamal.I have two entities which are related. One is
customer other is account.
I need to get accounts of the customer as well , when
I do a search for customer.You might want to consider what you want to do if you need to display a list of customers.
>
I am using data access objects both for customer and
account.
Now where shall do the above mentioned search.
Do I have to write one sql in Customer Data Access
Object or does the Customer DAO has to refer to
Account DAO to get account details.
Which method is the best.
If it was me the Account DAO would have a method that takes a customer id and returns a list of Accounts.
Customer would have a method that used that method.
That requires two queries though. Your requirements might drive the need for a single query (which returns two result sets.) If that was the case then I would still have the extraction logic in the Account class - the customer class would pass the extracted sub result set to it and it would return an account list. -
Many to Many relationship - Bridge Table
This post may be more appropriate for a data modeling discussion group, but thought I would post here because it will ultimately be modeled/used in OBIEE.
Can someone help me understand what the point/use is for a Bridge table when managing a many to many relationship between a fact table and a dimension? I have read a hundred different ways to handle this situation with the brige table method being the overwhelming approved approach .. but I don't see what a bridge table specifically buys you (Im sure Im missing something though).
For example .. If I have:
EVENT_FACT
EFkey
CRDimKey
Famount
CUSTOMER_ROLE_DIM
CRDimKey
Customer Name
Role
So a customer can hold multiple roles and therefore 1 event fact record could link to multiple CUSTOMER ROLE records and 1 customer role record will most likely link to multiple EVENT_FACT records.
As I understand the bridge approach would put a bridge table CUSTOMER_ROLE_EVENT_BRIDGE in place like follows:
CUSTOMER_ROLE_EVENT_BRIDGE
EFkey
CRDimkey
WeightFactor
With this approach you now have the following setup:
EVENT_FACT one-to-many CUSTOMER_ROLE_EVENT_BRIDGE
CUSTOMER_ROLE_DIM many-to-many CUSTOMER_ROLE_EVENT_BRIDGE
Doesn't a many to many relationship still exist from the dimension to the bridge table? Since all we did was join the dimension to the fact table to create the bridge table I dont see how the many to many from dimension to bridge doesnt exist?
It seems somewhat inneficient to join the dimension to the bridge ahead of time to create this table and place the weight factor on it. Why not just compute the weight factor of the dimension and place that as a field on the dimension itself and use it when joined to the fact table?
Thanks for the help and insight!!
k
Edited by: user_K on May 19, 2010 4:34 PMI'm developing a CS degree project with 2 professors, Matteo Golfarelli and Stefano Rizzi, who have developed the Dimensional Fact Model for data warehouses and wrote many books about it.
They followed the Kimball theory about N:N and used its bridge table concept, so when I said them that in OBIEE there is this definition they were very happy.
But they stopped this happiness when I said that bridge tables only connect fact tables to dimension tables, and to create N:N between levels at higher aggregation we should use logical joins as you said in your blog. I need to extract metadata concepts from UDML exportation language, and about N:N I can do it only with bridge table analysis, I can't extract and identify a N:N level relationship from a multiple join schema as in your blog... this is the limit of your solution for our project, only this!
PS: sorry for my english, I'm italian!
thanks for the replies! -
I'm trying to implement a many-to-one relationship similar to the one, for example, between an OrderLineItem and a Product.
I managed to create the beans and define the relationship using deploytool.
What I'm trying to understand is how can I prevent a Product instance from being deleted when it is involved in the relationship described above?
Currently, under Sun's reference implementation server, I am allowed to delete a Product even if there are OrderLineItems that reference it.
There is one line printed out in the window running j2ee -verbose:
com.sun.ejb.containers.EntityContainer$EJBTxKey
The record in the Product table is deleted nonetheless.
Another weird thing is that the server does not allow me to deploy two beans involved in a many-to-one relationships with the Product bean if they are using the same CMR field name. What I get is a compilation error at the deployment time.
I'd appreciate any input.They way I handle this is to hide the creation/manipulation/deletion of the bean behind a manager - for example a singleton session bean. I NEVER allow the direct creation/deletion of entity beans except through manager classes. This is quite a common J2EE pattern, whose name escapes me at the moment.
Your manager would have a method like delete(int productId), which would delete the matching Product entity bean, and would then search the OrderLineItem beans for the matching Product primary key. -
Many to Many dimension displays all the members regardless of bridge data
Hi,
I have already set up couple of many to many relationships in my cubes and all ran fine.
Now I set up a new many to many relationship as follows:
Fact- sales
Dimension- customer
Dimension- conference
Bridge- (many 2 many)- ConferenceCustomers (many customer can participate in one conference and same customer can participate in couple of conferences).
(I've set the tables, keys and relations in DSV, created the dimensions, added the bridge measure group to the cube, defined new dimension in dimension usage tab using the conference dimension with bridge table to the fact table and regular relation
to the bridge measure group which relates to the customer dimension etc).
When I browse the cube by the new Conference dimension and the customer, for some reason I see all the customers which have a record in the main fact table regardless if they are related to the conference in the bridge or not.
When I add to the browser the count measure of the bridge, only then do I see only the customers which relate to the conference.
What am I missing?
(I was thinking what's the difference between all the other M2M relations I've done so far, I think here not all the customers which participted in a coneference have sales records, but I'm not sure why it should effect this.)
NamnamiHi Namnami,
Since it working fine now, and you cannot reproduce this issue, I change this thread to discussion type. If you have any update, please feel free to post it.
Regards,
Charlie Liao
TechNet Community Support -
Help with UPDATE table and database RELATIONSHIPS
HI there, I have been trying to create an update table for
weeks now and keep getting error messages.
The database has a table named:
"books" in the table cells are "idbook" and "book".
"suppliers" in the table cells are "idsupplier" and
"supplierName".
"category" in the table cells are "idcategory" and
categoryName"
They all have a relationships with this table:
"results" in the cells are "idbook", "idsupplier" and
"idcategory".
This "results" table brings all of the above tables together.
When I try to do an update, i am doing one to the results
table. Is this correct?
The updates have problems because when drawing the text to
the update table to view it comes in text form.
When trying to update, it wont becuase all of the cells in
the results table are numeric. This is because of the
relationships.
Can anyone suggest where i may be going wrong.
Ask anything you need to.
TAMM_editCmd.CommandText = MM_editQuery
MM_editCmd.Execute
MM_editCmd.ActiveConnection.Close
If (MM_editRedirectUrl <> "") Then
Response.Redirect(MM_editRedirectUrl)
End If
End If
End If
%>
<%
Dim Recordset1__MMColParam
Recordset1__MMColParam = "1"
If (Session("MM_UserName") <> "") Then
Recordset1__MMColParam = Session("MM_UserName")
End If
%>
<%
Dim Recordset1
Dim Recordset1_numRows
Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_connSeek_STRING
Recordset1.Source = "SELECT * FROM Query1 WHERE UserName = '"
+ Replace(Recordset1__MMColParam, "'", "''") + "'"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()
Recordset1_numRows = 0
%>
<%
Dim rsUpdate
Dim rsUpdate_numRows
Set rsUpdate = Server.CreateObject("ADODB.Recordset")
rsUpdate.ActiveConnection = MM_connSeek_STRING
rsUpdate.Source = "SELECT * FROM tblSpecies"
rsUpdate.CursorType = 0
rsUpdate.CursorLocation = 2
rsUpdate.LockType = 1
rsUpdate.Open()
rsUpdate_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index
Repeat1__numRows = -1
Repeat1__index = 0
Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
%>
<html>
<head>
<link href="css%20files/paragraph.css" rel="stylesheet"
type="text/css">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new
Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0;
i<a.length; i++)
if (a
.indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a;}}
//-->
</script>
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0"
marginwidth="0" marginheight="0"
onLoad="MM_preloadImages('images/Publicationb.gif','images/Factsheetsb.gif')">
<table width="100%" height="100%" border="1"
cellpadding="0" cellspacing="0" bordercolor="#5D5D5D">
<tr>
<td colspan="2">
<div align="right"></div>
<div align="left"></div>
</td>
</tr>
<tr>
<td colspan="2"><table width="100%" height="100%"
border="0" cellpadding="0" cellspacing="0"
bordercolor="#5D5D5D">
<tr>
<td valign="top"><form
ACTION="<%=MM_editAction%>" METHOD="POST" name="form1">
<table width="90%" border="0" align="center"
cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><div
align="center"></div> <table border="1" align="center"
cellpadding="2" cellspacing="0" bordercolor="#FFFFFF">
<tr bgcolor="ECECD7">
<td colspan="2"><div align="center">
<p><strong><font size="3">Update Key Word
& Category</font></strong></p>
</div>
</td>
</tr>
<tr>
<td><div align="center">
<p><font size="1">Enter Up to 10 Species /
Product
Name</font></p>
</div>
</td>
<td><div align="center">
<p><font size="1">Select a
Category</font></p>
</div>
</td>
</tr>
<tr>
<td colspan="2" bordercolor="#D0D09D">
<%
While ((Repeat1__numRows <> 0) AND (NOT
Recordset1.EOF))
%>
<table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr><td width="50%"><div align="center">
<input name="f1" type="text" id="f13"
value="<%=(Recordset1.Fields.Item("TimberSpecies").Value)%>"
size="33">
</div></td>
<td width="45%"><div
align="center"></div></td></tr></table>
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
Recordset1.MoveNext()
Wend %>
<div align="center"> </div> <div
align="center">
</div></td></tr><tr>td
colspan="2"> </td></tr><tr><td
colspan="2"><div align="right"><p><font
size="1">To Finalise Your Changes Please Press the Update
Button
<input name="update2" type="submit" id="update"
value="Update">
<input type="hidden" name="MM_update" value="form1">
<input type="hidden" name="MM_recordId" value="<%=
rsUpdate.Fields.Item("TimberSpecies").Value %>"> -
Many to Many Relationships in ejb.....Urgent Pls help
hi all,
Am working in EJB.Now we are coding for many to many relationship.
Company and Salary register
One Company can have many salary register and More than one company can have one salary register
Companyand Salary register are the two tables having details of it.And the intermediate table having pk of company and salary register is Company_salary_register table,I want to add the value in this table having seperate interface.
How to model it? I have given the add method of this company_salary_register table in company bean.I am getting the value of this one as collection.But it is asking me to add the values as the instance of LocalSalary(interfaceand entitybean).If i type cast it as Local Salary Class castexception occurs
Please help me.Even Material of Modelling Many to Many relationship in EJB is enough.
thanx in advance,THaaaaaanks alottt for the quick reply...
I used the first way to insert the document and i was successful...
but thing is that..
when i do
SQL>desc message_type
message_type is NOT FINAL
Name Null? Type
SYS_XDBPD$ XDB.XDB$RAW_LIST_T
to VARCHAR2(4000 CHAR)
from VARCHAR2(4000 CHAR)
subject VARCHAR2(4000 CHAR)
body VARCHAR2(4000 CHAR)
i can see the structure...
and when i
select count(*) from messages
it says count is 1.
so how to know where the data is ..like below in the data :
'to' it has '[email protected]'
and for 'from' it has '[email protected]'..and so on..
<message>
<to>[email protected]</to>
<from>[email protected]</from>
<subject>Question</subject>
<body>Does this demo work?</body>
</message>
so what is the command to get that data...
because when i do
select * from message_type..it says
select * from message_type
ERROR at line 1:
ORA-04044: procedure, function, package, or type is not allowed here
Plss help me outt.......this will be my final step...
Thankssssssssssssssss -
Creating data in a many-to-many-relationship
Hello,
we really have problems in implementing a JClient dialog based on BC4J for creating data in a many to many relationship - especially with cascade delete on both sides.
Simplified our tables look like:
create table A_TABLE
A_ID VARCHAR2(5) not null,
A_NAME VARCHAR2(30) not null,
constraint PK_A_TABLE primary key (A_ID),
constraint UK_A_TABLE unique (A_NAME)
create table B_TABLE
B_ID VARCHAR2(5) not null,
B_NAME VARCHAR2(30) not null,
constraint PK_B_TABLE primary key (B_ID),
constraint UK_B_TABLE unique (B_NAME)
create table AB_TABLE
A_ID VARCHAR2(5) not null,
B_ID VARCHAR2(5) not null,
constraint PK_AB_TABLE primary key (A_ID, B_ID),
constraint FK_AB_A foreign key (A_ID) references A_TABLE (A_ID) on delete cascade,
constraint FK_AB_B foreign key (B_ID) references B_TABLE (B_ID) on delete cascade
Could JDev Team please provide a BC4J/JClient sample that performs the following task:
The dialog should use A_TABLE as master and AB_TABLE as detail. The detail displays the names associated with the IDs. Next to AB_TABLE should be a view of B_TABLE which only displays rows that are currently not in AB_TABLE. Two buttons are used for adding and removing rows in AB_TABLE. After adding or removing rows in the intersection the B_TABLE view should be updated. The whole thing should work in the middle and client tier. This means no database round trips after each add/remove, no posts for AB_TABLE and no query reexecution for B_TABLE until commit/rollback.
This is a very common szenario: For an item group (A_TABLE) one can select and deselect items (AB_TABLE) from a list of available items (B_TABLE). Most of JDeveloper4s wizards use this. They can handle multi/single selections, selections from complex structures like trees and so on. Ok, the wizards are not based on BC4J - or? How can we do it with BC4J?
Our main problems are:
1. Updating the view of B_TABLE after add/remove reflecting the current selection
2. A good strategy for displaying the names instead of the IDs (subqueries or joining the three tables)
3. A JBO-27101 DeadEntityAccessException when removing an existing row from AB_TABLE and adding it again
Other problems:
4. We get a JBO-25030 InvalidOwnerException when creating a row in AB_TABLE. This is caused by the composition. We workaround this using createAndInitRow(AttributeList) on the view object (instead of create()). This is our add-Action:
ViewObject abVO = panelBinding.getApplicationModule().findViewObject("ABView");
ViewObject bVO = panelBinding.getApplicationModule().findViewObject("BView");
Row bRow = bVO.getCurrentRow();
NameValuePairs attribList = new NameValuePairs(
new String[]{"BId"}, new Object[]{bRow.getAttribute("BId")});
Row newRow = abVO.createAndInitRow(attribList);
abVO.insertRow(newRow);
5. After inserting the new row the NavigationBar has enabled commit/rollback buttons and AB_TABLE displays the row. But performing a commit does nothing. With the following statement after insertRow(newRow) the new row is created in the database:
newRow.setAttribute("BId", bRow.getAttribute("BId"));
Please give us some help on this subject.
Best regards
Michael Thal<Another attempt to post a reply. >
Could JDev Team please provide a BC4J/JClient sample
that performs the following task:
The dialog should use A_TABLE as master and AB_TABLE
as detail. The detail displays the names associated
with the IDs. Next to AB_TABLE should be a view of
B_TABLE which only displays rows that are currently
not in AB_TABLE. Two buttons are used for adding and
removing rows in AB_TABLE. After adding or removing
rows in the intersection the B_TABLE view should be
updated. The whole thing should work in the middle
and client tier. This means no database round trips
after each add/remove, no posts for AB_TABLE and no
query reexecution for B_TABLE until commit/rollback.
This is a very common szenario: For an item group
(A_TABLE) one can select and deselect items
(AB_TABLE) from a list of available items (B_TABLE).
Most of JDeveloper4s wizards use this. They can
handle multi/single selections, selections from
complex structures like trees and so on. Ok, the
wizards are not based on BC4J - or? How can we do it
with BC4J?
Our main problems are:
1. Updating the view of B_TABLE after add/remove
reflecting the current selectionYou should be able to use insertRow() to insert the row into proper collection.
However to remove a row only from the collection, you need to add a method on the VO subclasses (and perhaps export this method so that the client side should see it) to unlink a row from a collection (but not remove the associated entities from the cache).
This new method should use ViewRowSetImpl.removeRowAt() method to remove the row entry at the given index from it's collection. Note that this is an absolute index and not a range index in the collection.
2. A good strategy for displaying the names instead
of the IDs (subqueries or joining the three tables)You should join the three tables by using reference (and perhaps readonly) entities.
3. A JBO-27101 DeadEntityAccessException when
removing an existing row from AB_TABLE and adding it
againThis is happening due to remove() method on the Row which is marking the row as removed. Attempts to add this row into another collection will throw a DeadEntityAccessException.
You may 'remove the row from it's collection, then call 'Row.refresh' on it to revert the entity back to undeleted state.
>
Other problems:
4. We get a JBO-25030 InvalidOwnerException when
creating a row in AB_TABLE. This is caused by the
composition. We workaround this using
createAndInitRow(AttributeList) on the view object
(instead of create()). This is our add-Action:
ViewObject abVO =
O =
panelBinding.getApplicationModule().findViewObject("AB
iew");
ViewObject bVO =
O =
panelBinding.getApplicationModule().findViewObject("BV
ew");
Row bRow = bVO.getCurrentRow();
NameValuePairs attribList = new NameValuePairs(
new String[]{"BId"}, new
String[]{"BId"}, new
Object[]{bRow.getAttribute("BId")});
Row newRow = abVO.createAndInitRow(attribList);
abVO.insertRow(newRow);This is a handy approach. Note that Bc4j framework does not support dual composition where the same detail can be owned by two or more masters. In those cases, you also need to implement post ordering to post the masters before the detail (and reverse ordering for deletes).
>
5. After inserting the new row the NavigationBar has
enabled commit/rollback buttons and AB_TABLE displays
the row. But performing a commit does nothing. With
the following statement after insertRow(newRow) the
new row is created in the database:
newRow.setAttribute("BId",
d", bRow.getAttribute("BId"));This bug in JDev 903 was fixed and a patch set (9.0.3.1) is (I believe) available now via MetaLink.
>
>
Please give us some help on this subject.
Best regards
Michael Thal -
Many-to-many relationship - show all values
Hi,
I'm building a cube in 2008R2 and have a many-to-many relationship through a bridging table but when displaying the results it is effectively an inner join and I would like to see a full outer join with the unknown rows set to "unknown".
I've managed to achieve this by doing a full outer join in the view that creates my bridging table and having an unknown member in my dimensions but then when I added in a dimension that wasn't directly related to the bridging table the unknown rows
were removed again. I was able to get past this by adding a row to my fact table with all the keys set to unknown and the metrics set to zero.
Whilst this works it really does not seem like an ideal solution, especially as previously empty metrics are now returning a zero.
Is there any way to achieve this in SSAS? Perhaps in the way unknown members are processed?
Thanks,cccparkhill,
What you did is the only way to achieve what you want.
In cubes you connect Dimensions throw Facts. By definition dimensions are
“How do business people describe the data that
results from the business process?”
and facts are “What are we measuring?”, noting the underlined
we can understand that _normally and usually_ the relation between the dimensions and the facts represent incidents happened in the real world ... the way you approach, think, and deal with dimensions and facts in cubes is different than dealing with tables
in normal relational transnational database.
Personally I do what you did when I want to achieve "Left join"
Please mark this reply as the answer
or vote as helpful, as appropriate, to make it useful for other readers -
In powerpivot we are facing problem in resolving the many-to-many relationship between tables.
Current table schema is:
Having 4 tables-
Bills - columns are- Bill No(primary key)
Billing Fee Table-Fee ID(primary key), Bill Type, Sub Bill Type
FeeList Table-FeeList ID(primary key),Fee ID(Foriegn Key to Billingble),
Bill No(Foriegn Key to Bills)
Payments Table-Pay ID(Primary Key), Bill No(Foriegn Key to Bills)
Bills is the primary table for Feelist Table
and Payments Table -Bill No is the primary key.
Billing Fee Table is primary table for FeeList Table -
Fee ID is the primary key.
To create a pivot table using Payments Table, I need
Bill Type and Sub Bill Type. Hence fetched from
Biling Fee Table to FeeList Table based on the
Fee ID column using RELATED function.
As FeeList Table and Payments Table is having duplicate
Bill Nos, it is not possible to get Bill Type and
Sub Bill Type to Payments Table. I am trying to use LOOKUPVALUE
function to get data based on the Bill No, as there is no direct relationship exists between these two tables.
I have tried using
=LOOKUPVALUE('FeeList Table'[Sub Bill Type], 'FeeList Table'[Bill No], 'Payments Table'[Bill No]) function. But
the lookupvalue function returns an error if a duplicate is found.
Error is as below:
Calculation error in column 'Payments Table'[Sub Bill Type]: A table of multiple values was supplied where a single value was expected.
Kindly assist to resolve this issue.
ThanksHi Rekha,
What should your LOOKUPVALUE return if multiple rows are found in the FeeListTable? By the way it should work if a really finds "duplicates" (i.e. multiple times the same return value) but fails if it returns multiple rows with different values.
If you for example would want to return the first entry that was found, you could try (have not checked in PP for typos):
CALCULATE(MIN('FeeList Table'[Sub Bill Type]),
FILTER('FeeList Table',
'FeeList Table'[Bill No] = 'Payments Table'[Bill No]
Edit: a very nice way to handle Many-to-Many relationships is explained here:
http://blog.gbrueckl.at/2012/05/resolving-many-to-many-relationships-leveraging-dax-cross-table-filtering/
Julian Wissel | BI for NAV @ http://en.navbi.com | Blog @ blog.navida.eu -
Many to many relationship mapping.
Hi
I have a basic question on how to create a good java class model (POJOs) based on the database model.
I Have to follwing tables
Table1 with columns as
ID1
name
description
Table2 with columns as
ID2
dateCreated ..etc.
Since there is a many to many relationship between table1 and table2
So to map that we have a table3 with columns
ID3
ID1 // fk table1
ID2 // fk table2
browserName
startTime
endTime
So when I create Java classes:
// corresponding to table 1
Class MyTable1
private Integer ID1;
private List ID2; // to map with the table2
// corresponding to table 2
Class MyTable2
private Integer ID2
private List ID1; // to map with table 1
In this way I can create my classes. Is this the best way to put it together.
And where to put the attributed specific to table3. Like the BrowserName and the StartTime and the EndTime.
Any suggestion please.
Thanks.Your names leave a lot to be desired. Let's start with an example. Suppose I have a problem involving employees and the tasks assigned to them. An employee may have any number of tasks assigned to them and a task can be assigned to any number of employees. The assignment itself has more attributes: when it was assigned, its priority and so on.
public interface Employee {
Long getId(); //etc...
Set<Assignment> getAssignments();
void setAssignments(Set<Assignment> assignments);
public interface Task {
Long getId(); //etc...
Set<Assignment> getAssignments();
void setAssignments(Set<Assignment> assignments);
public interface Assignment {
Long getId(); //etc...
Employee getEmployee();
void setEmployee(Employee employee);
Task getTask();
void setTask(Task task);
}This assumes you want to navigate in all directions: from an employee to their assignments, from a task to its assignments and from an assignment to it employee and task. -
Many to many relationship does not work on certain role played dimension
Hi,
I have a cube with role playing Account dimension, used once as “Account” and once as “Other Account” dimension.
I’ve added Trip dimension related to the account dimension by a bridge table AccountTrip
making a many to many relationship (many accounts can be in one trip and one account can go to many trips).
When I added the bridge measure group to the cube, I saw in the dimension usage tab that the relationship between the bridge and the Account dimension was done automatically.
I added the trip dimension with regular relationship to the bridge measure group and many to many relationship to the main fact table using the bridge group.
All compiled fine and gave correct results. Then I noticed that when slicing the fact table by the Other account dimension I get correct results,
but when I add the Trip dimension I get the results as if I was slicing by the Account dimension, not by the “Other account” dimension.
I checked the cube and noticed I did not set the relationship between the bridge to the “Other Account” dimension (role playing). I set it now (regular relationship, same as the account dimension), but still getting the same results.
Conclusion- when slicing by the new Trip (M2M) dimension and the “Other Account”
(role played) dimension I get the results of the “Account” dimension, not those of the “Other Account” dimension.
I checked the relationships of the “Other Account” dimension in the cube but it looks correctly set (to the external account of the main fact table and to account of the bridge table).
(Just to note I have two other bridges on the cube which are not related and don’t look like they need to be related, plus two other measure groups of the main fact table used for distinct count which are related appropriately).
What else should be done???
I would greatly appreciate your help!
Thanks
NamnamiThe update server is down; try this temporary workaround
App Store>Purchased>Select "All"
Note: Look out for apps that have the word "Update"
http://i1224.photobucket.com/albums/ee374/Diavonex/9c256282736869f322d4b3071bbb2 a82_zps51a6f546.jpg -
Many to many relationships (Again)
Hello,
There was a posting on above subject.
Re: Many to many relationships between Fact and Dimension
They asked to look chapter 3 in the user's guide... <http://download.oracle.com/docs/pdf/B10996_01.pdf>. chapter 3 talks about defining Oracle Data Objects. I could find above subject in chapter 3 .
Here is our situation We are using OWB 9.2.0.2.8. We are in a situation to build ETL from denormalized (relational tables) source to normalized target (relational tables). It is not a data warehouse situation. It could be a reverse of data warehouse. As given below
Supplier >--------------------<Item
becomes Supplier ------<supp_item.>--------------Item after many to many resolution, Where supp_item is interface table.
We were able build Supplier and Item through seprate mapping. I could build supp_item through post mapping process. I look for alternate thought as well.
We are using separate sequence number for Supplier , Item and supp_item. The sequences will be surrogate keys such as Supplier ( Suppseq(PK)), Item (Itemseq (PK)) and supp_item(suppitemseq (PK)) Here is the sample
Supplier
001|S001
002|S002
003|S003
004|S004
Item
001|I001
002|I002
003|I003
Supp_item (Suppseq|ItemSeq)
001|002 --- S001 I002
001003 -----S001 I003
001|004 ----- S001 I 004
002|002 ---- S 002 I002
002|003 ---- S 002 I003
003|001 --- S 003 I 003
003|003 --- S 003 I 003
Did any body face such situation? What is the best way to create a mapping (single map or multiple map with processflow sequence) for this situation?
Let me know the steps exercised in OWB for this situation.
I appreciate your help.
Regards
RamHi Ram,
The easiest way to do this, would be to:
- Load supplier in one mapping and generate the surrogate key.
- Load item another (or the same) mapping and generate the surrogate key.
- Load supplier_item in its own separate mapping, using a key lookup (or join) to (with) the supplier and item tables.
Needless to say, you should create unique keys on the natural key of the supplier and item tables, to enable quick index-based lookups and make sure you get one unique value for every value of the natural key.
Hope this helps,
Mark.
Maybe you are looking for
-
Multiple Image Uploading Question
Please forgive my ignorance here but I saw the question on multiple image uploading and this is something i have been trying to do for a few days now without any success. I am using CS3 with ADDT and PHP I want to allow my users to be able to upload
-
I have a form in LiveCycle ES2 that has an ODBC connection to an Access 2007 database. The form works great and all the data populates the form just fine, but next I need a way to save the generated form with the data so it can be sent and signed by
-
Upload iTunes To iPod - Please help
My daughter's iPod already has about 50 songs on it. When I plug it in to the cpu with iTunes open, I get a message prompt that I will have to erase all the songs currently stored on her iPod in order to "sync" with my iTunes library. Is there a work
-
Want to know ram supported in my laptop Dv6 3004 tu
Hi, My ram is of 2gb ddr3. I am planning to upgrade my ram upto 6 gb. I want to buy extra 4gb ram from my vaccant slots. But Which type it will support. Type Speed Capacity Voltage Any recomends brand????? Plese help me out hp.
-
The service provider claimed that I had used more than 1GB in the previous month while my iPhone just showed less than 500MB, I am sure I did not use that much (my normal usage is around 400MB). Service provider is not willing to adjust the bill and