Panel de análisis de recursos humanos en Power BI: Workforce Insights
El análisis de personas es la aplicación de inteligencia empresarial de más rápido crecimiento en la empresa, y por una buena razón. Las organizaciones con programas maduros de análisis de recursos humanos tienen un beneficio promedio de tres años un 82% mayor que las empresas con capacidades mínimas de datos de personas (Deloitte Human Capital Trends). Sin embargo, la mayoría de los equipos de recursos humanos todavía realizan un seguimiento de la plantilla en hojas de cálculo de Excel y calculan la rotación manualmente en Google Sheets.
Power BI brinda a los líderes de recursos humanos la misma profundidad analítica que los equipos de finanzas y ventas han tenido durante años: visibilidad de la plantilla en tiempo real, cálculos automatizados de rotación, análisis de diversidad y seguimiento del ciclo de vida de los empleados durante todo el recorrido del empleado, desde la contratación hasta la baja.
Esta guía crea una plataforma completa de análisis de recursos humanos en Power BI, que cubre el modelo de datos, cada KPI de recursos humanos crítico con su fórmula DAX y las páginas del panel que impulsan las decisiones reales de la fuerza laboral.
Conclusiones clave
- El análisis de recursos humanos requiere un enfoque de dimensión que cambia lentamente (SCD) para el recuento histórico
- El cálculo de la tasa de rotación debe distinguir entre separaciones voluntarias e involuntarias.
- Los paneles de diversidad requieren un diseño de privacidad cuidadoso: agregado, nunca a nivel individual cuando sea inapropiado.
- El análisis del ciclo de vida de los empleados rastrea el tiempo de contratación, el tiempo de productividad y las curvas de retención.
- Los análisis de ausencias (factor Bradford, frecuencia de ausencias) se integran con los datos de nómina
- Las medidas DAX para el recuento de personal son puntuales (no se suman): requiere patrones de cálculo especiales
- Todos los sistemas HRIS (Workday, SAP SuccessFactors, BambooHR) tienen conectores Power BI
- La seguridad a nivel de fila debe limitar los datos de recursos humanos a los socios comerciales y gerentes de recursos humanos autorizados.
Modelo de datos para análisis de recursos humanos
Tablas principales de recursos humanos
Employee_Snapshot (cambiando lentamente, una fila por empleado por mes):
| Columna | Descripción |
|---|---|
| CÓDIGO0 | Identificador de empleado |
| CÓDIGO0 | Fecha de fin de mes de la instantánea |
| CÓDIGO0 | Activo, de licencia, despedido |
| CÓDIGO0 | FK al Departamento |
| CÓDIGO0 | Grado/Banda (L1-L8) |
| CÓDIGO0 | Título del trabajo actual |
| CÓDIGO0 | FK a Empleado (gerente) |
| CÓDIGO0 | FK a la ubicación |
| CÓDIGO0 | Fecha de contratación original |
| CÓDIGO0 | Fecha de terminación (nula si está activa) |
| CÓDIGO0 | Voluntario, Involuntario, Jubilación, etc. |
| CÓDIGO0 | Salario base mensual |
| CÓDIGO0 | 1,0 para FT, 0,5 para PT |
| CÓDIGO0 | M/F/No binario (anonimizado para grupos pequeños) |
| CÓDIGO0 | Franja de edad agregada (no edad bruta) |
| CÓDIGO0 | Grupo étnico autodeclarado |
| CÓDIGO0 | Meses empleados en la fecha de la instantánea |
Hiring_Events (una fila por contratación):
HireID,EmployeeID,ApplicationDate,OfferDate,AcceptDate,StartDate,DepartmentID,SourceChannel,HiringManagerID,JobRequisitionID
Absence_Records (una fila por evento de ausencia):
AbsenceID,EmployeeID,StartDate,EndDate,DaysAbsent,AbsenceType,Reason,ApprovalStatus
Performance_Reviews (una fila por revisión):
ReviewID,EmployeeID,ReviewDate,PerformanceRating,ManagerID
Training_Completions (una fila por entrenamiento):
TrainingID,EmployeeID,CompletionDate,ProgramName,HoursCompleted
Análisis de personal
Cálculo de personal en un momento dado
La plantilla es una medida instantánea (cuántos empleados existen en un momento dado), no una suma. Esto requiere un manejo DAX especial:
// Headcount at any selected date
Headcount =
CALCULATE(
COUNTROWS(Employee_Snapshot),
Employee_Snapshot[Status] = "Active",
// Use the latest available snapshot for the selected period
Employee_Snapshot[SnapshotDate] = MAX(Employee_Snapshot[SnapshotDate])
)
// FTE-adjusted Headcount
FTE Headcount =
CALCULATE(
SUMX(
FILTER(Employee_Snapshot, Employee_Snapshot[Status] = "Active"),
Employee_Snapshot[FullTimeEquivalent]
),
Employee_Snapshot[SnapshotDate] = MAX(Employee_Snapshot[SnapshotDate])
)
// Headcount by Department (for matrix/bar chart)
Dept Headcount =
CALCULATE(
[Headcount],
ALLEXCEPT(Employee_Snapshot, Employee_Snapshot[DepartmentID])
)
// Headcount growth (vs prior month)
Headcount MoM Change =
[Headcount] -
CALCULATE(
[Headcount],
DATEADD(Date[Date], -1, MONTH)
)
// Headcount trend (for sparkline or line chart)
Headcount Trend =
CALCULATE(
[Headcount],
REMOVEFILTERS(Date[Month])
)
Análisis de la tasa de rotación
La rotación es la métrica de recursos humanos más seguida y la que más comúnmente se calcula mal. La fórmula correcta utiliza la plantilla promedio como denominador (ni la plantilla inicial ni final).
KPI de facturación
// Total Terminations in Period
Terminations =
CALCULATE(
COUNTROWS(Employee_Snapshot),
Employee_Snapshot[Status] = "Terminated",
Employee_Snapshot[TerminationDate] >= MIN(Date[Date]),
Employee_Snapshot[TerminationDate] <= MAX(Date[Date])
)
// Voluntary Terminations (resigned)
Voluntary Terminations =
CALCULATE(
[Terminations],
Employee_Snapshot[TerminationReason] = "Voluntary"
)
// Involuntary Terminations (laid off, fired)
Involuntary Terminations =
CALCULATE(
[Terminations],
Employee_Snapshot[TerminationReason] = "Involuntary"
)
// Average Headcount (for turnover denominator)
Avg Headcount =
AVERAGEX(
VALUES(Date[Month]),
[Headcount]
)
// Annualized Turnover Rate
Turnover Rate =
DIVIDE(
[Terminations],
[Avg Headcount],
0
) * 12 -- Annualize if showing monthly data
// Voluntary Turnover Rate
Voluntary Turnover Rate =
DIVIDE([Voluntary Terminations], [Avg Headcount], 0) * 12
// Regrettable Turnover (voluntary + high performers)
Regrettable Turnover =
CALCULATE(
[Voluntary Terminations],
RELATED(Performance_Reviews[PerformanceRating]) >= 4 -- High performers
)
// Retention Rate
Retention Rate = 1 - [Turnover Rate]
// New Hire Survival Rate (% of new hires still employed after 90 days)
90 Day Survival Rate =
DIVIDE(
CALCULATE(
COUNTROWS(Hiring_Events),
DATEDIFF(Hiring_Events[StartDate], TODAY(), DAY) >= 90,
RELATED(Employee_Snapshot[Status]) = "Active"
),
CALCULATE(
COUNTROWS(Hiring_Events),
DATEDIFF(Hiring_Events[StartDate], TODAY(), DAY) >= 90
),
0
)
Métricas de diversidad, equidad e inclusión
Análisis DEI consciente de la privacidad
Los análisis de DEI deben implementarse con barreras de privacidad: nunca mostrar datos a nivel individual por atributos confidenciales y suprimir datos para grupos más pequeños que un mínimo configurable (normalmente de 5 a 10 empleados).
// Gender ratio (with suppression for small groups)
Gender Ratio Female =
VAR FemaleCount = CALCULATE([Headcount], Employee_Snapshot[Gender] = "Female")
VAR TotalCount = [Headcount]
RETURN
IF(TotalCount >= 10, DIVIDE(FemaleCount, TotalCount, 0), BLANK())
// Pay equity ratio (female to male)
Gender Pay Ratio =
VAR FemalePay = CALCULATE(
AVERAGE(Employee_Snapshot[BaseSalary]),
Employee_Snapshot[Gender] = "Female"
)
VAR MalePay = CALCULATE(
AVERAGE(Employee_Snapshot[BaseSalary]),
Employee_Snapshot[Gender] = "Male"
)
RETURN DIVIDE(FemalePay, MalePay, 0)
// Leadership diversity (% of senior roles filled by underrepresented groups)
Leadership Diversity % =
DIVIDE(
CALCULATE(
[Headcount],
Employee_Snapshot[JobLevel] IN {"L6","L7","L8"},
Employee_Snapshot[Gender] = "Female"
),
CALCULATE(
[Headcount],
Employee_Snapshot[JobLevel] IN {"L6","L7","L8"}
),
0
)
KPI del panel DEI
| KPI | Fórmula | Objetivo |
|---|---|---|
| Equilibrio de género | % femenino de la plantilla total | 50% ± 5% |
| Brecha salarial de género | Salario medio femenino / Salario medio masculino | > 97% |
| Diversidad de liderazgo | Grupos subrepresentados en puestos de alto nivel | > 30% |
| Tasa de contratación diversa | Contrataciones diversas / contrataciones totales | > 40% |
| Promoción Equidad | Tasa de promoción por género/etnia | ± 2% entre grupos |
Análisis del ciclo de vida de los empleados
Tiempo de contratación
// Average days from job posting to offer acceptance
Avg Time to Hire =
AVERAGEX(
Hiring_Events,
DATEDIFF(
Hiring_Events[ApplicationDate],
Hiring_Events[AcceptDate],
DAY
)
)
// Offer Acceptance Rate
Offer Acceptance Rate =
DIVIDE(
CALCULATE(COUNTROWS(Hiring_Events), Hiring_Events[AcceptDate] <> BLANK()),
CALCULATE(COUNTROWS(Hiring_Events), Hiring_Events[OfferDate] <> BLANK()),
0
)
// Source Channel Effectiveness (hired employees by source)
Source Hire Rate =
DIVIDE(
COUNTROWS(Hiring_Events),
CALCULATE(
COUNTROWS(Hiring_Events),
REMOVEFILTERS(Hiring_Events[SourceChannel])
),
0
)
Distribución de tenencia
// Tenure bucket (for histogram)
Tenure Bucket =
SWITCH(TRUE(),
Employee_Snapshot[TenureMonths] < 3, "0-3 months",
Employee_Snapshot[TenureMonths] < 12, "3-12 months",
Employee_Snapshot[TenureMonths] < 24, "1-2 years",
Employee_Snapshot[TenureMonths] < 60, "2-5 years",
Employee_Snapshot[TenureMonths] < 120, "5-10 years",
"10+ years"
)
// Average Tenure at Separation
Avg Tenure at Separation =
AVERAGEX(
FILTER(Employee_Snapshot, Employee_Snapshot[Status] = "Terminated"),
Employee_Snapshot[TenureMonths]
)
Análisis de ausencias
KPI de ausencia
// Absence Rate (% of working days lost)
Absence Rate =
DIVIDE(
SUM(Absence_Records[DaysAbsent]),
[Headcount] * NETWORKDAYS(MIN(Date[Date]), MAX(Date[Date])),
0
)
// Bradford Factor (frequency-weighted absence score)
// B = S² × D (S = absence episodes, D = total days)
Bradford Factor =
VAR Spells = COUNTROWS(Absence_Records)
VAR Days = SUM(Absence_Records[DaysAbsent])
RETURN Spells * Spells * Days
// Average Absence Days per Employee
Avg Absence Days =
DIVIDE(SUM(Absence_Records[DaysAbsent]), [Headcount], 0)
// Absence by Type (breakdown)
Medical Absence Days =
CALCULATE(
SUM(Absence_Records[DaysAbsent]),
Absence_Records[AbsenceType] = "Medical"
)
Arquitectura del panel de recursos humanos de 5 páginas
Página 1: Descripción general de la fuerza laboral
- Tarjeta KPI de plantilla (año actual vs año anterior)
- Plantilla FTE (real frente a objetivo)
- Plantilla por departamento (gráfico de barras)
- Tendencia de plantilla 12 meses (gráfico de líneas)
- Nuevas contrataciones frente a despidos (gráfico de barras de comparación/mariposa)
- Mapa de plantilla geográfica
Página 2: Análisis de facturación
- Tasa de rotación anualizada (medidor versus punto de referencia de la industria)
- Voluntario vs Involuntario (gráfico de anillos)
- Volumen de negocios por departamento (gráfico de barras ordenado, el más alto primero)
- Facturación por banda de tenencia (histograma)
- Tendencia de facturación 24 meses (gráfico de líneas)
- Desglose del motivo de salida (mapa de árbol)
Página 3: Adquisición de talento
- Tendencia de tiempo de contratación (gráfico de líneas por mes)
- Tasa de aceptación de oferta (tarjeta KPI)
- Contrataciones por canal de origen (gráfico de barras)
- Solicitudes abiertas por departamento (tabla)
- Embudo de contratación (desde solicitudes hasta inicios)
- Costo por contratación por departamento
Página 4: Diversidad e inclusión
- Equilibrio de género por nivel (gráfico de barras apiladas)
- Brecha salarial de género por departamento (gráfico de barras)
- Tendencia de la tasa de contratación por diversidad (gráfico de líneas)
- Tasa de promoción por género (barra agrupada)
- Índice de diversidad del equipo por gerente.
Página 5: Ausencia y Bienestar
- Tasa de ausentismo por departamento (mapa de calor)
- Distribución del factor Bradford
- Ausencia por motivo (gráfico circular)
- Tendencia de ausencia (gráfico de líneas de 12 meses)
- Diagrama de dispersión de correlación entre ausencia y rendimiento
Preguntas frecuentes
¿Cómo conecto Power BI a Workday o SAP SuccessFactors?
Workday proporciona un módulo Prism Analytics y una API REST a la que Power BI puede conectarse a través del conector web mediante autenticación OAuth. SAP SuccessFactors expone las API de OData para los datos de los empleados. Para ambos sistemas, la arquitectura recomendada para grandes empresas es: HRIS → Fivetran o Talend pipeline → Snowflake/Azure Synapse → Power BI. Esto desacopla la capa analítica del HRIS y evita problemas de límite de tasa API.
¿Cómo protejo los datos confidenciales de los empleados en Power BI?
Aplique múltiples capas de protección: la seguridad a nivel de fila restringe qué datos de los empleados ve cada espectador (por ejemplo, los gerentes ven solo a sus subordinados directos, HRBP ve sus unidades de negocios asignadas). Aplique etiquetas de confidencialidad de Microsoft Information Protection a conjuntos de datos que contengan datos personales. Nunca muestre datos salariales a nivel de empleado individual en paneles compartidos. Para análisis de diversidad, suprima las métricas para grupos de menos de 10 empleados. Asegúrese de que la política de privacidad de datos de su organización permita explícitamente el uso de People Analytics.
¿Cuál es la diferencia entre plantilla y FTE?
La plantilla cuenta a los empleados independientemente de su horario laboral (un empleado a tiempo parcial cuenta como 1). Ponderaciones FTE (equivalente a tiempo completo) por horas de trabajo: un empleado a tiempo parcial del 50 % cuenta como 0,5 FTE. Utilice la plantilla para el recuento absoluto de empleados (por ejemplo, "tenemos 500 empleados"). Utilice FTE para la planificación de capacidad y el modelado de costos (por ejemplo, "tenemos 430 FTE de capacidad"). Ambas medidas son importantes y tienen propósitos diferentes.
¿Cómo calculo correctamente la tasa de rotación?
Tasa de rotación = (Número de separaciones / Plantilla promedio) × 100. La clave es el denominador: utilice el promedio de la plantilla inicial y final del período, no solo la plantilla final. Para la rotación de 12 meses consecutivos, sume los últimos 12 meses de separaciones y divídalos por la plantilla promedio de 12 meses. Muchas organizaciones utilizan incorrectamente la plantilla final, lo que infla la rotación en organizaciones en crecimiento.
¿Puede Power BI mostrar un riesgo de deserción predictivo para empleados individuales?
Con la integración de Azure Machine Learning, sí. Cree un modelo de predicción de deserción en Azure ML utilizando características históricas (permanencia, calificación de desempeño, puntaje de participación, fecha del último ascenso, salario versus mercado, calificación del gerente) y genere una puntuación de probabilidad de deserción para cada empleado actual. Conecte esta puntuación a Power BI y muéstrela en un panel de administrador que muestre el riesgo de fuga de su equipo, lo que permite conversaciones de retención proactivas antes de que los empleados renuncien.
Próximos pasos
El análisis de recursos humanos en Power BI brinda a los líderes la misma toma de decisiones basada en datos que los equipos de finanzas y ventas han tenido durante años. Comprender quién se va, por qué, de qué equipos y durante qué período le da a RR.HH. la información necesaria para intervenir antes y retener el talento más importante.
El equipo de Power BI de ECOSIRE crea plataformas completas de análisis de recursos humanos, desde el diseño de canalización de datos HRIS hasta paneles interactivos de People Analytics con controles de privacidad adecuados y acceso basado en roles.
Explore nuestros servicios de desarrollo de paneles de Power BI para comprender nuestro enfoque de análisis de recursos humanos, o póngase en contacto con nuestro equipo para analizar los requisitos de análisis de su fuerza laboral y las fuentes de datos.
Escrito por
ECOSIRE Research and Development Team
Construyendo productos digitales de nivel empresarial en ECOSIRE. Compartiendo perspectivas sobre integraciones Odoo, automatización de eCommerce y soluciones empresariales impulsadas por IA.
Artículos relacionados
Building Financial Dashboards with Power BI
Step-by-step guide to building financial dashboards in Power BI covering data connections to accounting systems, DAX measures for KPIs, P&L visualisations, and best practices.
Case Study: Power BI Analytics for Multi-Location Retail
How a 14-location retail chain unified their reporting in Power BI connected to Odoo, replacing 40 spreadsheets with one dashboard and cutting reporting time by 78%.
The Future of Work: AI-Augmented Workforce in 2026-2030
A grounded analysis of how AI is reshaping work from 2026-2030—what jobs change, what skills matter, how organizations adapt, and what workers and leaders should do now.