Data flows from the Data Model through filters. Row-Level Security is a locked tap. CALCULATE() can rewrite filters (except RLS).
Hover any tank/pipe for notes. Flow = model × RLS × active filters (or CALCULATE override).
This hierarchy demonstrates how filters are applied to your data model. Filters are applied sequentially, with each subsequent filter further reducing the active dataset.
Filter Type | Behavior | Override with `CALCULATE()` |
---|---|---|
Row-Level Security | A security filter applied at the data source. | No, this filter is **locked** 🔒. |
Report Level | Applies to all pages and visuals in the report. | Yes |
Page Level | Applies to all visuals on a single page. | Yes |
Visual Level | Applies to a single visual. | Yes |
Slicer/Interactions | Applied by user interaction with visuals or slicers. | Yes |
Line-level filter | A filter defined on an individual DAX expression line. | Yes |
`CALCULATE()` | A powerful DAX function that can modify or remove filter contexts. | N/A, it is the override mechanism itself. |