Advance Filtering: Filter context using CALCULATE() in Power BI
Table of Contents
Introduction
Power BI is a powerful business intelligence tool that lets users turn raw data into useful information. DAX (Data Analysis Expressions) is the core of Power BI. It provides formulas and functions to do complex calculations Among these, one of the most important and versatile function is CALCULATE().
In this blog, we will explore how CALCULATE() can modify the filter context in Power BI to give you precise control over your calculations.
What is CALCULATE()?
CALCULATE() is the most important function in DAX. It is the only function that modifies the filter context. CALCULATE() can also additionally, perform context transition.
CALCULATE() is an important function because it can:
- Change or override the filter context.
- Use more than one filter on a calculation.
- Make calculations that change based on the context.
It is important to keep in mind that the CALCULATE() function works in the following order:
- A virtual table containing filtered rows is prepared. The condition for the filtering is defined by the second and preceding arguments.
- The expression is evaluated on the filtered data
Override existing filters
CALCULATE() can replace existing filters in the current context.
Total Sales West =
CALCULATE ( SUM ( Sales[Amount] ), Sales[Region] = “West” )
- Even if your visual is showing sales for all regions, this measure ignores the visual’s filter and sums sales only for the West region.
Applying Additional Filters
CALCULATE() can add filters to the current context instead of replacing them.
High-Value Sales North =
CALCULATE (
SUM ( Sales[Amount] ),
Sales[Region] = “North”,
Sales[Amount] > 1000
- This measure calculates the sum of sales for the North region and only for transactions greater than 1000.
- The filter context is extended with new conditions.
Removing Filters with ALL()
Sometimes, you want to ignore filters from a particular column. This is where ALL() works with CALCULATE().
Total Sales All Regions =
CALCULATE ( SUM ( Sales[Amount] ), ALL ( Sales[Region] ) )
- This measure ignores any Region filter and calculates total sales across all regions.
Real World Example
To see how CALCULATE() modifies the existing filter context in a real-world example:
- Right-click on All Measures in the Fields.
- Click on New measure.
- Type the following formula in the formula bar and press Enter.
Sales in Australia (CM) =
CALCULATE ( [Total Sales Amount (CM)], SalesTerritory[Country] = “Australia” )
In the above expression:
- A virtual table containing the sales from Australia only is created.
- The Total Sales Amount is calculated for this virtual table containing filtered data.
- Click on the “$” in the formatting section.
- Type “2” in the text box.
- Click on the matrix visual in the visualization pane.
- Drag and drop Category and Subcategory from the Product table to the rows.
- Drag and drop Total Sales Amount (CM) and Sales in Australia (CM) from the All Measures table to the Values.
Notice that the initial filter context is comprised of Product [Category], and you have introduced another filter, i.e., SalesTerritory[Country]=”Australia”, into the context.
Now, let’s use this value to perform a comparison.
- Right-click on All Measures in the Fields.
- Click on New measure.
Measure tools open.
- Type the following formula in the formula bar and press Enter
Australia Sales % (CM) =
DIVIDE ( [Sales in Australia (CM)], [Total Sales Amount (CM)], 0 )
- Click on the “%” in the formatting section.
- Drag and drop Australia Sales % (CM) from the All Measures table to the Values.
Key Takeaways
- Filter context determines which pieces of data are used in a DAX calculation.
- The DAX function CALCULATE() changes the filter context so that calculations can be done dynamically and flexibly.
- CALCULATE() and other functions like ALL(), FILTER(), and VALUES() let you add, change, or remove filters.
- When you learn how to use CALCULATE(), you can make strong business insights like YoY comparisons, dynamic rankings, and filtered KPIs.
Conclusion
In Power BI, CALCULATE() is probably the most important DAX function. Knowing how it changes the filter context will help you make measures that are both accurate and flexible, which will make your reports more useful and informative.
When you know how to use CALCULATE(), you can use it with other DAX functions to answer tough business questions with just a few lines of code.
FAQs
The filter context determines which rows of data are considered when evaluating a DAX formula. Visuals, slicers, page filters, report filters, and the CALCULATE() function can all be used to alter it. For measures in Power BI, the filter context is crucial.
CALCULATE() is a key DAX function that changes the filter context of a calculation, allowing dynamic and flexible measures.
Yes, you can apply multiple conditions in one CALCULATE() statement to refine your calculations.
Further Learning and Resources
To learn more about Power BI, check out our courses here:
- Power BI Essentials
- Power BI Report Design
- Power BI Advanced
- Power BI DAX Essentials
- Power BI Service Course
- ChatGPT Essentials
Want to learn how Microsoft 365 Copilot transforms everyday work with AI? Check out our Course:
Want to learn more about Power BI and how to make reports more efficiently?
Power BI training in Australia: We offer comprehensive training sessions across various cities, including :
Ready to enhance your Power BI skills? Sign up for our training courses and explore our wide range of resources designed to elevate your data analytics capabilities.
Contact Us: Make an enquiry about our Power BI courses and find the proper training for you.







