Hi Denny,

To better understand it, let's focus on how pointerFilters work.

Let's stick with the example I gave, here it is once again:
1. We first define importable/exportable links among three datasets: A, B and 
C, now we can do queries joining any two datasets of A, B and C.
2. Now let's defined a pointerFilter (named FilterP) in dataset A, FilterP 
points to Filter1 (which is a normal filter) defined in dataset C.

When we query against dataset A, we can use FilterP just like any other normal 
(non pointerFilters) filters, actually end user would not be able to notice any 
difference. The trick is when we specify criteria for FilterP, let's say 
FilterP = "xyz", BioMart will forward this to Filter1 in dataset C as Filter1 = 
"xyz". At the conceptual level (may be different in the real process) the query 
gets executed like this: execute query on dataset C with Filter1 = "xyz"; rows 
in dataset C passed the filter get returned with attributes (usually one 
attribute, eg, some kind of ID) defined in the exportable (remember exportable 
consists of one or more attributes?) in dataset C; these rows of attributes 
(eg, list of IDs) then are passed to the corresponding importable (remember 
importable acts as filter) in dataset A; finally rows in dataset A satisfied 
the filter (usually with matching ID) gets returned back to the end user. As 
you can see, the end user thought he/she fired a single dataset query on 
dataset A, it's actually a joined query between datasets A and C.

Now, let's say the user fires the same query on dataset A but specified a join 
with dataset B (pulling some attributes from B). The process described above 
will happen very much the same way, and it will be followed by a joined query 
with dataset B. As a whole this time the query is actually a 3 datasets query.

Hope this makes better sense to you.

Please feel free to let me know if I can be of any further help on this.

Kind regards,
Junjun



________________________________
From: Chan, Denny (NIH/NCI) [C] [mailto:[email protected]]
Sent: Tuesday, March 17, 2009 2:19 PM
To: Junjun Zhang
Subject: RE: [mart-dev] Is linking more than 2 datasets possible?

Hi Junjun,

I am not quite clear how pointerFilter works.   When user join dataset A and B, 
 how can user specify criteria for Filter1 in dataset C?

Thanks in advance,
Denny

From: Junjun Zhang [mailto:[email protected]]
Sent: Friday, February 27, 2009 2:32 PM
To: Robert Hamon; [email protected]
Subject: RE: [mart-dev] Is linking more than 2 datasets possible?

Hi Robert,

At the moment, BioMart doesn't directly support more than 2 datasets joins. It 
will be supported in the next BioMart release.

However, it is possible to bypass this limit to some extend in the current 
BioMart release. For example, you define importable/exportable links among 
three datasets: A, B and C, and want to join them. The current release can only 
support join between any two datasets of the three. Now what you can do is to 
define pointerFilter in one dataset and it actually pointing to filter that 
belongs to the other dataset. Let's say there is a filter named Filter1 in 
dataset C, you can define a pointerFilter in dataset A that points to Filter1 
in dataset C. Now when you do join between dataset A and B, you actually join 3 
datasets.

Please refer to BioMart document for details about how to defined 
pointerFilters. Of course, please feel free to contact us if you need further 
assistance.

Best regards,
Junjun



________________________________
From: [email protected] [mailto:[email protected]] On Behalf Of 
Robert Hamon
Sent: Friday, February 27, 2009 12:48 PM
To: [email protected]
Subject: [mart-dev] Is linking more than 2 datasets possible?

I would like to link 3 datasets using the biomart web interface, is this 
possible?

We created the link attributes and link filters in marteditor but find no way 
to link more then 2 datasets together in the web interface.

Robert

Reply via email to