The FILTER function in DAX is used to apply row-level logical conditions before performing calculations. It is essential when simple column filters are not sufficient.
// FILTER basic syntax
FILTER(
TableName,
Condition
)
FILTER is used when you want to apply advanced conditions on data before calculation.
// Practice dataset for FILTER
City,Category,Sales,Quantity
Pune,Electronics,15000,2
Mumbai,Electronics,25000,1
Delhi,Accessories,5000,5
Pune,Accessories,3000,4
Mumbai,Electronics,40000,2
// High Sales Calculation
High Sales =
CALCULATE(
SUM(Sales[Sales]),
FILTER(Sales,Sales[Sales] > 10000)
)
// Pune Sales using FILTER
Pune Sales =
CALCULATE(
SUM(Sales[Sales]),
FILTER(Sales,Sales[City] = "Pune")
)
// Change city value
Sales[City] = "Mumbai"
// Mumbai Electronics Sales
Mumbai Electronics =
CALCULATE(
SUM(Sales[Sales]),
FILTER(
Sales,
Sales[City] = "Mumbai" &&
Sales[Category] = "Electronics"
)
)
// High Quantity Sales
High Qty Sales =
CALCULATE(
SUM(Sales[Sales]),
FILTER(Sales,Sales[Quantity] >= 2)
)
// Sales between 10000 and 30000
Medium Sales =
CALCULATE(
SUM(Sales[Sales]),
FILTER(
Sales,
Sales[Sales] >= 10000 &&
Sales[Sales] <= 30000
)
)
Adjust filters below to see how the FILTER() table function slices the data for CALCULATE().
FILTER(Sales, ...), use FILTER(ALL(Sales[City]), ...) if you only need to filter city. This is much faster on large datasets.CALCULATE with simple column filters for basic needs. Only reach for FILTER() when you have complex logic (like comparing two columns).&& for AND and || for OR conditions inside FILTER to keep your code clean.FILTER is an iterator. Avoid nesting multiple FILTER functions inside each other as it can slow down your report.