Change filter context for a measure
The single most important DAX function. It evaluates an expression under modified filters.
Sales USA =
CALCULATE(
SUM(Sales[Amount]),
Sales[Country] = "USA"
)
A practical, production-ready list: 10 core + 5 advanced functions. Master these and you cover most real-world modeling patterns.
The single most important DAX function. It evaluates an expression under modified filters.
Sales USA =
CALCULATE(
SUM(Sales[Amount]),
Sales[Country] = "USA"
)
Use when the result must be computed per row (not a simple SUM of a column).
Total Sales =
SUMX(
Sales,
Sales[Qty] * Sales[UnitPrice]
)
Often used inside CALCULATE for complex conditions.
High Sales =
CALCULATE(
[Total Sales],
FILTER(Sales, Sales[Amount] > 1000)
)
Key for % of total, global totals, and comparisons.
% of Total =
DIVIDE(
[Total Sales],
CALCULATE([Total Sales], ALL(Sales))
)
More readable than ALL in many scenarios.
Global Total =
CALCULATE(
[Total Sales],
REMOVEFILTERS(Sales[Country])
)
Perfect for dynamic titles, tooltips, and conditional logic.
Selected Country =
SELECTEDVALUE(Sales[Country], "All Countries")
Avoids divide-by-zero issues and lets you set an alternate result.
Margin % =
DIVIDE([Profit], [Total Sales])
Use with care—heavy nested IFs can hurt readability/performance.
Sales Tier =
IF([Total Sales] > 100000, "High", "Low")
Useful for counting distinct items via COUNTROWS(VALUES()).
Unique Customers =
COUNTROWS(VALUES(Sales[CustomerID]))
Requires a proper Date table marked as a Date table.
Sales Last Year =
CALCULATE(
[Total Sales],
DATEADD('Calendar'[Date], -1, YEAR)
)
Great to prevent ambiguous calculations and show different logic by granularity.
Is Single Country =
HASONEVALUE(Sales[Country])
Perfect for Matrix/Hierarchy measures that behave differently at each level.
Show Only Product Level =
IF(
ISINSCOPE(Products[Product]),
[Total Sales],
BLANK()
)
Ensures your added condition intersects with the current filter context.
Premium Sales =
CALCULATE(
[Total Sales],
KEEPFILTERS(Sales[Type] = "Premium")
)
A powerhouse for many-to-many or disconnected tables.
Sales by Region (Virtual) =
CALCULATE(
[Total Sales],
TREATAS(
VALUES(Region[Region]),
Sales[Region]
)
)
Essential for models with multiple date fields (Order Date vs Ship Date).
Sales by Ship Date =
CALCULATE(
[Total Sales],
USERELATIONSHIP(Sales[ShipDate], 'Calendar'[Date])
)
/ for robust measures.