DAX Without the Headache
DAX looks like Excel formulas but thinks in tables, filters, and context. Learn these 15 patterns and you can handle almost any sales, HR, or finance dashboard assignment in Power BI.
Basics (use these everywhere)
Total Sales = SUM(Sales[Amount]) Orders = COUNTROWS(Sales) Avg Order = DIVIDE([Total Sales],[Orders]) // safe divide, no #DIV/0!
CALCULATE + FILTER (the core idea)
West Sales = CALCULATE([Total Sales], Region[Name]="West") High-Value Orders = CALCULATE([Orders], Sales[Amount] > 1000)
Think: CALCULATE = 'same math, different filters'. FILTER is for complex row-by-row conditions.
Time intelligence (needs a Date table!)
Sales YTD = TOTALYTD([Total Sales], 'Date'[Date])
Sales PY = SAMEPERIODLASTYEAR('Date'[Date]) // combine with CALCULATE
YoY % = DIVIDE([Total Sales]-CALCULATE([Total Sales], SAMEPERIODLASTYEAR('Date'[Date])), CALCULATE([Total Sales], SAMEPERIODLASTYEAR('Date'[Date])))
Top-N and ranking
Rank by Sales = RANKX(ALL(Product[Name]), [Total Sales]) Top 5 Sales = CALCULATE([Total Sales], TOPN(5, ALL(Product[Name]), [Total Sales]))
3 Mistakes That Break Every Student Model
- No star schema: one fact table (Sales) + dimension tables (Date, Product, Customer). No mega-flat table.
- Bidirectional filters everywhere: keep single direction; use CROSSFILTER only when needed.
- Implicit measures: always write explicit measures — implicit drag-and-drop sums fail time intelligence.
Need a Power BI file with correct model + 10 measures + 3 dashboard pages? We deliver academic-grade PBIX with documentation you can explain in viva.


