How to create 'apply button' for control

Hello, :wave:
I want to create Quicksight Dashboard about Cloudtrail Log.
And I created many controls for searching cloudtrail events.
(like eventname, username, eventtime …)

Every time I press one control, it keeps getting updated. It’s very complicated. :exploding_head:
I need “apply button” that allows to apply multiple controls at once.
The table must change at once if I press “apply button”.

Hi @jung,
Welcome to the Quick Sight community! Would you be able to share a couple screenshots of the controls in discussion and the visual being updated so that we have some additional context?

Thank you!

Hello @Brett,
As shown in the picture below, the graph is updated whenever I modify one control when there are multiple controls.
I want to modify several controls and update the graph when I press the Apply button at the end.

Hi @jung,
Thanks for the additional explanation! While there is no simple setting feature, there is a work around that could be used in this scenario. There are quite a few steps but please see below for a walkthrough:

Start by creating a parameter that will return True or False
image

Next, you’ll create 2 calculated fields that will be used in making a dynamic button:
‘Apply Filter’: ifelse(${ApplyFilter} = 'False', 'True', 'False')

  • Note: You’ll hide this field

‘Filter Button’: concat('Click to ', ifelse(${ApplyFilter} = 'False', 'apply ', 'remove '), 'filters')
image

Next, you’ll create a table visual (for the button). Hide the header, hide the value for Apply Filter Param field and format as a button.
Create a navigation action to set the ApplyFilter param to the value field:
image

image

Now, to filter the visual, check the value of the Apply Filter parameter and the value selected in the dropdown.
IsNull($Parameter) to check for select all in a single value, in(NULL, ${Parameter}) to check for select all in a multi value.
So you’ll need to create this calculated field for each of your control values:

`ifelse(`
`    ${ApplyFilter} = 'True' AND (${EventName} = EventName OR isNull(${EventName})), EventName,`
`    ${ApplyFilter} = 'False', EventName,`
`NULL    `
`)`

Then, replace the field in the visual with the new calculated field(s) and apply a filter to exclude nulls when necessary
image

Last, remove any filters that are linked directly t othe controls, otherwise this will not work.

Let me know if you have any additional questions!

Did this solution work for you? I am marking this reply as, “Solution,” but let us know if this is not resolved. Thanks for posting your questions on the Quick Sight Community!

@Brett Thank you for your reply.
I made it as simple as you said.
If I drop down through the EventName control at the top and select it, it will not be filtered directly into the table, but will be applied when I press “Click to apply filters”.
If I select the EventName control without pressing “Click to apply filters”, the result is not applied after the table has been loaded.
Can’t you make it so that the table doesn’t load when I don’t press the button?

Hi @jung,
I just want to make sure I understand the question correctly. Are you looking for the table to not be present at all until you hit ‘click to apply filters’?

If that’s the case, you would need to use the free-form layout for the sheet, and utilize conditional rules to display the visual when the ApplyFilter Parameter is set to true.

@Brett Hello
No.
To be precise, I want the table to remain in its previous state without being updated until I press the Apply button.
The method you told me has the same result, but I don’t even want the table to be loaded.
The key is that the table doesn’t load.

Hi @jung,
Is your dataset running on Direct Query? If so, that is why you are seeing the visual load since it’s actively pulling data from your database.

You can hide the visual from view (with the conditional rules logic), set your dataset to spice, or apply some type of static default value that will load no data. Otherwise, this will happen every time you launch the dashboard since it needs to query your data.

This Apply button feature has been requested by various users since 2021 three year since then still Apply Button requirement is relevant but why Quick Sight development team has not released this? @Xclipse @Brett

I just started working on quicksight and amazed that this functionality is missing. If there are multiple input parameters you dont want the query to hit the database everytime until all the selections have been made.Think about the number of calls if its an operational report.
Other issue i see is if i have single filter selection in the report the Apply function is only available when its multi listed there is no apply option if its a single selection
Had to convince leadership that this basic functionality is missing…

Hello @Brett ,

Is it possible for you to create an example in the playground based on the solution you proposed? I was trying to understand how it’s working with multi-valued controls and don’t understand the solution.

Hi all,

Wanted to add steps that worked for me when trying to implement this solution. Hopefully this helps anyone running into a similar challenge.


Setting up filter controls with “Apply” Button

Description: The purpose of these instructions is to prevent dashboards/visuals from automatically filtering when a user makes a filter selection. This approach uses parameters to queue up a selection of filter values, and using the navigation action in the form of a table visual to then fire all these filters at once.

Step 1: Create Parameters

  1. Open the Parameters pane (left panel)

  2. Create the selection parameter:

    • Click Create parameter

    • Name: p

      • Replace FieldName with your field name
    • Data type: String

    • Values: Multiple values

    • Default: leave blank

  3. Close out of the parameter modal box

  4. Create the applied parameter:

    • Click Create parameter

    • Name: pApplied

      • Replace FieldName with your field name
    • Data type: String

    • Values: Multiple values

    • Default: same as above

  5. Close out of the parameter modal box

Note: This is just for string fields.


Step 2: Create the Control

  1. Click the three dots on the parameter p → Add control

  2. Enter name

  3. Set display as Dropdown (multi-select)

  4. Link to a dataset field and select the appropriate field from your dataset

  5. Leave everything else as default and select Add

  6. Position the control where you want users to make selections

Note: This control does NOT filter anything on its own — it only updates the p parameter.


Step 3: Create the “Apply” Button (Table Visual)

  1. Add a calculated field:

    • Name: Apply Button Label

    • Formula: “Apply filters”

      • Name it whatever you’d like. This will be what your end-users see on the button.
  2. Create a new Table visual on the sheet

  3. Add only the Apply Button Label field to the table

  4. Style it to look like a button:

    • Hide column headers

    • Remove gridlines/borders

    • Resize to be small and compact

    • Position it in an easy to locate area of the dashboard


Step 4: Add Navigation Action to the Apply Button

  1. Select the Apply button table visual

  2. Go to InteractionsAdd action

  3. Configure:

    • Activation: Select

    • Action type: Navigation action

    • Target sheet: Same sheet (navigates to itself)

    • Under Parameters, add mapping:

      • Parameter: pApplied

      • Set Parameter value: p

o Click Add

o Click Save


Step 5: Create Filters on Your Data Visuals

  1. Create a filter on the field

  2. Set filter type: Custom filter

  3. Condition: equals

  4. Value: parameter ${pApplied}

  5. Apply this filter to a single visual, sheet, or multi-sheet (your choice on what this filters)


Repeat Steps 1-5 (except step 3) for any additional filter controls you’d like to expose to your end-users.