Bicycle.LLCSchedule a call

← Dashboard collection

Choose dashboard — Succession and Talent Ops

people analytics dashboard

Succession and Talent Ops

Succession, readiness, skills, training, and absence measures.

6 pages · Power BI

These dashboards use synthetic workforce data. Values illustrate the report design.

Choose page — 2 Succession

Selected page

2 Succession

DAX definitions

Exact source expressions and direct measure dependencies for the selected page.

Bench Strength

TalentEmployee · Succession


VAR __roleKeys = VALUES(SuccessionRole[roleId])
VAR __skillPeople = VALUES(SkillGap[employeeId])
VAR __people = FILTER(TalentEmployee,
  (NOT ISFILTERED(SuccessionRole) || TalentEmployee[roleId] IN __roleKeys) &&
  (NOT ISFILTERED(SkillGap) || TalentEmployee[employeeId] IN __skillPeople))
VAR __ids = SELECTCOLUMNS(__people, "__id", TalentEmployee[employeeId])
VAR __poolKeys = SELECTCOLUMNS(__people, "__role", TalentEmployee[roleId])
VAR __roleScope = FILTER(SuccessionRole, SuccessionRole[roleId] IN __poolKeys)
VAR __roles = ADDCOLUMNS(__roleScope,
  "__successors", VAR __key = SuccessionRole[roleId] RETURN COUNTROWS(FILTER(__people, TalentEmployee[roleId] = __key && TalentEmployee[successorFlag] = "Yes")) + 0,
  "__ready", VAR __key = SuccessionRole[roleId] RETURN COUNTROWS(FILTER(__people, TalentEmployee[roleId] = __key && TalentEmployee[successorFlag] = "Yes" && TalentEmployee[promotionReadiness] = "1 Ready now")) + 0)
VAR __skills = FILTER(SkillGap, SkillGap[employeeId] IN __ids)
VAR __n = COUNTROWS(__people) + 0
RETURN IF(__n < 10 || ISEMPTY(AsOf), BLANK(), VAR __g = COUNTROWS(FILTER(__people, TalentEmployee[successorFlag] = "Yes")) + 0 RETURN IF(__g > 0 && __g < 10, BLANK(), DIVIDE(__g, COUNTROWS(__roles))))

Direct dependencies: None

Ready-Now Role Coverage %

TalentEmployee · Succession


VAR __roleKeys = VALUES(SuccessionRole[roleId])
VAR __skillPeople = VALUES(SkillGap[employeeId])
VAR __people = FILTER(TalentEmployee,
  (NOT ISFILTERED(SuccessionRole) || TalentEmployee[roleId] IN __roleKeys) &&
  (NOT ISFILTERED(SkillGap) || TalentEmployee[employeeId] IN __skillPeople))
VAR __ids = SELECTCOLUMNS(__people, "__id", TalentEmployee[employeeId])
VAR __poolKeys = SELECTCOLUMNS(__people, "__role", TalentEmployee[roleId])
VAR __roleScope = FILTER(SuccessionRole, SuccessionRole[roleId] IN __poolKeys)
VAR __roles = ADDCOLUMNS(__roleScope,
  "__successors", VAR __key = SuccessionRole[roleId] RETURN COUNTROWS(FILTER(__people, TalentEmployee[roleId] = __key && TalentEmployee[successorFlag] = "Yes")) + 0,
  "__ready", VAR __key = SuccessionRole[roleId] RETURN COUNTROWS(FILTER(__people, TalentEmployee[roleId] = __key && TalentEmployee[successorFlag] = "Yes" && TalentEmployee[promotionReadiness] = "1 Ready now")) + 0)
VAR __skills = FILTER(SkillGap, SkillGap[employeeId] IN __ids)
VAR __n = COUNTROWS(__people) + 0
RETURN IF(__n < 10 || ISEMPTY(AsOf), BLANK(), DIVIDE(COUNTROWS(FILTER(__roles, [__ready] > 0)) + 0, COUNTROWS(__roles)))

Direct dependencies: None

Ready-Now Successor Count

TalentEmployee · Succession


VAR __roleKeys = VALUES(SuccessionRole[roleId])
VAR __skillPeople = VALUES(SkillGap[employeeId])
VAR __people = FILTER(TalentEmployee,
  (NOT ISFILTERED(SuccessionRole) || TalentEmployee[roleId] IN __roleKeys) &&
  (NOT ISFILTERED(SkillGap) || TalentEmployee[employeeId] IN __skillPeople))
VAR __ids = SELECTCOLUMNS(__people, "__id", TalentEmployee[employeeId])
VAR __poolKeys = SELECTCOLUMNS(__people, "__role", TalentEmployee[roleId])
VAR __roleScope = FILTER(SuccessionRole, SuccessionRole[roleId] IN __poolKeys)
VAR __roles = ADDCOLUMNS(__roleScope,
  "__successors", VAR __key = SuccessionRole[roleId] RETURN COUNTROWS(FILTER(__people, TalentEmployee[roleId] = __key && TalentEmployee[successorFlag] = "Yes")) + 0,
  "__ready", VAR __key = SuccessionRole[roleId] RETURN COUNTROWS(FILTER(__people, TalentEmployee[roleId] = __key && TalentEmployee[successorFlag] = "Yes" && TalentEmployee[promotionReadiness] = "1 Ready now")) + 0)
