Menu

#282 Ravel Operators--Filter

Backlog
open
nobody
None
4normal
2026-08-26
2023-01-21
Steve Keen
No

This is a sample database distributed with Tableau as loaded into Ravel. I could have chosen to leave a few dimensions out and aggregate the data rather than insisting on unique values; this would have reduced the dimensionality a bit, but it would still have had a lot of dimensions.

This shows one advantage of Tableau's approach over ours--at present.

If I want to extract just sales by Segment by Date, it's an easy operation in Tableau: just drag the Date dimension to the Columns of a Pivot Table and the Segment to the Rows (or vice versa).

To do the same thing in Ravel, I have to collapse the other 15 dimensions and then attach the collapsed Ravel to a variable, another Ravel, or plot or sheet.

We could address this by having a Ravel operator called Filter. It would take the dimensions in a Ravel and filter out the values pertaining just to the selected dimensions. The others could be aggregated by the aggregation operator currently applied to each axis.

There's also an issue in accessing the individual axes and values with this many axes. A filter operator could simplfy that a lot, by producing sub-Ravels where various axes are aggregated.

Finally, one thing Tableau has that we don't is a flat view of the entire data set. We can pinpoint individual values using the dimension axes and the selector dot, but showing the whole flat file (prior to implementing the Librarian approach) isn't possible. One way to support this--which should be raised as another ticket--is to have two outputs from data input parameters. The bottom/dimensioned one is what we have now; the top/flat file one would give the sort of view we currently show of the csv file on import.

2 Attachments

Discussion

  • Steve Keen

    Steve Keen - 2023-01-21

    A further thought here. The filter operation could list all the dimensions in the Ravel and then select the ones to be the output from the filter operation. The ones that aren't output would then show the aggregation being applied to them. The default would be Sum, as is the case now and is also the standard for Tableau. But the user would be able to select these on the Filter form: Sum, Average, SD, etc.

    This one operator could go a long way to enabling Ravel to do what Tableau users make extensive use of within Tableau, so I'm going to bump it up one priority level.

     
  • Steve Keen

    Steve Keen - 2023-01-21
    • Priority: 4Urgent --> 3ReallyUrgent
     
  • Steve Keen

    Steve Keen - 2023-01-21

    I just tried to emulate what Tableau can do easily--aggregate a subset of data along 2 dimensions--by collapsing aces, and the program froze. Here's the sceenshot. Of course I can't save it in its current state, but it's the same file attached earlier in this thread.

     
  • Steve Keen

    Steve Keen - 2023-01-21

    This may have been a memory issue caused by Tableau! I had 9 workbooks open, and after I shut Ravel down I got "memory low" error messages from Tableau.

     
  • High Performance Coder

    Re the filter operation. Of course, this is available right now, but disguised as an import operation. If you select ignore on all the axes you want to reduce, then select the appropriate reduction operation on "Duplicate Key Action". This is exactly the filter operation described above.

    Is this something that should be split out as a separate operation on the canvas? Maybe, although it is better to deal with this operation before data gets into memory, rather than afterwards, which is why it is embedded in the import operation. When we do the "librarian" feature, this functionality needs to be available there too.

    Maybe there is a use case for small highly dimensional datasets, in that you might want the whole data embedded in the .rvl file, to send the result on to others without having to supply the raw CSV file.

     
  • Steve Keen

    Steve Keen - 2023-01-22

    Actually, this sample dataset is an argument in favour of something I'd suggested earlier before you developed the icon view of a Ravel: the vertically stacked Ravel.

    Here, the unusability of the Ravel is due to the radial display of axes: with 18 axes, the dimension names, selected values, and in collapsed mode, the axes themselves overwrite each other. But if there were a stacked view as well as a radial view, in stacked mode each axis would be easily discerned from the others.

    I'll make a ticket to that effect and we can discuss further there.

     
  • High Performance Coder

    • Milestone: Pascal --> Backlog
     
  • High Performance Coder

    • labels: --> feature
     
  • High Performance Coder

    • Priority: 3ReallyUrgent --> 4Urgent
     
  • High Performance Coder

    Ticket moved from /p/minsky/ravel/290/

     
  • High Performance Coder

    • labels: feature -->
    • Priority: 4Urgent --> 4normal
     

Log in to post a comment.