Reference: Metrics in People Analytics
People Analytics uses metrics to drive insights to answer key business questions about an
organization. These metrics also support KPIs, visualizations, and stories.
Each KPI and story offers a comparison point. Trend stories and KPIs display the historic
performance of a given metric. The historic performance snapshot varies depending on
the metric. Historic snapshot periods can reflect:
- 12 months ago, if you have at least 13 months of data history.
- 3 months ago, if you have less than 13 months of data history.
- The month prior to the current snapshot period.
Gap stories compare the current performance of the dimension where the story takes place to the current performance of an internal peer group.
The values of these fields determine which records are included in the analysis for a given month:
- Report Effective Date for the Worker pipeline.
- Status Month for the Hiring pipeline.
People Analytics uses these metrics:
Attrition Rate
What uses this metric?
| KPI: Attrition Rate Trend Business Question: What are key turnover trends? Gap Business Question: Who is leaving? |
Calculation Time Frame
| Depending on your data history:
|
Calculation
| rollingSum(unique([Employee_ID]), 12) for ("Terminated_This_Period",
"True") /{avg_active_headcount_rolling_12_months}, where
avg_active_headcount_rolling_12_months =
(rollingSum(unique([Employee_ID]), 12) for ("Active_Status", "True") /
12)
OR rollingSum(unique([Employee_ID]), 3) for
("Terminated_This_Period", "True") /
{avg_active_headcount_rolling_3_months}, where
avg_active_headcount_rolling_3_months =
(rollingSum(unique([Employee_ID]), 3) for ("Active_Status", "True")
/ 3) |
Translation
| Based on a 12 month or 3 month rolling period. Number of terminated workers within
period / Average active headcount for period (Sum of active headcounts
for each month / Number of months in rolling period) * 100 |
Comparison Point for KPI and Trend Story
| Month prior to the current snapshot period |
Comparison Point for Gap Story
| Internal peer group |
Average Compa-Ratio
What uses this metric?
| Gap Business Question: Where are gaps in compa-ratio? |
Calculation Time Frame
| Current snapshot period |
Calculation
| sum([Compa_Ratio]) for ("Active_Status", "True") / unique([Employee_ID]) for ("Active_Status", "True")
|
Translation
| Sum of compa-ratio of active headcount at end of previous month / Active headcount at end of previous month |
Comparison Point
| Internal peer group |
Average Compa-Ratio of Terminations
What uses this metric?
| KPI: Average Compa-Ratio of Terminations |
Calculation Time Frame
| Current snapshot period |
Calculation
| sum([Compa_Ratio]) for ("Terminated_This_Period", "True") / unique([Employee_ID]) for ("Terminated_This_Period", "True")
|
Translation
| Sum of compa-ratio of terminated workers in previous month / Terminated workers in previous month |
Comparison Point
| Depending on your data history:
|
Average Gap Score
What uses this metric?
| Gap Business Question: Where are opportunities to upskill workers? |
Calculation Time Frame
| Current snapshot period |
Calculation
| sum([gap_score_pct]) / unique([Employee_ID])
|
Translation
| Sum of gap scores for workers at end of previous month / Active headcount at end of previous month Gap Score = 1 - Match Score |
Comparison Point
| Internal peer group |
Average Span of Control
What uses this metric?
| KPI: Average Span of Control Gap Business Question: What are outliers
in span of control? |
Calculation Time Frame
| Current snapshot period |
Calculation
| sum([Direct_Reports]) for ("Manager_With_Direct_Reports", "True") for ("Active_Status", "True") / unique([Employee_ID]) for ("Manager_With_Direct_Reports", "True") for ("Active_Status", "True")
|
Translation
| Number of active direct reports at end of previous month / Number of active managers
with direct reports at end of previous month Excludes unfilled
positions |
Comparison Point for KPI
| Depending on your data history:
|
Comparison Point for Gap Story
| Internal peer group |
Example:
Supervisory Org | Managers | Direct Reports |
|---|---|---|
Vice President
| 1 | 2 |
Director A
| 1 | 3 |
Manager A1 | 1 | 4 |
Manager A2 | 1 | 7 |
Manager A3 | 1 | 3 |
Director B
| 1 | 4 |
Manager B1 | 1 | 2 |
Manager B2 | 1 | 5 |
Manager B3 | 1 | 8 |
Manager B4 | 1 | 3 |
Total
| 10
| 41
|
Average Tenure
What uses this metric?
| KPI: Average Tenure Gap Business Question: What are outliers in tenure? |
Calculation Time Frame
| Current snapshot period |
Calculation
| sum([Length_Of_Service_In_Partial_Years]) for ("Active_Status", "True") / unique([Employee_ID]) for ("Active_Status", "True")
|
Translation
| Sum of length of service of active headcount at end of previous month / Active headcount at end of previous month |
Comparison Point for KPI
| Depending on your data history:
|
Comparison Point for Gap Story
| Internal peer group |
Average Time To Fill
What uses this metric?
| Trend Business Question: What are key trends in hiring? |
Calculation Time Frame
| Current snapshot period |
Calculation
| (total_reqs_hired_filled_time) / (reqs_filled_hired)
|
Variables for Calculation
|
|
Translation
| Sum of time to fill for hires in filled requisitions in previous month (Number of days from requisition start date to requisition filled date) / Number of hires in filled requisitions in previous month |
Comparison Point
| Depending on your data history:
|
Average Time To Hire
What uses this metric?
| KPI: Average Time to Hire Gap Business Question: Where does it take longer to hire? |
Calculation Time Frame
| Current snapshot period |
Calculation
| (total_time_to_hire) / (candidates_hired)
|
Variables for Calculation
|
|
Translation for KPI
| Sum of time to hire for hires in previous month (Number of days from requisition start date to hire date) / Number of hires in previous month * 100 |
Translation for Gap Business Question
| Sum of time to hire for hires in previous month (Number of days from requisition start date to hire date) / Number of hires in previous month |
Comparison Point for KPI
| Depending on your data history:
|
Comparison Point for Gap Story
| Internal peer group |
Average Voluntary Terminations Tenure
What uses this metric?
| Gap Business Question: Where do we have the lowest tenure for voluntary terminations? |
Calculation Time Frame
| Current snapshot period |
Calculation
| sum([Length_Of_Service_In_Partial_Years]) for ("Terminated_This_Period", "True") for ("Termination_Category", "Voluntary") / unique([Employee_ID]) for ("Terminated_This_Period", "True") for ("Termination_Category", "Voluntary")
|
Translation
| Sum of length of service of voluntary terminations in previous month / Voluntary terminations in previous month |
Comparison Point
| Internal peer group |
Female Attrition Rate
What uses this metric?
| KPI: Female Attrition Rate |
Calculation Time Frame
| Depending on your data history:
|
Calculation
| rollingSum(unique([Employee_ID]), 12) for ("Terminated_This_Period", "True")
for ("Gender", "Female") /
{avg_female_headcount_rolling_12_months}, where
avg_female_headcount_rolling_12_months =
(rollingSum(unique([Employee_ID]), 12) for ("Gender",
"Female") for ("Active_Status", "True") / 12)
OR rollingSum(unique([Employee_ID]), 3) for
("Terminated_This_Period", "True") for ("Gender",
"Female") /{avg_female_headcount_rolling_3_months}, where
avg_female_headcount_rolling_3_months =
(rollingSum(unique([Employee_ID]), 3) for ("Gender",
"Female") for ("Active_Status", "True") / 3) |
Translation
| Based on a 12 month or 3 month rolling period. Number of female terminations within
period / Average female headcount for period (Sum of female headcounts
for each month / Number of months in rolling period) * 100 |
Comparison Point
| Month prior to the current snapshot period |
Female Representation
What uses this metric?
| KPI: Female Representation Trend Business Question: What are key trends in female
representation? Gap Business Question: Where can we improve female
representation? |
Calculation Time Frame
| Current snapshot period |
Calculation
| unique([Employee_ID]) for ("Active_Status", "True") for ("Gender", "Female") / unique([Employee_ID]) for ("Active_Status", "True")
|
Translation
| Number of female active workers at end of previous month / Active headcount at end of previous month * 100 |
Comparison Point for KPI and Trend Story
| Depending on your data history:
|
Comparison Point for Gap Story
| Internal peer group |
What uses this metric?
| Gap Business Question: Where are gaps in female representation in management? |
Calculation Time Frame
| Current snapshot period |
Calculation
| unique([Employee_ID]) for ("Active_Status", "True") for ("Is_Manager", "True") for ("Gender", "Female") / unique([Employee_ID]) for ("Active_Status", "True") for ("Is_Manager", "True")
|
Translation
| Number of female active workers at end of previous month / Active headcount at end of
previous month * 100 Filtered on Is Manager = Yes |
Comparison Point
| Internal peer group |
Female Representation in Leadership
What uses this metric?
| KPI: Female Representation in Leadership |
Calculation Time Frame
| Current snapshot period |
Calculation
| unique([Employee_ID]) for ("Is_Leader", "True") for ("Gender", "Female") for ("Active_Status", "True") / unique([Employee_ID]) for ("Is_Leader", "True") for ("Active_Status", "True")
|
Translation
| Number of female active leaders at end of previous month / Active leaders at end of previous month * 100 |
Comparison Point
| Depending on your data history:
|
Headcount Growth Rate
What uses this metric?
| Trend Business Question: Where is the organization growing? |
Calculation Time Frame
| Current snapshot period |
Calculation
| (unique([Employee_ID]) - previous(unique([Employee_ID]), 6) for
("Active_Status", "True")) / previous(unique([Employee_ID]), 6) for
("Active_Status", "True")
OR (unique([Employee_ID]) - previous(unique([Employee_ID]),
3) for ("Active_Status", "True")) / previous(unique([Employee_ID]),
3) for ("Active_Status", "True") |
Translation
| Based on a 6 month or 3 month historic snapshot period. (Active headcount at end of
previous month - Active headcount at beginning of period) / Active
headcount at beginning of period |
Comparison Point
| Depending on your data history:
|
High Performers Rate
What uses this metric?
| Gap Business Question: Where can we focus to improve performance? |
Calculation Time Frame
| Current snapshot period |
Calculation
| unique([Employee_ID]) for ("High_Performer", "True") for ("Active_Status", "True") / unique([Employee_ID]) for ("Active_Status", "True")
|
Translation
| Number of high performer active workers at end of previous month / Active headcount at end of previous month * 100
|
Comparison Point
| Internal peer group |
High Performers Voluntary Attrition Rate
What uses this metric?
| KPI: High Performers Voluntary Attrition Rate Gap Business Question: Where are we losing high performers?
|
Calculation Time Frame
| Depending on your data history:
|
Calculation
| rollingSum(unique([Employee_ID]), 12) for ("Terminated_This_Period", "True")
for ("Termination_Category", "Voluntary") for
("High_Performer", "True")
/{avg_high_performer_headcount_rolling_12_months}, where
avg_high_performer_headcount_rolling_12_months =
(rollingSum(unique([Employee_ID]), 12) for ("High_Performer",
"True") for ("Active_Status", "True") / 12)
OR rollingSum(unique([Employee_ID]), 3) for
("Terminated_This_Period", "True") for
("Termination_Category", "Voluntary") for ("High_Performer", "True")
/ {avg_high_performer_headcount_rolling_3_months}, where
avg_high_performer_rolling_3_months =
(rollingSum(unique([Employee_ID]), 3) for ("High_Performer", "True")
for ("Active_Status", "True")/ 3) |
Translation
| Based on a 12 month or 3 month rolling period. Number of voluntary high performers
terminations within period / High performers average active headcount
for period (Sum of active headcounts for each month / Number of months
in rolling period) * 100 |
Comparison Point for KPI
| Month prior to the current snapshot period |
Comparison Point for Gap Story
| Internal peer group |
High Potentials Representation
What uses this metric?
| KPI: High Potentials Representation Trend Business Question: What
are key trends in talent? |
Calculation Time Frame
| Current snapshot period |
Calculation
| unique([Employee_ID]) for ("Is_High_Potential", "True") for ("Active_Status", "True") / unique([Employee_ID]) for ("Active_Status", "True")
|
Translation
| Number of high potential active workers at end of previous month / Active headcount at end of previous month * 100 |
Comparison Point
| Depending on your data history:
|
High Potentials Voluntary Attrition Rate
What uses this metric?
| KPI: High Potentials Voluntary Attrition Rate |
Calculation Time Frame
| Depending on your data history:
|
Calculation
| rollingSum(unique([Employee_ID]), 12) for ("Terminated_This_Period", "True")
for ("Termination_Category", "Voluntary") for
("Is_High_Potential", "True") /
{avg_high_potentials_headcount_rolling_12_months}, where
avg_high_potentials_headcount_rolling_12_months =
(rollingSum(unique([Employee_ID]), 12) for
("Is_High_Potential", "True") for ("Active_Status", "True") /
12)
OR rollingSum(unique([Employee_ID]), 3) for
("Terminated_This_Period", "True") for
("Termination_Category", "Voluntary") for ("Is_High_Potential",
"True") /
{avg_high_potentials_headcount_rolling_3_months}, where
avg_high_potentials_headcount_rolling_3_months =
(rollingSum(unique([Employee_ID]), 3) for
("Is_High_Potential", "True") for ("Active_Status", "True") /
3) |
Translation
| Based on a 12 month or 3 month rolling period. Number of voluntary high potentials
terminations within period / High potentials average active headcount
for period (Sum of high potentials headcounts for each month / Number of
months in rolling period) * 100 |
Comparison Point
| Month prior to the current snapshot period |
Individual Contributor to Manager Rate
What uses this metric?
| Gap Business Question: Where are gaps in internal mobility to management? |
Calculation Time Frame
| Depending on your data history:
|
Calculation
| rollingSum(unique([Employee_ID]), 12) for ("Active_Status", "True") for
("IC_To_MGR_This_Period", "True") /
{avg_active_headcount_rolling_12_months}, where
avg_active_headcount_rolling_12_months =
(rollingSum(unique([Employee_ID]), 12) for ("Active_Status",
"True") / 12)
OR rollingSum(unique([Employee_ID]), 3) for
("Active_Status", "True") for ("IC_To_MGR_This_Period",
"True") / {avg_active_headcount_rolling_3_months}, where
avg_active_headcount_rolling_3_months =
(rollingSum(unique([Employee_ID]), 3) for
("Active_Status", "True") / 3) |
Translation
| Based on a 12 month or 3 month rolling period. Number of active individual
contributors to management within period / Average active headcount for
period (Sum of active headcounts for each month / Number of months in
rolling period) * 100 |
Comparison Point
| Month prior to the current snapshot period |
New Hires Attrition Rate
What uses this metric?
| Gap Business Question: Where do we lose the most new hires? |
Calculation Time Frame
| Depending on your data history:
|
Calculation
| rollingSum(unique([Employee_ID]), 12) for ("Terminated_This_Period", "True")
for ("Is_New_Hire", "True") /
{avg_new_hires_headcount_rolling_12_months}, where
avg_new_hires_headcount_rolling_12_months =
(rollingSum(unique([Employee_ID]), 12) for ("Is_New_Hire",
"True") for ("Active_Status", "True")/ 12)
OR rollingSum(unique([Employee_ID]), 3) for
("Terminated_This_Period", "True") for ("Is_New_Hire",
"True") / {avg_new_hires_headcount_rolling_3_months}, where
avg_new_hires_headcount_rolling_3_months =
(rollingSum(unique([Employee_ID]), 3) for ("Is_New_Hire",
"True") for ("Active_Status", "True")/
3) |
Translation
| Based on a 12 month or 3 month rolling period. Number of terminated new hires within
period / New hires average active headcount for period (Sum of new hires
active headcounts for each month / Number of months in rolling period) *
100 |
Comparison Point
| Internal peer group |
New Hires Retention Rate
What uses this metric?
| KPI: New Hires Retention Rate |
Calculation Time Frame
| Depending on your data history:
|
Calculation
| (previous(unique([Employee_ID]), 12) for ("Is_New_Hire", "True") for
("Active_Status", "True") - rollingSum(unique([Employee_ID]), 12) for
("Terminated_This_Period", "True") for ("Is_New_Hire", "True") +
rollingSum(unique([Employee_ID]), 12) for ("Hired_This_Period", "True"))
/ (previous(unique([Employee_ID]), 12) for ("Is_New_Hire", "True") for
("Active_Status", "True") + rollingSum(unique([Employee_ID]), 12) for
("Hired_This_Period", "True"))
OR (previous(unique([Employee_ID]), 3) for ("Is_New_Hire",
"True") for ("Active_Status", "True") -
rollingSum(unique([Employee_ID]), 3) for ("Terminated_This_Period",
"True") for ("Is_New_Hire", "True") +
rollingSum(unique([Employee_ID]), 3) for ("Hired_This_Period",
"True")) / (previous(unique([Employee_ID]), 3) for ("Is_New_Hire",
"True") for ("Active_Status", "True") +
rollingSum(unique([Employee_ID]), 3) for ("Hired_This_Period",
"True")) |
Translation
| Based on a 12 month or 3 month rolling period. (Active new hires at beginning of period + Hired workers within period - Terminated new hires within period) / (Active new hires at beginning of period + Hired workers within period) * 100 |
Comparison Point
| Month prior to the current snapshot period |
Offer Accepted Rate
What uses this metric?
| KPI: Offer Accepted Rate |
Calculation Time Frame
| Current snapshot period |
Calculation
| ( (candidates_offered) - (candidates_offer_pending) - (candidates_offer_declined) ) / ( (candidates_offered) - (candidates_offer_pending) )
|
Variables for Calculation
|
|
Translation
| (Offers extended - Offers with decision pending from candidate - Offers declined) / (Offers extended - Offers with decision pending from candidate) * 100
|
Comparison Point
| Depending on your data history:
|
Offer Decline Rate
What uses this metric?
| Gap Business Question: What areas do we need to focus on to stay competitive with offers?
|
Calculation Time Frame
| Current snapshot period |
Calculation
| (candidates_offer_declined) / ( (candidates_offered) - (candidates_offer_pending) )
|
Variables for Calculation
|
|
Translation
| Offers declined / Offers extended (excluding pending) * 100
|
Comparison Point
| Internal peer group |
Promotion Rate
What uses this metric?
| KPI: Promotion Rate Gap Business Question: Where are gaps in promotions? |
Calculation Time Frame
| Depending on your data history:
|
Calculation
| rollingSum(unique([Employee_ID]), 12) for ("Promoted_This_Period", "True") for
("Active_Status", "True") / {avg_active_headcount_rolling_12_months},
where avg_active_headcount_rolling_12_months =
(rollingSum(unique([Employee_ID]), 12) for ("Active_Status",
"True") / 12)
OR rollingSum(unique([Employee_ID]), 3) for
("Promoted_This_Period", "True") for ("Active_Status",
"True") / {avg_active_headcount_rolling_3_months}, where
avg_active_headcount_rolling_3_months =
(rollingSum(unique([Employee_ID]), 3) for
("Active_Status", "True") / 3) |
Translation
| Based on a 12 month or 3 month rolling period. Number of promoted active workers
within period / Average active headcount for period (Sum of active
headcounts for each month / Number of months in rolling period) *
100 |
Comparison Point for KPI
| Month prior to current snapshot period |
Comparison Point for Gap Story
| Internal peer group |
What uses this metric?
| Gap Business Question: Where are gaps in promoting females? |
Calculation Time Frame
| Depending on your data history:
|
Calculation
| rollingSum(unique([Employee_ID]), 12) for ("Promoted_This_Period", "True") for
("Active_Status", "True") / {avg_active_headcount_rolling_12_months},
where avg_active_headcount_rolling_12_months =
(rollingSum(unique([Employee_ID]), 12) for ("Active_Status",
"True") / 12)
OR rollingSum(unique([Employee_ID]), 3) for
("Promoted_This_Period", "True") for ("Active_Status",
"True") / {avg_active_headcount_rolling_3_months}, where
avg_active_headcount_rolling_3_months =
(rollingSum(unique([Employee_ID]), 3) for
("Active_Status", "True") / 3) |
Translation
| Based on a 12 month or 3 month rolling period. Filtered on females. Number of
promoted active workers within period /Average active headcount for
period (Sum of active headcounts for each month / Number of months in
rolling period) * 100 |
Comparison Point
| Internal peer group |
Referral Hire Rate
What uses this metric?
| KPI: Referral Hire Rate |
Calculation Time Frame
| Current snapshot period |
Calculation
| (candidates_hired_referred) / (candidates_hired)
|
Variables for Calculation
|
|
Translation
| Number of referral hires in previous month / Number of hires in previous month * 100 |
Comparison Point
| Depending on your data history:
|
Retention Rate
What uses this metric?
| Gap Business Question: Where can we improve female retention in the workforce? |
Calculation Time Frame
| Depending on your data history:
|
Calculation
| (previous(unique([Employee_ID]), 12) for ("Gender", "Female") for
("Active_Status", "True") - rollingSum(unique([Employee_ID]), 12) for
("Terminated_This_Period", "True") for ("Gender", "Female") +
rollingSum(unique([Employee_ID]), 12) for ("Hired_This_Period", "True")
for ("Gender", "Female")) / (previous(unique([Employee_ID]), 12) for
("Gender", "Female") for ("Active_Status", "True") +
rollingSum(unique([Employee_ID]), 12) for ("Hired_This_Period", "True")
for ("Gender", "Female"))
OR (previous(unique([Employee_ID]), 3) for ("Gender",
"Female") for ("Active_Status", "True") -
rollingSum(unique([Employee_ID]), 3) for ("Terminated_This_Period",
"True") for ("Gender", "Female") + rollingSum(unique([Employee_ID]),
3) for ("Hired_This_Period", "True") for ("Gender", "Female")) /
(previous(unique([Employee_ID]), 3) for ("Gender", "Female") for
("Active_Status", "True") + rollingSum(unique([Employee_ID]), 3) for
("Hired_This_Period", "True") for ("Gender",
"Female")) |
Translation
| Based on a 12 month or 3 month rolling period. Filtered on females. (Active headcount at beginning of period + Hires within period - Terminations within period) / (Active headcount at beginning of period + Hires within period) * 100 |
Comparison Point
| Internal peer group |
What uses this metric?
| Gap Business Question: Where can we improve retention? |
Calculation Time Frame
| Depending on your data history:
|
Calculation
| (previous(unique([Employee_ID]), 12) for ("Active_Status", "True") -
rollingSum(unique([Employee_ID]), 12) for ("Terminated_This_Period",
"True") + rollingSum(unique([Employee_ID]), 12) for
("Hired_This_Period", "True")) / (previous(unique([Employee_ID]), 12)
for ("Active_Status", "True") + rollingSum(unique([Employee_ID]), 12)
for ("Hired_This_Period", "True"))
OR (previous(unique([Employee_ID]), 3) for
("Active_Status", "True") - rollingSum(unique([Employee_ID]), 3) for
("Terminated_This_Period", "True") +
rollingSum(unique([Employee_ID]), 3) for ("Hired_This_Period",
"True")) / (previous(unique([Employee_ID]), 3) for ("Active_Status",
"True") + rollingSum(unique([Employee_ID]), 3) for
("Hired_This_Period", "True")) |
Translation
| Based on a 12 month or 3 month rolling period. (Active headcount at beginning of period + Hires within period - Terminations within period) / (Active headcount at beginning of period + Hires within period) * 100 |
Comparison Point
| Internal peer group |