VAR __skills = FILTER(SkillGap, SkillGap[employeeId] IN __ids)
VAR __n = COUNTROWS(__people) + 0
RETURN IF(__n < 10 || ISEMPTY(AsOf), BLANK(), VAR __g = COUNTROWS(FILTER(__people, TalentEmployee[successorFlag] = "Yes" && TalentEmployee[promotionReadiness] = "1 Ready now")) + 0 RETURN IF(__g > 0 && __g < 10, BLANK(), __g))

Direct dependencies: None

Roles With No Ready Successor

TalentEmployee · Succession


VAR __roleKeys = VALUES(SuccessionRole[roleId])
VAR __skillPeople = VALUES(SkillGap[employeeId])
VAR __people = FILTER(TalentEmployee,
  (NOT ISFILTERED(SuccessionRole) || TalentEmployee[roleId] IN __roleKeys) &&
  (NOT ISFILTERED(SkillGap) || TalentEmployee[employeeId] IN __skillPeople))
VAR __ids = SELECTCOLUMNS(__people, "__id", TalentEmployee[employeeId])
VAR __poolKeys = SELECTCOLUMNS(__people, "__role", TalentEmployee[roleId])
VAR __roleScope = FILTER(SuccessionRole, SuccessionRole[roleId] IN __poolKeys)
VAR __roles = ADDCOLUMNS(__roleScope,
  "__successors", VAR __key = SuccessionRole[roleId] RETURN COUNTROWS(FILTER(__people, TalentEmployee[roleId] = __key && TalentEmployee[successorFlag] = "Yes")) + 0,
  "__ready", VAR __key = SuccessionRole[roleId] RETURN COUNTROWS(FILTER(__people, TalentEmployee[roleId] = __key && TalentEmployee[successorFlag] = "Yes" && TalentEmployee[promotionReadiness] = "1 Ready now")) + 0)
VAR __skills = FILTER(SkillGap, SkillGap[employeeId] IN __ids)
VAR __n = COUNTROWS(__people) + 0
RETURN IF(__n < 10 || ISEMPTY(AsOf), BLANK(), COUNTROWS(FILTER(__roles, [__ready] = 0)) + 0)

Direct dependencies: None

Succession Coverage %

TalentEmployee · Succession


VAR __roleKeys = VALUES(SuccessionRole[roleId])
VAR __skillPeople = VALUES(SkillGap[employeeId])
VAR __people = FILTER(TalentEmployee,
  (NOT ISFILTERED(SuccessionRole) || TalentEmployee[roleId] IN __roleKeys) &&
  (NOT ISFILTERED(SkillGap) || TalentEmployee[employeeId] IN __skillPeople))
VAR __ids = SELECTCOLUMNS(__people, "__id", TalentEmployee[employeeId])
VAR __poolKeys = SELECTCOLUMNS(__people, "__role", TalentEmployee[roleId])
VAR __roleScope = FILTER(SuccessionRole, SuccessionRole[roleId] IN __poolKeys)
VAR __roles = ADDCOLUMNS(__roleScope,
  "__successors", VAR __key = SuccessionRole[roleId] RETURN COUNTROWS(FILTER(__people, TalentEmployee[roleId] = __key && TalentEmployee[successorFlag] = "Yes")) + 0,
  "__ready", VAR __key = SuccessionRole[roleId] RETURN COUNTROWS(FILTER(__people, TalentEmployee[roleId] = __key && TalentEmployee[successorFlag] = "Yes" && TalentEmployee[promotionReadiness] = "1 Ready now")) + 0)
VAR __skills = FILTER(SkillGap, SkillGap[employeeId] IN __ids)
VAR __n = COUNTROWS(__people) + 0
RETURN IF(__n < 10 || ISEMPTY(AsOf), BLANK(), DIVIDE(COUNTROWS(FILTER(__roles, [__successors] > 0)) + 0, COUNTROWS(__roles)))

Direct dependencies: None

Talent Population

TalentEmployee · Population


VAR __roleKeys = VALUES(SuccessionRole[roleId])
VAR __skillPeople = VALUES(SkillGap[employeeId])
VAR __people = FILTER(TalentEmployee,
  (NOT ISFILTERED(SuccessionRole) || TalentEmployee[roleId] IN __roleKeys) &&
  (NOT ISFILTERED(SkillGap) || TalentEmployee[employeeId] IN __skillPeople))
VAR __ids = SELECTCOLUMNS(__people, "__id", TalentEmployee[employeeId])
VAR __poolKeys = SELECTCOLUMNS(__people, "__role", TalentEmployee[roleId])
VAR __roleScope = FILTER(SuccessionRole, SuccessionRole[roleId] IN __poolKeys)
VAR __roles = ADDCOLUMNS(__roleScope,
  "__successors", VAR __key = SuccessionRole[roleId] RETURN COUNTROWS(FILTER(__people, TalentEmployee[roleId] = __key && TalentEmployee[successorFlag] = "Yes")) + 0,
  "__ready", VAR __key = SuccessionRole[roleId] RETURN COUNTROWS(FILTER(__people, TalentEmployee[roleId] = __key && TalentEmployee[successorFlag] = "Yes" && TalentEmployee[promotionReadiness] = "1 Ready now")) + 0)
VAR __skills = FILTER(SkillGap, SkillGap[employeeId] IN __ids)
VAR __n = COUNTROWS(__people) + 0
RETURN IF(__n < 10 || ISEMPTY(AsOf), BLANK(), __n)

Direct dependencies: None