Antithesis Filtering on Dashboard

Samuel.
Samuel. Contributor

Hi all,

When filtering on a dashboard - traditionally, my process is to have a few filters at the top of the dashboard, which are my top-level generic page filters. This process works great for me, and it's standard across our dashboard offerings that our audience understands.

I've now started building a dashboard where I have two cards - one that shows defects in a filtered project and the other that I want to show all other defects, not in that filtered project - I guess I'd describe it as the antithesis of the first card.

This gives me a bit of a conundrum as logically, when filtering on a project at the top of the dashboard; I want the first card to filter on "in" project and the other card to filter on "not in" project. However, I'm struggling to find a process, whether, through selective filtering or another way, that would allow this to work. Has anyone encountered this problem and found a solution, or does anyone know of a feature to achieve this desired result?

Best,

Stuck

Best Answer

  • MichelleH
    MichelleH Coach
    Answer ✓

    @Stuck That's an interesting use case. The best way I can think of to accomplish this is to create an "anthithesis" dataflow for that particular card. You can do this in MagicETL following these steps:

    1. Add a filter tile to exclude all rows for a particular project (e.g. bananas)
    2. Rename the field that is used for the project filter (e.g. `Project2`)
    3. Add a new column with the same name as the original project filter and a constant value of the project that was excluded in the ETL filter ('Bananas')
    4. Repeat steps 1-3 for each project
    5. Append all branches

    Once the dataset is set up, update the antithesis card to replace any mention of the project field to Project2. Then when a user filters the dashboard on the original project field, the card will filter to include rows of all other projects.

Answers

  • Hi @Stuck are there other dashboard filters that you want to apply to these cards? If not, I'd suggest disabling the filter interaction on those cards. You can do this under Edit Dashboard > Card Options > Change Filter Exceptions > Allow Filtering

  • Samuel.
    Samuel. Contributor

    Morning @MichelleH,

    Unless specified otherwise, our users select these page-wide filters that will impact the whole page.

    E.g. There are N cards on a dashboard - users filter at the top by their project portfolio to be specific to their area, and when nothing is selected, the KPIs/visuals reflect an overview of all projects.

    The difference is in this specific card on a new dashboard; my goal is to have one card filter against their selected project instead of for it.

    In laymens' terms - We have a bowl of fruit - there are 4 bananas, 2 plums, 1 apple and 3 oranges. I would have a KPI figure stating 10 pieces of fruit are in the bowl. If you came along and said I only want to focus on the bananas, I could have two ways to tell a story - how many bananas are in the bowl (4) and how many non-bananas are in the bowl (6). The first would be the filter - the second would be the antithesis of the filter.

  • MichelleH
    MichelleH Coach
    Answer ✓

    @Stuck That's an interesting use case. The best way I can think of to accomplish this is to create an "anthithesis" dataflow for that particular card. You can do this in MagicETL following these steps:

    1. Add a filter tile to exclude all rows for a particular project (e.g. bananas)
    2. Rename the field that is used for the project filter (e.g. `Project2`)
    3. Add a new column with the same name as the original project filter and a constant value of the project that was excluded in the ETL filter ('Bananas')
    4. Repeat steps 1-3 for each project
    5. Append all branches

    Once the dataset is set up, update the antithesis card to replace any mention of the project field to Project2. Then when a user filters the dashboard on the original project field, the card will filter to include rows of all other projects.

  • Samuel.
    Samuel. Contributor

    Thanks, @MichelleH.

    Interesting idea - it's a shame there are around 20 projects because I think that solution would be manageable with smaller numbers and if the number of projects was static, which in this case it's not. I'm going to have to push back on the dashboard requirements.

    Maybe one for the idea bank as an improvement for filter interactions?

  • @Stuck I agree that this would be a good request for the Ideas Exchange. You could also consider using a cross-join in your ETL if it's too cumbersome to manually filter 20 projects.

  • Samuel.
    Samuel. Contributor
    edited February 2023

    This has now been added to the Ideas Exchange under: Antithesis Filter Interaction

  • I think you can do this using the variable feature. If you haven't played around with that yet, here is a demonstration of it that was just done today. https://www.youtube.com/live/ZCQwiBq8PHc?feature=share

    There are some other introductory videos that are worth watching as well.

    **Check out my Domo Tips & Tricks Videos

    **Make sure to <3 any users posts that helped you.
    **Please mark as accepted the ones who solved your issue.
  • ST_Superman
    ST_Superman Domo Employee

    I agree with @MarkSnodgrass - I would attempt this with variables. Create a variable with your full project list. Then create a calculated field for "Selected Project".

    case when variable = `ProjectName` then 'Selected' else 'Not Selected' end
    

    When you build your cards, you would use two different filters, one filtered for 'Selected' and one for 'Not Selected'

    Hope that makes sense.

  • Samuel.
    Samuel. Contributor
    edited February 2023

    Hey @MarkSnodgrass and @ST_-Superman-_,

    Great suggestion! Thanks for this - having played around with the variables process - it works as intended and solved the baseline problem!

    Still, it suffers from the caveat that the variable selector process is not dynamic, and when dealing with many projects, the repetition in upkeep and setup is crap. It's a shame you can't point a list of values at a variable. Can this be achieved with the DOMOs API process?