Dynamic filtering between tables

I understand that component views allow you to dynamically filter one visual output based on a selection event in another, but this functionality only seems to work if both views are based on the same table. Often, I want to filter a view based on selection events in a view from a separate but related table.

For example, I might want to present a structured, formatted list of words (something more specific than what can be achieved with a nominal row filter widget, for example) alongside a second table of example sentences for each word. I would like to be able to filter the examples based on the selected word. I can achieve something similar to this by using either a row filter widget or a tag cloud to show me a unique list of terms to select from, but often these views are not sufficient for my needs. Hence my desire to filter based on selection events from a different table (in this case, I would use a Table View to list the unique terms).

I appreciate that this would be more complex operation to implement, as some kind of relationship or filtering definition would need to be defined between the two tables. But it would make the component views in KNIME vastly more useful and powerful.

Perhaps the new Refresh Button Widget is supposed to go some way towards providing this functionality. However, so far I have been unable to get it to work (it asks me to use the CEF browser, which displays the view at the wrong resolution), and in any case, it would still force the use to hit the Refresh button every time they make a selection.

So I suppose I am asking, firstly, if there is currently any way to achieve what I am describing, and if not, if there are any plans to implement this kind of functionality in the future?

Hey there @AngusVeitch1
Yes!
There are currently two ways to select from one table and visualize in another table via interactive events within the same view.


The first way is quite hidden and it has been around for years. It uses a setting in manipulation nodes called hilting. This is how it works:

  1. Join first and second table on the common identifier column
  2. Groupby on on row id of first table and filter out columns of second table
  3. On a second branch Groupby on on row id of second table and filter out columns of first table
  4. Turn on hiliting on both Groupby nodes (checkbox in dialogue)
  5. Add views after GroupBy nodes

Optionally you can also add regex renaming of columns to automate the filtering of columns automatically without selecting them one by one. Here is the full example:


The second way to do it is with the Refresh Button Widget which is way more intuitive. Unfortunately, like you mentioned, the CEF browser has that zoom / resolution issue. This issue will be fixed in 4.4.1 (hopefully before the end of summer) but it does work like a charm if you deploy on KNIME Server via the KNIME WebPortal. Once the bug fix is out I will release a collection of examples and a blog post using the new Widget node.

Just for you a sneak preview of what you are asking for:

Enjoy the cold summer in Australia,
Paolo

5 Likes

Thanks @paolotamag - I never would have guessed the hiliting method on my own! I had no idea that hiliting had been extended to JavaScript views, but that is very cool.

I can’t wait to see the Refresh Button in full flight - it will be a game-changer!

Cheers.

2 Likes

Hi there again,
please find the blog post with more /Refresh Button Widget Examples here:

on the KNIME Hub:

4 Likes