I’m building a report in QuickSight based on responses to a product evaluation form. One of the visuals I’m working on is a bar chart, where:
The x-axis represents scores from a numeric question.
The y-axis is a count distinct of response IDs.
My goal is to allow users of the report to click on a bar in the chart and have that selection filter a table in the same analysis. The table displays open-text answers, and I want it to show only the responses with the same response IDs as those represented by the selected bar.
I’ve tried to achieve this using a navigation action and parameters, but I haven’t been able to get it working as expected. Even worse, when navigating to the same tab within the analysis:
Users cannot reset the filter by clicking on an empty space in the chart.
This results in a poor user experience, as they are effectively “stuck” in the filtered state unless they manually reset the filter.
Is there a recommended way to implement this interaction in QuickSight?
Ideally:
A user can click on a bar to filter a table by a shared field (response ID).
The filter can be cleared easily (e.g., by clicking away from the bar).
Let me try to clarify the core issue a bit more directly.
In your example, the bar chart filters the table using a field (like date) that is present in both the chart and the table rows. That works well when the same field exists across all relevant rows.
However, in my case, that logic breaks down.
Let me explain more precisely. My dataset consists of a single table with the following columns: response_id, question_id, question_title, answer_numeric, and answer_text.
Each row represents a single answer to a question.
Rows from the same form submission share the same response_id.
Numeric answers are stored in answer_numeric, open-text answers are in answer_text.
Open-text answer rows have null in answer_numeric.
So when I build my bar chart:
The x-axis is answer_numeric.
The value is the count distinct of response_id — not count of rows, but count of submissions that gave, say, a score of 7.
Now here’s the problem: If I use your suggested approach and filter the table directly on answer_numeric = 7, the table is empty.
That’s because the rows I want to show (the text responses) have no value in answer_numeric. They only share the same response_id with the numeric answer.
So what I actually need is:
Click on a bar (e.g., score 7).
Capture the response_ids behind that score (those counted in the bar).
Use those response_ids to filter the table showing the open-text responses.
In other words, the only shared field between the numeric answer (in the bar chart) and the text answer (in the table) is response_id, and that is what I am counting and need to use as the linking key.
I really hope there’s a way to make this kind of interaction possible, because right now it feels like a dead end — or a feature gap — in QuickSight.
Thanks again for your time, and if you or anyone else has a workaround that fits this pattern, I’d be grateful to hear it.
Without a common field filtering will not work. You could consider including the answer_numeric in your table; but hide it and see if that filters the results; but the field is hidden as you desire.
I want to clarify something that might have been misunderstood:
There is a common field between the bar chart and the table — and it’s response_id.
The issue is that in my original structure, the numeric values and the open-text answers live on separate rows, each tied to the same response_id. So even though I’m using response_id for counting in the bar chart, and it does exist in both visuals, QuickSight’s filtering doesn’t resolve through it in the way I need.
That said, after further thought, I’ve found a solution — but it requires handling in the data preparation layer.
What I’ve done is this:
In the dataset prep (prior to loading into QuickSight), I spread the numeric answers across all rows sharing the same response_id. This means each row — whether it originally contained a numeric answer or not — now includes new columns holding the numeric values for the corresponding questions.
With this denormalized structure:
Each row contains the open-text answer, plus all the numeric scores from that submission.
I can now create a bar chart using one of those new numeric fields.
When I apply a filter by clicking a bar, it works correctly — because every row (including text answers) now carries the numeric value, and the filter condition can resolve.
It’s not something QuickSight handles automatically via visual interactions or joins, but restructuring the data in this way bridges the gap.
I do hope QuickSight considers enhancing visual filtering to support more relational-style interactions in the future. Tools like Spotfire handle this type of logic more naturally, and it would be a powerful upgrade for QS too.