overview
An HR analytics suite tracking hiring trends, demographic splits, and separation reasons (Voluntary vs. Involuntary).
the problem
The company was experiencing high turnover, but traditional HR reports only showed headcount. They needed to understand the quality of hires and the demographics driving turnover.
usability & ux
- Demographic Deep-Dive: A stacked bar chart breaks down new hires by AgeGroup and Gender, instantly showing that the <30 age group dominates hiring.
- The "Bad Hire" Narrative: I introduced a dedicated "Bad Hire" section. The bar chart BadHire% of Actives by AgeGroup immediately highlights that 30.9% of active employees under 30 are considered "bad hires."
- Trends & Reasons: The donut chart reveals that the vast majority of separations are voluntary, while the line charts track YoY changes in bad hires.
dax & modeling
HR data is notorious for messy date tables and active/inactive employee statuses.
key measure
BadHire% of Actives =
DIVIDE(
COUNTROWS(FILTER(Employees, Employees[BadHireFlag] = TRUE)),
COUNTROWS(FILTER(Employees, Employees[Status] = "Active"))
)Modeling Note: I created a dedicated Date dimension table to accurately calculate the YoY % change for hires and separations, ensuring the SPLY (Same Period Last Year) metrics were accurate.
outcome
The dashboard shifted the HR conversation from volume to quality. By identifying that the <30 age group accounts for the highest percentage of bad hires, HR can now revamp the recruitment and onboarding process specifically for early-career talent, reducing costly turnover.
the .pbix
Explore the file
Want to look under the hood? The Power BI file is in my public OneDrive folder. Open it in Power BI Desktop to explore the data model, relationships, DAX measures and report pages.
Projects Portfolio / Power Bi Projects
open in onedrive ↗