35. More Real-World Project Briefs
35.4 HR and Employees
Business question. How many people are in each city, and who joined this financial year (April–March)?
Tables. Employee (one row per person: Name, City, Department, Join Date, Status Active/Left). Date related to Join Date, inactive if you also have an Exit Date (role-playing, section 11.10). Departments you may invent as labels (Store, Finance, Delivery). People only from the class list. Do not invent salaries if you are not ready to discuss them; a headcount brief does not need pay. If you add pay, mark it fictional and keep it off the city-manager role (OLS, section 26.6) in a later pass.
Measures.
Headcount = CALCULATE(COUNTROWS(Employee), Employee[Status] = "Active")
Joiners FY =
CALCULATE(
COUNTROWS(Employee),
DATESYTD('Date'[Date], "3/31"),
USERELATIONSHIP(Employee[Join Date], 'Date'[Date])
)
The USERELATIONSHIP line is only needed if the active relationship is a different date. If Join Date is the only relationship, drop that argument.
Pages. Cards: Headcount, Joiners. A bar by city and a stacked bar by department. A table of names. No map of home addresses.
Sample layout — fictional data. The picture uses the worked rows in this brief. It does not add a table.
Worked rows (fictional sample data). Financial year in this brief is April 2026 to March 2027. "This year" means a join date on or after 1 April 2026.
| Name | City | Department | Status | Join date |
|---|---|---|---|---|
| Ravindra Bagale | Pune | Store | Active | 1 Apr 2026 |
| Ruhi Bagale | Pune | Store | Left | 1 Jun 2024 |
| Shraddha Bagale | Nashik | Finance | Active | 15 May 2026 |
| Amir | Nashik | Delivery | Active | 1 Aug 2022 |
| Raja | Kolhapur | Delivery | Active | 1 Jun 2026 |
| Rani | Nagpur | Store | Active | 1 Jan 2023 |
Headcount is rows with Status Active. Ravindra, Shraddha, Amir, Raja, Rani. That is 5. Ruhi is Left, so she is not in the 5. Joiners this FY are Active or Left rows whose join date is on or after 1 April 2026: Ravindra, Shraddha, Raja. That is 3. (If you also count leavers who joined this year, say so. Ruhi joined in 2024, so she is in neither list.)
Pune active headcount is 1 (Ravindra). Nashik active headcount is 2.
Starter file: brief_35_4_hr_employees.csv – the worked rows above as a CSV (fictional practice data). Load it with Get data › Text/CSV, build the measures, then check your cards.
Expected values to check
Headcount (Active) 5 · Joiners this FY (on/after 01-Apr-2026) 3 · Pune active 1 · Nashik active 2
| Good KPI | Vanity metric | |
|---|---|---|
| From the same rows | Active headcount 5 | 6 names in the table |
| Why | The sixth name has left. A city-manager card that says 6 overstates Pune. | A roster export feels complete. It is not a headcount. |
What the manager does. The Pune manager does not plan a shift for Ruhi. The seat is open unless the joiner measure is read next to headcount: Ravindra joined this year, Ruhi left, net active in Pune is one. The Nashik manager sees two active people and one joiner this year (Shraddha). Amir is active and is not a joiner. Do not celebrate "3 joiners" as "3 extra people in Nashik".
Ravindra Bagale's Tip
A common mistake is COUNTROWS without Status, so people who left stay in the headcount. Keep the Status filter inside the measure; do not trust a visual filter for it. Remember this rule.
Ravindra Bagale's Tip – मराठी
एक common चूक म्हणजे Status शिवाय COUNTROWS, म्हणजे सोडून गेलेले लोक headcount मध्ये राहतात. Status filter measure मध्येच ठेवा, visual filter वर विश्वास ठेवू नका. हा नियम लक्षात ठेवा.
Ravindra Bagale's Tip – हिंदी
एक common गलती है Status के बिना COUNTROWS, तो छोड़कर गए लोग headcount में रह जाते हैं. Status filter measure में ही रखो, visual filter पर भरोसा मत करो. यह नियम याद रखो.