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
