6 Surfacing user-driven filters in DAX
This chapter covers
- Distinguishing user-driven filters from formula filters
- Revealing hidden user-driven filters from visuals, report filters, slicers, and filter panes
- Understanding how filter scopes change across leaf, subtotal, and total cells
- How CALCULATE() merges user-driven filters with formula filters
- Debugging DAX by surfacing and testing combined filter contexts
User-driven filters are the invisible threads running through every Power BI report. They dictate what your DAX measures return—not through code you’ve written, but through the way the report is designed and how users interact with it. If you’ve ever been surprised by a DAX result, chances are good that it had something to do with these filters working behind the scenes.
6.1 Understanding user-driven filters in Power BI
By now, we’ve established that context is the beating heart of every DAX evaluation. More precisely, evaluation context is nothing more than the complete set of filters active at the moment a measure is evaluated. There is no separate “context engine” behind the scenes—context exists because filters exist.
Every DAX result is shaped by which rows are visible after all filters have been applied.
With that foundation in place, we can now introduce a critical distinction that every DAX author must understand: where those filters come from.
In Power BI, filters enter a calculation from two fundamentally different sources.