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. |