Painel de análise de RH no Power BI: Workforce Insights
A análise de pessoas é a aplicação de business intelligence que mais cresce nas empresas — e por boas razões. As organizações com programas maduros de análise de RH têm um lucro médio de três anos 82% maior do que as empresas com capacidades mínimas de dados de pessoas (Deloitte Human Capital Trends). Mesmo assim, a maioria das equipes de RH ainda monitora o número de funcionários em planilhas do Excel e calcula a rotatividade manualmente no Planilhas Google.
O Power BI oferece aos líderes de RH a mesma profundidade analítica que as equipes de finanças e vendas têm tido há anos: visibilidade do número de funcionários em tempo real, cálculos automatizados de rotatividade, análise de diversidade e monitoramento do ciclo de vida dos funcionários em toda a jornada do funcionário, desde a contratação até a demissão.
Este guia cria uma plataforma completa de análise de RH no Power BI, cobrindo o modelo de dados, todos os KPI críticos de RH com sua fórmula DAX e as páginas do painel que orientam as decisões reais da força de trabalho.
Principais conclusões
- A análise de RH requer uma abordagem de dimensão de mudança lenta (SCD) para o histórico de funcionários
- O cálculo da taxa de rotatividade deve distinguir separações voluntárias versus involuntárias
- Os painéis de diversidade exigem um design de privacidade cuidadoso — agregado, nunca em nível individual quando inadequado
- A análise do ciclo de vida dos funcionários monitora o tempo de contratação, o tempo de produtividade e as curvas de retenção
- Análise de ausências (fator Bradford, frequência de ausências) integrada aos dados da folha de pagamento
- As medidas DAX para número de funcionários são pontuais (não somadas) — requer padrões de cálculo especiais
- Todos os sistemas HRIS (Workday, SAP SuccessFactors, BambooHR) possuem conectores Power BI
- A segurança em nível de linha deve limitar os dados de RH a parceiros de negócios e gerentes de RH autorizados
Modelo de dados para análise de RH
Tabelas principais de RH
Employee_Snapshot (mudando lentamente, uma linha por funcionário por mês):
| Coluna | Descrição |
|---|---|
| CÓDIGO0 | Identificador do funcionário |
| CÓDIGO0 | Data final do mês do instantâneo |
| CÓDIGO0 | Ativo, em licença, rescindido |
| CÓDIGO0 | FK para Departamento |
| CÓDIGO0 | Grau/Faixa (L1-L8) |
| CÓDIGO0 | Cargo atual |
| CÓDIGO0 | FK para Funcionário (gerente) |
| CÓDIGO0 | FK para localização |
| CÓDIGO0 | Data original de contratação |
| CÓDIGO0 | Data de rescisão (nula se ativa) |
| CÓDIGO0 | Voluntário, Involuntário, Aposentadoria, etc. |
| CÓDIGO0 | Salário base mensal |
| CÓDIGO0 | 1,0 para FT, 0,5 para PT |
| CÓDIGO0 | M/F/Não binário (anonimizado para pequenos grupos) |
| CÓDIGO0 | Faixa etária agregada (não idade bruta) |
| CÓDIGO0 | Grupo étnico autodeclarado |
| CÓDIGO0 | Meses empregados na data do instantâneo |
Hiring_Events (uma linha por contratação):
HireID,EmployeeID,ApplicationDate,OfferDate,AcceptDate,StartDate,DepartmentID,SourceChannel,HiringManagerID,JobRequisitionID
Absence_Records (uma linha por evento de ausência):
AbsenceID,EmployeeID,StartDate,EndDate,DaysAbsent,AbsenceType,Reason,ApprovalStatus
Performance_Reviews (uma linha por avaliação):
ReviewID,EmployeeID,ReviewDate,PerformanceRating,ManagerID
Training_Completions (uma linha por treinamento):
TrainingID,EmployeeID,CompletionDate,ProgramName,HoursCompleted
Análise de número de funcionários
Cálculo pontual do número de funcionários
O número de funcionários é uma medida instantânea (quantos funcionários existem em um determinado momento), não uma soma. Isso requer tratamento especial do DAX:
// 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álise da taxa de rotatividade
A rotatividade é a métrica de RH mais monitorada e a mais comumente mal calculada. A fórmula correta usa o número médio de funcionários como denominador (não o número inicial ou final).
KPIs de rotatividade
// 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 Diversidade, Equidade e Inclusão
Análise DEI com reconhecimento de privacidade
A análise DEI deve ser implementada com proteções de privacidade – nunca exiba dados de nível individual por atributos confidenciais e suprima dados para grupos menores que um mínimo configurável (normalmente de 5 a 10 funcionários).
// 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
)
KPIs do painel DEI
| KPI | Fórmula | Alvo |
|---|---|---|
| Equilíbrio de Género | Mulheres % do número total de funcionários | 50% ± 5% |
| Disparidade salarial entre homens e mulheres | Salário médio feminino / Salário médio masculino | > 97% |
| Diversidade de Liderança | Grupos sub-representados em cargos seniores | > 30% |
| Taxa de contratação diversificada | Contratações diversas / contratações totais | > 40% |
| Patrimônio de promoção | Taxa de promoção por género/etnia | ± 2% entre grupos |
Análise do ciclo de vida do funcionário
Hora de contratar
// 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
)
Distribuição de posse
// 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álise de ausência
KPIs de ausência
// 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"
)
Arquitetura do painel de RH de 5 páginas
Página 1: Visão geral da força de trabalho
- Cartão KPI de número de funcionários (ano atual versus ano anterior)
- Número de funcionários FTE (real vs alvo)
- Número de funcionários por departamento (gráfico de barras)
- Tendência de headcount 12 meses (gráfico de linhas)
- Novas contratações vs rescisões (gráfico de barras borboleta/comparação)
- Mapa geográfico de número de funcionários
Página 2: Análise do faturamento
- Taxa de rotatividade anualizada (medidor vs benchmark do setor)
- Voluntário vs Involuntário (gráfico de rosca)
- Volume de negócios por departamento (gráfico de barras classificado, o mais alto primeiro)
- Rotatividade por faixa de posse (histograma)
- Tendência do volume de negócios 24 meses (gráfico de linhas)
- Detalhamento do motivo da saída (treemap)
Página 3: Aquisição de talentos
- Tendência do tempo de contratação (gráfico de linhas por mês)
- Taxa de aceitação de ofertas (cartão KPI)
- Contratações por canal de origem (gráfico de barras)
- Requisições Abertas por Departamento (tabela)
- Funil de contratação (das candidaturas às partidas)
- Custo por contratação por departamento
Página 4: Diversidade e Inclusão
- Equilíbrio de gênero por nível (gráfico de barras empilhadas)
- Disparidades salariais entre homens e mulheres por departamento (gráfico de barras)
- Tendência da taxa de contratação de diversidade (gráfico de linhas)
- Taxa de promoção por gênero (barra agrupada)
- Índice de diversidade da equipe por gestor
Página 5: Ausência e bem-estar
- Taxa de ausência por departamento (mapa de calor)
- Distribuição do Fator Bradford
- Ausência por motivo (gráfico de pizza)
- Tendência de ausência (gráfico de linhas de 12 meses)
- Gráfico de dispersão de correlação de ausência versus desempenho
Perguntas frequentes
Como faço para conectar o Power BI ao Workday ou SAP SuccessFactors?
O Workday fornece um módulo Prism Analytics e uma API REST aos quais o Power BI pode se conectar por meio do conector da Web usando autenticação OAuth. SAP SuccessFactors expõe APIs OData para dados de funcionários. Para ambos os sistemas, a arquitetura recomendada para grandes empresas é: HRIS → pipeline Fivetran ou Talend → Snowflake/Azure Synapse → Power BI. Isso desacopla a camada analítica do HRIS e evita problemas de limite de taxa API.
Como posso proteger dados confidenciais de funcionários no Power BI?
Aplique múltiplas camadas de proteção: A segurança em nível de linha restringe quais dados de funcionários cada visualizador vê (por exemplo, os gerentes veem apenas seus subordinados diretos, o HRBP vê suas unidades de negócios atribuídas). Aplique rótulos de confidencialidade da Proteção de Informações da Microsoft a conjuntos de dados que contenham dados pessoais. Nunca exiba dados salariais de funcionários individuais em painéis compartilhados. Para análise de diversidade, suprima métricas para grupos com menos de 10 funcionários. Certifique-se de que a política de privacidade de dados da sua organização permita explicitamente o uso do People Analytics.
Qual é a diferença entre número de funcionários e FTE?
O número de funcionários conta os funcionários independentemente do horário de trabalho (um funcionário de meio período conta como 1). FTE (equivalente a tempo integral) pondera por horas de trabalho – um funcionário de meio período conta como 0,5 FTE. Use o número de funcionários para contagens absolutas de funcionários (por exemplo, “temos 500 funcionários”). Use FTE para planejamento de capacidade e modelagem de custos (por exemplo, "temos 430 FTE de capacidade"). Ambas as medidas são importantes e servem propósitos diferentes.
Como calculo a taxa de rotatividade corretamente?
Taxa de rotatividade = (Número de separações / Número médio de funcionários) × 100. A chave é o denominador - use a média do número de funcionários inicial e final do período, não apenas o número de funcionários final. Para a rotatividade contínua de 12 meses, some os últimos 12 meses de separações e divida pelo número médio de funcionários de 12 meses. Muitas organizações usam incorretamente o número final de funcionários, o que aumenta a rotatividade em organizações em crescimento.
O Power BI pode mostrar risco preditivo de desgaste para funcionários individuais?
Com a integração do Azure Machine Learning, sim. Crie um modelo de previsão de desgaste no Azure ML usando recursos históricos (manutenção, classificação de desempenho, pontuação de engajamento, data da última promoção, salário x mercado, classificação do gerente) e produza uma pontuação de probabilidade de desgaste para cada funcionário atual. Conecte essa pontuação ao Power BI e exiba-a em um painel de gerenciamento mostrando o risco de fuga da equipe, permitindo conversas proativas sobre retenção antes que os funcionários se demitam.
Próximas etapas
A análise de RH no Power BI oferece aos líderes a mesma tomada de decisões baseada em dados que as equipes financeiras e de vendas têm tido há anos. Compreender quem está saindo, por que, de quais equipes e em que mandato dá ao RH a visão para intervir mais cedo e reter o talento mais importante.
A equipe de Power BI da ECOSIRE constrói plataformas completas de análise de RH — desde o design de pipeline de dados HRIS até painéis interativos de People Analytics com controles de privacidade apropriados e acesso baseado em função.
Explore nossos serviços de desenvolvimento de painel do Power BI para entender nossa abordagem de análise de RH ou entre em contato com nossa equipe para discutir os requisitos de análise de sua força de trabalho e fontes de dados.
Escrito por
ECOSIRE Research and Development Team
Construindo produtos digitais de nível empresarial na ECOSIRE. Compartilhando insights sobre integrações Odoo, automação de e-commerce e soluções de negócios com IA.
Artigos 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.