TGViewer
Data Analytics Data Analytics @sqlspecialist ยท 111K subscribers
Post #3129 3.23K
๐Ÿš€ Data Analyst Roadmap โ€” Part 26

POWER BI LEVEL 5 โ€” DAX: CALCULATE(), FILTERS & CONTEXT

If you understand CALCULATE(), DAX becomes much easier.

The most important idea:

๐Ÿ‘‰ CALCULATE() changes the filter context in which a measure is evaluated.

Example:

Total Sales =

SUM(Sales)[SalesAmount]

Now suppose you want sales only for the West region:

West Sales = CALCULATE( [Total Sales], Sales[Region] = "West" )

CALCULATE() takes the existing calculation and applies an additional filter.

๐Ÿ”น 1. CALCULATE() with multiple filters

You can apply multiple conditions:

West Electronics Sales = CALCULATE( [Total Sales], Sales[Region] = "West", Sales[Category] = "Electronics" )

This calculates sales where:

Region = West

AND

Category = Electronics

๐Ÿ”น 2. REMOVEFILTERS()

Sometimes you don't want a slicer or visual filter to affect your calculation.

Example:

Total Sales All Regions = CALCULATE( [Total Sales], REMOVEFILTERS(Sales[Region]) )

If a report is filtered to:

Region โ†’ West

this measure still shows sales across all regions.

๐Ÿ”น 3. ALL()

ALL() can also remove filters.

Example:

Total Sales All Regions = CALCULATE( [Total Sales], ALL(Sales[Region]) )

A common use is calculating percentage of total.

Sales % of Total = DIVIDE( [Total Sales], CALCULATE( [Total Sales], ALL(Sales[Region]) ) )

If West has โ‚น20 lakh sales and all regions have โ‚น100 lakh:

Sales % of Total = 20%

๐Ÿ”น 4. ALLSELECTED()

ALLSELECTED() is useful when you want to respect the user's overall selections but ignore a visual-level grouping.

Example:

Sales % of Selected Regions = DIVIDE( [Total Sales], CALCULATE( [Total Sales], ALLSELECTED(Sales[Region]) ) )

If the user selects:

West + South

the calculation can compare each region against the total of the selected regions rather than the entire dataset.

๐Ÿ”น 5. KEEPFILTERS()

By default, CALCULATE() can replace an existing filter on the same column.

KEEPFILTERS() tells DAX to preserve the existing filter and apply the new condition on top of it.

Example:

CALCULATE( [Total Sales], KEEPFILTERS(Sales[Category] = "Electronics") )

Think of it as:

Existing filters

+

New filter

instead of replacing the existing filter.

๐Ÿ”น 6. FILTER()

FILTER() creates a filtered table based on a condition.

Example:

High Value Sales = CALCULATE( [Total Sales], FILTER( Sales, Sales[SalesAmount] > 10000))

This calculates sales from transactions greater than โ‚น10,000.

Use FILTER() when the filtering logic is more complex than a simple column = value condition.

๐Ÿ”น 7. Context Transition

This sounds complicated, but the basic idea is simple.

DAX has two important contexts:

๐Ÿ‘‰ Row Context

Works with the current row.

๐Ÿ‘‰ Filter Context

Determines which data is included in a calculation.

CALCULATE() has a special behavior:

It can convert row context into filter context.

This is called:

Context Transition

You will encounter this especially when using CALCULATE() inside calculated columns or iterator functions such as SUMX(), FILTER(), etc.

๐Ÿ’ก A simple way to remember CALCULATE():

CALCULATE() = "Calculate this measure, but under these filter conditions."

For example:

[Total Sales]

โ†“

CALCULATE(

[Total Sales],

Region = "West"

)

โ†“

"Calculate Total Sales, but only for West."
  • โค 2
More from @sqlspecialist
  1. Oct 4, 20269๏ธโƒฃ How would you calculate month-over-month growth? Sample Answer: โ€œI would first retrievโ€ฆ
  2. Oct 4, 2026๐Ÿ“Š Data Analyst Interview Series โ€” Part 3 Guys, let's continue our Data Analyst Interviewโ€ฆ
  3. Sep 29, 2026๐Ÿ”Ÿ How would you find duplicate records in SQL? Sample Answer: "I would first identify theโ€ฆ
  4. Sep 29, 2026๐Ÿ“Š Data Analyst Interview Series โ€” Part 2 Guys, let's continue our Data Analyst Interviewโ€ฆ
  5. Sep 29, 2026๐—™๐—ฅ๐—˜๐—˜ ๐—ฅ๐—ฒ๐˜€๐—ผ๐˜‚๐—ฟ๐—ฐ๐—ฒ๐˜€ ๐—ง๐—ผ ๐—Ÿ๐—ฒ๐—ฎ๐—ฟ๐—ป ๐—”๐—œ ๐—ถ๐—ป ๐Ÿฎ๐Ÿฌ๐Ÿฎ๐Ÿฒ๐Ÿš€ โ€‹ Explore 6 free resourceโ€ฆ
  6. Sep 29, 2026"After identifying duplicates, I investigate whether they are genuine duplicate records orโ€ฆ
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook โ†’Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 โ†’