- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
Filter functions
The second most important group consists of filter functions, which allow you to filter aggregated values based on an expression or modify the context in which those values are evaluated.
CALCULATE
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Evaluates an expression in a modified filter context.
For me, CALCULATE is the #1 function. If your model is well-structured, you can create something truly elegant with it—almost like a piece of art. It’s simple and powerful, as long as you don’t overthink it (or underthink it?)
CALCULATE provides an elegant way to apply filters, but it works best if you follow certain rules: filter columns, not tables, and try to avoid using FILTER inside the filter expression of CALCULATE.
The most straightforward way to use CALCULATE is by writing 'Table'[Column] = "xx", but that’s just scratching the surface. One of its most powerful features is the ability to modify the filter context using a wide range of additional functions (I’ll cover some of them). This allows you to activate inactive relationships, "ignore" filters from inside or outside a query, or leverage powerful Time Intelligence functions.
REMOVEFILTERS
REMOVEFILTERS([<table> | <column>[, <column>[, <column>[,…]]]])
Clear filters from the specified tables or columns.
Mostly used in CALCULATE filter expressions, REMOVEFILTERS removes filters—simple, right? This function is particularly powerful when you want to ensure that certain calculations remain unaffected by specific filters. You can use it to clear filters from an entire table or just a particular column.
This comes in handy when calculating a portion of a whole. For instance, if you have a dataset with product categories and colors, and you want to determine what percentage each color contributes within its category, you can ignore the color filter as a base and then perform the rest of the calculation. This approach helps derive the percentage contribution of each color within a category.
REMOVEFILTERS is similar to the ALL function. However, when used inside CALCULATE, REMOVEFILTERS is generally recommended, as it tends to perform better and avoids potential side effects.
ALL
ALL( [<table> | <column>[, <column>[, <column>[,…]]]] )
Returns all the rows in a table, or all the values in a column, ignoring any filters that might have been applied.
Mostly used in CALCULATE’s filter expressions, this bad boy can sometimes be a real head-scratcher—especially when you start learning about ALLSELECTED.
But here’s the key to understanding it: whatever you put inside ALL, you’ll get all rows of that. Or, thinking about it differently—you’re ignoring all filters that could be applied to it.
If you want a truly alternative way to think about ALL, imagine it as that one uncle at family gatherings who has absolutely no filter—he’ll say anything, no matter what. Just like him, ALL ignores any filters and brings everything to the table.
ALLSELECTED
ALLSELECTED([<tableName> | <columnName>[, <columnName>[,…]]] )
Removes context filters from columns and rows in the current query, while retaining all other context filters or explicit filters.
Mostly used in CALCULATE’s filter expressions, ALLSELECTED works very similarly as ALL. The only difference is that you are cosplaying ALL just inside the query. But external filters will still affect you. Inside the query means inside visualization where you put the measure it. I think this deserves a picture:
The first table shows a regular SUM. The second table uses the same SUM, but with the ALLSELECTED modifier.
In the second visual (inside the query), individual rows are ignored—you can see that A is normally 100 and B is 200, but here, both display as 300. This happens because ALLSELECTED doesn’t respect the filter context at the row level inside the query.
However, the external query (the slicer on the right) still applies a filter to the visual. In this case, it filters A and B, meaning the external query is respected. As a result, for each selection, you get the aggregated value of both letters.
Since I love unhinged explanations, imagine ALLSELECTED as a group of teenagers. At home, they completely ignore whatever their mom tells them (internal filters). But the moment Rebecca from the other class says something (external filters), they pay full attention—because she’s the famous one, and obviously, you have to follow her trends.
USERELATIONSHIP
USERELATIONSHIP([columnName1],[columnName2])
Specifies the relationship to be used in a specific calculation as the one that exists between columnName1 and columnName2.
Technically a relationship function, but most commonly used in CALCULATE’s filter expressions.
This function is often overlooked at the beginner stage, but once you start using it, it can save you a ton of time in Power BI modeling. Instead of juggling multiple active relationships, you can focus on a single primary active relationship and create multiple inactive ones (often for date fields, but not limited to them).
With this approach, you can easily switch between relationships within a
measure, allowing you to display two different measures in the same visualization—each affected by a different date field (as long as you have a calendar table).
KEEPFILTERS
KEEPFILTERS(<expression>)
Modifies how filters are applied while evaluating a CALCULATE or CALCULATETABLE function.
Used in CALCULATE’s filter expressions, KEEPFILTERS wraps a filter expression and is primarily used to correct unwanted behaviour or address functions that might produce visually confusing results.
Let’s look at an example:
In this example, sum_a is hardcoded to filter for the letter "A". Under standard behaviour, other letters (B, C, etc.) would be filtered by both "A" and their respective letter. Since this is logically impossible, the filter on "A" takes precedence, causing the measure to always return the sum of "A", making it appear as if the value is being repeated across all rows.
On the other hand, sum_a_keepsfilters applies the same filter but wraps it inside KEEPFILTERS. This ensures that the existing "row-level" filters are respected, meaning the measure will only return a value where the filter logically applies—showing a value only for "A" and keeping all other letters blank.
sum_a_keepsfilters =
CALCULATE(
[sum],
KEEPFILTERS('dimension'[dimension] = "a")
)
Without using the KEEPFILTERS, formula would look like this:
sum_a =
CALCULATE(
[sum],
'dimension'[dimension] = "a"
)
SELECTEDVALUE
SELECTEDVALUE([columnName],[, <alternateResult>])
Returns the value when the context for columnName has been filtered down to one distinct value only. Otherwise returns alternateResult.
SELECTEDVALUE is often used in expressions where you need to evaluate the current value against other values. It’s also commonly used as a variable within measures.
Keep in mind that if there’s more than one value for the column in the given context, SELECTEDVALUE will return BLANK—unless you specify an alternative result.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
- Power BI Report subscriptions does not respect RLS
- Programmatically deploy Semantic Models and Report...
- Retaining Slicer Selection Between Bookmarks Using...
- TOP DAX function for everyday use - Filter Functio...
- 🏆 Power BI DataViz World Championships | Week 4 F...
- 🏆 Power BI DataViz World Championships | Week 4 W...
- AI-Driven Approvals: Smarter SOX Compliance Withou...
- How to Calculate Cumulative Sum in Power BI
- 🏆 Power BI DataViz World Championships | Week 3 F...
- Dynamic Subscriptions
-
BunzietheBoo
on: 🏆 Power BI DataViz World Championships | Week 4 F...
-
thefarside
on: 🏆 Power BI DataViz World Championships | Week 4 W...
- Magudeswaran_MR on: How to Calculate Cumulative Sum in Power BI
-
Dera__Igboejesi
on: 🏆 Power BI DataViz World Championships | Week 3 F...
- M_S_MANOHAR on: Dynamic Subscriptions
-
LucasKoch2900
on: 🏆 Power BI DataViz World Championships | Week 3 W...
-
slindsay on: 🏆 Power BI DataViz World Championships | Week 4 |...
-
JamesDBartlett3
on: PBIP fx hack: dynamic expressions for properties -...
- TBH on: How to add Gradient Text in Power BI dashboard
-
Jasmine_319
on: 🏆 Power BI DataViz World Championships | Week 2 F...
-
How To
661 -
Tips & Tricks
629 -
Events
130 -
Support insights
121 -
Opinion
81 -
DAX
66 -
Power BI
65 -
Power Query
62 -
Power BI Dev Camp
45 -
Power BI Desktop
40 -
Roundup
38 -
Power BI Embedded
20 -
Time Intelligence
19 -
Tips&Tricks
18 -
Featured User Group Leader
16 -
PowerBI REST API
12 -
Dataflow
10 -
finance
8 -
Data Protection
8 -
Power BI Service
8 -
Power Query Tips & Tricks
8 -
Direct Query
7 -
Power BI REST API
6 -
Auto ML
6 -
financial reporting
6 -
Data Analysis
6 -
Power Automate
6 -
Data Visualization
6 -
Python
6 -
Income Statement
5 -
Dax studio
5 -
powerbi
5 -
service
5 -
Power BI PowerShell
5 -
Machine Learning
5 -
Paginated Reports
4 -
External tool
4 -
Power BI Goals
4 -
PowerShell
4 -
Desktop
4 -
Bookmarks
4 -
Line chart
4 -
Group By
4 -
community
4 -
RLS
4 -
M language
4 -
Administration
3 -
M code
3 -
Visuals
3 -
SQL Server 2017 Express Edition
3 -
R script
3 -
Aggregation
3 -
calendar
3 -
Gateways
3 -
R
3 -
M Query
3 -
Webinar
3 -
CALCULATE
3 -
R visual
3 -
Reports
3 -
PowerApps
3 -
Data Science
3 -
Azure
3 -
Data model
3 -
Conditional Formatting
3 -
Visualisation
3 -
Life Sciences
3 -
measure
2 -
Microsoft-flow
2 -
Paginated Report Builder
2 -
Working with Non Standatd Periods
2 -
powerbi.tips
2 -
Custom function
2 -
Reverse
2 -
PUG
2 -
Custom Measures
2 -
Filtering
2 -
Row and column conversion
2 -
Python script
2 -
Nulls
2 -
DVW Analytics
2 -
parameter
2 -
Industrial App Store
2 -
Week
2 -
Date duration
2 -
Formatting
2 -
Weekday Calendar
2 -
Support insights.
2 -
construct list
2 -
slicers
2 -
SAP
2 -
Power Platform
2 -
Workday
2 -
external tools
2 -
index
2 -
RANKX
2 -
PBI Desktop
2 -
Date Dimension
2 -
Integer
2 -
Visualization
2 -
Power BI Challenge
2 -
Query Parameter
2 -
Date
2 -
SharePoint
2 -
Power BI Installation and Updates
2 -
How Things Work
2 -
Tabular Editor
2 -
rank
2 -
ladataweb
2 -
Troubleshooting
2 -
Date DIFF
2 -
Transform data
2 -
Healthcare
2 -
Tips and Tricks
2 -
Incremental Refresh
2 -
Number Ranges
2 -
Query Plans
2 -
Power BI & Power Apps
2 -
Random numbers
2 -
Day of the Week
2 -
Custom Visual
2 -
VLOOKUP
2 -
pivot
2 -
calculated column
2 -
M
2 -
hierarchies
2 -
Power BI Anniversary
2 -
Language M
2 -
inexact
2 -
Date Comparison
2 -
Power BI Premium Per user
2 -
Forecasting
2 -
REST API
2 -
Editor
2 -
Split
2 -
help
1 -
group
1 -
Scorecard
1 -
Json
1 -
Tops
1 -
financial reporting hierarchies RLS
1 -
Featured Data Stories
1 -
MQTT
1 -
Custom Periods
1 -
Partial group
1 -
Reduce Size
1 -
FBL3N
1 -
Wednesday
1 -
Power Pivot
1 -
Quick Tips
1 -
data
1 -
PBIRS
1 -
Usage Metrics in Power BI
1 -
Multivalued column
1 -
Pipeline
1 -
Path
1 -
Yokogawa
1 -
Dynamic calculation
1 -
Data Wrangling
1 -
native folded query
1 -
transform table
1 -
UX
1 -
Cell content
1 -
General Ledger
1 -
Thursday
1 -
Table
1 -
Natural Query Language
1 -
Infographic
1 -
automation
1 -
Prediction
1 -
newworkspacepowerbi
1 -
Performance KPIs
1 -
HR Analytics
1 -
keepfilters
1 -
Connect Data
1 -
Financial Year
1 -
Schneider
1 -
dynamically delete records
1 -
Copy Measures
1 -
Friday
1 -
Q&A
1 -
Event
1 -
Custom Visuals
1 -
Free vs Pro
1 -
Format
1 -
Active Employee
1 -
Custom Date Range on Date Slicer
1 -
refresh error
1 -
PAS
1 -
certain duration
1 -
DA-100
1 -
bulk renaming of columns
1 -
Single Date Picker
1 -
Monday
1 -
PCS
1 -
Saturday
1 -
update
1 -
Slicer
1 -
Visual
1 -
forecast
1 -
Regression
1 -
CICD
1 -
Current Employees
1 -
date hierarchy
1 -
relationship
1 -
SIEMENS
1 -
Multiple Currency
1 -
Power BI Premium
1 -
On-premises data gateway
1 -
Binary
1 -
Power BI Connector for SAP
1 -
Sunday
1 -
Training
1 -
Announcement
1 -
Features
1 -
domain
1 -
pbiviz
1 -
sport statistics
1 -
Intelligent Plant
1 -
Circular dependency
1 -
GE
1 -
Exchange rate
1 -
Dendrogram
1 -
range of values
1 -
activity log
1 -
Decimal
1 -
Charticulator Challenge
1 -
Field parameters
1 -
deployment
1 -
ssrs traffic light indicators
1 -
SQL
1 -
trick
1 -
Scripts
1 -
Color Map
1 -
Industrial
1 -
Weekday
1 -
Working Date
1 -
Space Issue
1 -
Emerson
1 -
Date Table
1 -
Cluster Analysis
1 -
Stacked Area Chart
1 -
union tables
1 -
Number
1 -
Start of Week
1 -
Tips& Tricks
1 -
Workspace
1 -
Theme Colours
1 -
Text
1 -
Flow
1 -
Publish to Web
1 -
Extract
1 -
Topper Color On Map
1 -
Historians
1 -
context transition
1 -
Custom textbox
1 -
OPC
1 -
Zabbix
1 -
Label: DAX
1 -
Business Analysis
1 -
Supporting Insight
1 -
rank value
1 -
Synapse
1 -
End of Week
1 -
Tips&Trick
1 -
Showcase
1 -
custom connector
1 -
Waterfall Chart
1 -
Power BI On-Premise Data Gateway
1 -
patch
1 -
Top Category Color
1 -
A&E data
1 -
Previous Order
1 -
Substring
1 -
Wonderware
1 -
Power M
1 -
Format DAX
1 -
Custom functions
1 -
accumulative
1 -
DAX&Power Query
1 -
Premium Per User
1 -
GENERATESERIES
1 -
Report Server
1 -
Audit Logs
1 -
analytics pane
1 -
step by step
1 -
Top Brand Color on Map
1 -
Tutorial
1 -
Previous Date
1 -
XMLA End point
1 -
color reference
1 -
Date Time
1 -
Marker
1 -
Lineage
1 -
CSV file
1 -
conditional accumulative
1 -
Matrix Subtotal
1 -
Check
1 -
null value
1 -
Excel
1 -
Cumulative Totals
1 -
Report Theme
1 -
Bookmarking
1 -
oracle
1 -
mahak
1 -
pandas
1 -
Networkdays
1 -
Button
1 -
Dataset list
1 -
Keyboard Shortcuts
1 -
Fill Function
1 -
LOOKUPVALUE()
1 -
Tips &Tricks
1 -
Plotly package
1 -
Sameperiodlastyear
1 -
Office Theme
1 -
matrix
1 -
bar chart
1 -
Measures
1 -
powerbi argentina
1 -
Canvas Apps
1 -
total
1 -
Filter context
1 -
Difference between two dates
1 -
get data
1 -
OSI
1 -
Query format convert
1 -
ETL
1 -
Json files
1 -
Merge Rows
1 -
CONCATENATEX()
1 -
take over Datasets;
1 -
Networkdays.Intl
1 -
refresh M language Python script Support Insights
1 -
Governance
1 -
Fun
1 -
Power BI gateway
1 -
gateway
1 -
Elementary
1 -
Custom filters
1 -
Vertipaq Analyzer
1 -
powerbi cordoba
1 -
Model Driven Apps
1 -
REMOVEFILTERS
1 -
XMLA endpoint
1 -
translations
1 -
OSI pi
1 -
Parquet
1 -
Change rows to columns
1 -
remove spaces
1 -
Get row and column totals
1 -
Retail
1 -
Power BI Report Server
1 -
School
1 -
Cost-Benefit Analysis
1 -
DIisconnected Tables
1 -
Sandbox
1 -
Honeywell
1 -
Combine queries
1 -
X axis at different granularity
1 -
ADLS
1 -
Primary Key
1 -
Microsoft 365 usage analytics data
1 -
Randomly filter
1 -
Week of the Day
1 -
Azure AAD
1 -
query
1 -
Dynamic Visuals
1 -
KPI
1 -
Intro
1 -
Icons
1 -
ISV
1 -
Ties
1 -
unpivot
1 -
Practice Model
1 -
Continuous streak
1 -
ProcessVue
1 -
Create function
1 -
Table.Schema
1 -
Acknowledging
1 -
Postman
1 -
Text.ContainsAny
1 -
Power BI Show
1 -
Get latest sign-in data for each user
1 -
API
1 -
Kingsley
1 -
Merge
1 -
variable
1 -
Issues
1 -
function
1 -
stacked column chart
1 -
ho
1 -
ABB
1 -
KNN algorithm
1 -
List.Zip
1 -
optimization
1 -
Artificial Intelligence
1 -
Map Visual
1 -
Text.ContainsAll
1 -
Tuesday
1
- 03-23-2025 - 03-28-2025
- 03-16-2025 - 03-22-2025
- 03-09-2025 - 03-15-2025
- 03-02-2025 - 03-08-2025
- 02-23-2025 - 03-01-2025
- 02-16-2025 - 02-22-2025
- 02-09-2025 - 02-15-2025
- 02-02-2025 - 02-08-2025
- 01-26-2025 - 02-01-2025
- 01-19-2025 - 01-25-2025
- 01-12-2025 - 01-18-2025
- 01-05-2025 - 01-11-2025
- View Complete Archives