Base measures
Total Sales = SUM ( Sales[Amount] )
Orders = DISTINCTCOUNT ( Sales[OrderID] )
AOV = DIVIDE ( [Total Sales], [Orders] )
Customers = DISTINCTCOUNT ( Sales[CustomerID] )CALCULATE
Coffee Sales =
CALCULATE ( [Total Sales], 'Product'[Category] = "Coffee" )
Coffee (keep slicer) =
CALCULATE ( [Total Sales],
KEEPFILTERS ( 'Product'[Category] = "Coffee" ) )Percentage of total
% of Total =
DIVIDE ( [Total Sales],
CALCULATE ( [Total Sales], REMOVEFILTERS ( 'Product' ) ) )
% of Visible Total =
DIVIDE ( [Total Sales],
CALCULATE ( [Total Sales], ALLSELECTED ( 'Product' ) ) )Time intelligence
Sales LY = CALCULATE ( [Total Sales],
SAMEPERIODLASTYEAR ( 'Date'[Date] ) )
Sales YTD = TOTALYTD ( [Total Sales], 'Date'[Date] )
Sales MTD = TOTALMTD ( [Total Sales], 'Date'[Date] )
Sales PM = CALCULATE ( [Total Sales],
DATEADD ( 'Date'[Date], -1, MONTH ) )Year over year
Sales YoY % =
VAR Curr = [Total Sales]
VAR Prev = [Sales LY]
RETURN DIVIDE ( Curr - Prev, Prev )Rolling periods
Sales Rolling 3M =
CALCULATE ( [Total Sales],
DATESINPERIOD ( 'Date'[Date],
MAX ( 'Date'[Date] ), -3, MONTH ) )Iterators
Revenue = SUMX ( Sales, Sales[Qty] * Sales[Price] )
Avg Daily Sales =
AVERAGEX ( VALUES ( 'Date'[Date] ), [Total Sales] )
Max Order = MAXX ( VALUES ( Sales[OrderID] ), [Total Sales] )Filtering tables
Big Customers =
COUNTROWS (
FILTER ( VALUES ( Customer[CustomerID] ),
[Total Sales] > 1000 ) )Ranking
Product Rank =
RANKX ( ALL ( 'Product'[ProductName] ),
[Total Sales], , DESC, DENSE )Selected values
Selected Region =
SELECTEDVALUE ( Store[Region], "All regions" )
Title = "Sales for " & [Selected Region]Logic and blanks
IF ( ISBLANK ( [Sales LY] ), BLANK (), [Sales YoY %] )
SWITCH ( TRUE (),
[AOV] >= 50, "High",
[AOV] >= 25, "Medium",
"Low" )
COALESCE ( [Total Sales], 0 )Good habits
Use a star schema with a marked date table. Build base measures first, then reuse them. Use DIVIDE instead of the slash operator. Name measures clearly and group them in display folders.
Written by Alessandro Ecclesie Agazzi, freelance analytics engineer in London. Updated 30 September 2026.