
π This article includes 3 downloadable practice files β
Targets are stored per Region and FY, at a different grain from sales (per order, per day). Don’t force a relationship; pass the filters across with TREATAS.
Target =
CALCULATE ( SUM ( Targets[Target] ),
TREATAS ( VALUES ( Customers[Region] ), Targets[Region] ),
TREATAS ( VALUES ( 'Date'[FY] ), Targets[FY] ) )
% of Target = DIVIDE ( [Total Sales], [Target] )
Target Status = SWITCH ( TRUE (), [% of Target] >= 1, "Achieved", [% of Target] >= 0.9, "Close", "Behind" )
| FY 2025-26 | Actual | Target | % |
|---|---|---|---|
| South | 45,76,911 | 37,90,000 | 120.8% Achieved |
| North | 58,10,688 | 49,80,000 | 116.7% Achieved |
| West | 37,62,183 | 39,30,000 | 95.7% Close |
| East | 12,25,667 | 19,40,000 | 63.2% Behind |
Page layout
- Cards: Total Sales, Target, % of Target (conditional colour by Target Status), YoY %.
- Bar chart: % of Target by region, sorted.
- Line chart: Sales FYTD vs Sales FYTD LY by FY month.
- Table: months above the FY’s monthly average (5 in FY 2025-26).
- Slicer: FY. RLS from lesson 8, so each manager opens the same report and sees their region.
Practice
Import pbi-intermediate-model.xlsx into Power BI Desktop (free), create the relationships listed at the top of the .dax file, mark the Date table as a date table and add this lesson’s measures. Compare your card and table values with the lesson’s sheet in the expected-results file. Those numbers were worked out independently in Python from the same data, so a mismatch means a filter or relationship to check.
π Practice files for this article
β¬ Download all 3 files (ZIP Β· 61 KB)
- πPractice model (Excel)Two years of sales (700 orders, FY 2024-25 and 2025-26) with Customers, Products, a full Date table, Targets and RegionUsers.β¬ XLSX Β· 63 KB
- πLesson 10 measures (.dax)Every measure from this lesson, ready to paste into Power BI Desktop.β¬ DAX Β· 1 KB
- πExpected resultsThe numbers your measures should show, one sheet per lesson.β¬ XLSX Β· 11 KB
Free to use for learning. Files with macros (.bas) are plain text β import them with Alt+F11 β File β Import File, and always test on a copy.
Stuck on a step? Ask a question and the AI answers using this article.