Display Your Slicer Selections in Power BI

By Akash Rajendran Nair

Introduction

Harnessing slicers is one of the most intuitive ways to let users filter a report, but without visual feedback on what’s chosen, your users can get lost. We will discuss:

  • Building a space-saving drop-down slicer with multi-select.
  • Writing DAX measures that dynamically display “No selection”, “All selected”, single items, or a comma-delimited list.
  • Surfacing those measures in Cards Visual. 

By the end, you’ll have a polished Power BI report that always tells users exactly what they picked.



Why Displaying Slicer Selections Matters

When you give users a drop-down slicer with multi-select, a vertical list slicer or a tile slicer, three UX problems emerge (especially for 20+ items):

  • Hidden context: Once collapsed, the slicer shows nothing, and users have no clue which items are active.
  • Clutter vs. space: A vertical list eats canvas real estate and forces scrollbars; a tile slicer for 20+ items becomes unwieldy.
  • User frustration: Endless clicking and guessing “What am I filtering?” leads to confusion and abandoned dashboards.



By adding a small, dedicated display—“You picked: …”—you instantly:

  • Reinforce user context and confidence
  • Eliminate guesswork about applied filters
  • Keep your canvas clean and focused on the data


What’s in the Model

Let’s explore through a relatable example: a mini Power BI model that tracks student club enrollments. At its heart is an enrollment table plus two supporting dimension tables.

1. Club Membership (Enrollment)

Student Name
Mentor Name
Club Name
Joined Date
Leaving Date

2. Student Details

Student ID (Primary key)
Student Name
Age (14–18)
Gender (Male, Female, Non-binary)
Ethnicity (White, Asian, Black, Mixed)

Connection: Student Details → Club Membership
A one-to-many relationship on Student ID, so each student can have multiple enrollment records.

3. Clubs

Club Name
Club ID (Primary key)

Connection: Clubs → Club Membership
A one-to-many relationship on Club Name, letting you slice and dice all memberships by club.



With these three tables wired up, you get a classic star schema:
• Clubs and Student Details as dimensions
• Club Membership as the central fact/enrollment table

That structure not only makes filtering and aggregation efficient, it also sets you up perfectly for our “Selected Clubs” display measure, ensuring users always know exactly which filters are in play.


The Solution: “Selected Clubs” Measure

Select the Club table and from the ribbon select New Measure and paste the DAX below.

Selected Clubs =
VAR _selectedCount = DISTINCTCOUNT( Clubs[Club Name] )
VAR _totalCount    = COUNTROWS( ALL( Clubs ) )
RETURN
SWITCH(
  TRUE(),
  _selectedCount = 0,           "No club selected",
  _selectedCount = _totalCount, "All clubs selected",
  _selectedCount = 1,           "Club: " & SELECTEDVALUE( Clubs[Club Name] ),
  "Clubs: " &
    CONCATENATEX(
      VALUES( Clubs[Club Name] ),
      Clubs[Club Name],
      ", "
    )
)


How it works

  1. Count what’s picked (_selectedCount) vs. total available (_totalCount).
  2. SWITCH(TRUE(),…) checks:
  • Zero → “No club selected”
  • All 20 → “All clubs selected”
  • Exactly one → “Club: X”
  • Otherwise → “Clubs: A, B, C, …”

In this measure, VALUES( Clubs[Club Name] ) Returns a single-column table of all the currently selected club names from the slicer. It’s dynamic, so its contents change based on what the user picks.

  • If the user picks no clubs, it returns an empty table
  • If the user picks one club, it returns a single row with that name
  • If the user picks multiple clubs, it returns a list of those selected names
  • If nothing is filtered, it returns all unique club names from the Clubs table

In this part of the DAX:

"Clubs: " & CONCATENATEX( VALUES( Clubs[Club Name] ), Clubs[Club Name], ", " )

The VALUES() function feeds the list of selected clubs into CONCATENATEX, which takes each item and stitches them together into a single string with commas, as it is an iterative function.

So if the user selects "Club1", "Club2", and "Club3", the result will be:

Clubs: Club1, Club2, Club3

Without VALUES() Power BI wouldn’t know which distinct items you want to operate on in the current filter context.

If, for instance, you used the 'Club Membership' table and there was no 'Clubs' Dimension table, and you used just 'Club membership'[Club Name] Inside CONCATENATEX() without wrapping it in VALUES(), you might get duplicate entries or unexpected results if the table has repeating values. VALUES() safely returns distinct items based on the current filter.

Add a Card visual

  • On the ribbon, select Home → Card (or, in the Visualisations pane, click the Card icon).
  • A blank Card placeholder appears on your canvas.
  • In the Fields pane (right side), expand your table that contains Selected Clubs.
  • Drag Selected Clubs onto the Card’s Values well (or directly onto the blank Card).



Let's test it out

Add a Slicer from the visualisation plane, and add the Club Name column from the Clubs table.



 In the format painter, change the Slicer style to drop down and selection to show select all.



Now apply All Selected in the Slicer


Now, apply the single select, for example, Club 10, in the slicer.


Now apply Multi select, for example, Club 10,11, and 12 in the slicer.



Conclusion

By adding these dynamic measures and visuals, your users always know exactly what’s filtering their data, whether they’ve chosen nothing, one item, all items, or somewhere in between. It’s a tiny enhancement that pays off in clarity and user confidence.




Comments

Popular Posts