CALCULATE with a filter
CALCULATE(expression, filter, ...) evaluates an expression in a modified filter context. It is the most important function in DAX.
A filter such as Product[Category] = "Bikes" replaces any existing filter on Product[Category] and keeps every other filter. In this matrix, Country and Year still filter the result.
Your task
Write a measure named Bike Sales: the sales amount of the Bikes category only.
About this exercise
You practise changing the filter context with calculate with CALCULATE. The exercise runs on a small bike-shop model with a Sales fact table and Product, Customer and Date dimensions, the same star schema in every lesson.
Your measure, Bike Sales, fills a Power BI-style matrix grouped by Customer[Country] and Date[Year]. As in a real report, each cell evaluates the measure in its own filter context, and the subtotals and the grand total are evaluated again in theirs rather than added up. When you check your answer, every cell is compared with the expected value, wrong cells are marked, and the hint is about the mistake you made.
Measures that already exist in the model: Sales Amount and Total Cost. Reference them in square brackets, for example [Sales Amount].
Last updated 10 November 2026
Solution, expected result and common mistakes
Worked solution
Bike Sales = CALCULATE([Sales Amount], Product[Category] = "Bikes")CALCULATE filters replace the filter on the same column and leave the other filters of the cell alone.
The expected result
| Year | |||
|---|---|---|---|
| Country | 2024 | 2025 | Total |
| France | 25,203.50 | 17,523.00 | 42,726.50 |
| Germany | 29,732.50 | 45,454.50 | 75,187.00 |
| Netherlands | 18,575.00 | 24,948.00 | 43,523.00 |
| United Kingdom | 28,853.50 | 19,316.00 | 48,169.50 |
| Total | 102,364.50 | 107,241.50 | 209,606.00 |
Common mistakes
Bike Sales = CALCULATE([Sales Amount], Product[Product] = "Bikes")There is no product called "Bikes": Bikes is a value of Product[Category].
Bike Sales = CALCULATE([Sales Amount], ALL(Customer), Product[Category] = "Bikes")ALL(Customer) removes the country filter, so every row shows the same total. Keep only the category filter.
Hints
- CALCULATE([Sales Amount], ...): the second argument is a filter.
- The filter compares a column with a value: Product[Category] = "Bikes".
Opening the exercise…