People Analytics · Portfólio

Dashboard de RH —
Rede Varejo Simulada

Projeto end-to-end de People Analytics cobrindo 3 anos de operação de uma rede de varejo com 3 lojas e 125 colaboradores. Da simulação de dados em SQL ao dashboard interativo no Power BI, com ETL em Python e visuais customizados em HTML/CSS via medidas DAX.

📊 SQL · 5 tabelas simuladas 🐍 Python · ETL + Matplotlib ⚡ Power BI · 47 medidas DAX 🎨 HTML/CSS · 6 páginas customizadas 📅 Período: 2022–2024
▶ Acessar Dashboard Interativo
📈 Indicadores do Período 2022–2024
Principais métricas consolidadas do dashboard. Todos os valores respondem aos filtros de Ano, Mês, Loja e Cargo.
Headcount Ativo
100
colaboradores ativos
3 lojas · 6 deptos
Taxa de Turnover
20%
25 desligamentos
benchmark: 15%
Tempo Médio de Casa
4,2 a
média entre ativos
67% com 3+ anos
Nota Média Perf.
3,7
escala de 1,0 a 5,0
65% Bom ou Excelente
SLA Recrutamento
36,9d
dias até contratação
95,2% preenchidas
Custo Total Folha
R$31M
acumulado 2022–2024
encargos incluídos
🏗️ Arquitetura em 4 Camadas
Cada camada tem propósito e entregável distintos, formando um pipeline analítico completo.
01
SQL · SQLite
Simulação de Dados
5 tabelas relacionadas com 125 colaboradores, contratos, salários, avaliações e vagas. Dados coerentes entre si — funcionários desligados por desempenho possuem notas consistentemente baixas.
02
Python · Google Colab
ETL e Enriquecimento
Pipeline com Pandas: limpeza de dados, tipagem, colunas derivadas (faixa etária, tempo de casa, faixa salarial) e exportação do dataset consolidado para ingestão no Power BI.
03
Power BI · DAX
Modelo e Medidas
Star schema com 9 relacionamentos, 3 dimensões criadas via DAX e 47 medidas organizadas em 5 pastas temáticas. Filtros responsivos via USERELATIONSHIP e SELECTEDVALUE.
04
HTML + CSS · DAX
Visuais Customizados
6 páginas geradas por medidas DAX que concatenam HTML com variáveis dinâmicas. Barras de progresso, funis e KPIs com larguras calculadas em tempo real pelos filtros selecionados.
📊 Visão dos Dados
Distribuição do headcount, turnover por motivo e composição da folha de pagamento.
Headcount por Departamento
Distribuição dos 100 colaboradores ativos
Motivos de Desligamento
25 desligamentos no período 2022–2024
Distribuição de Performance por Conceito
Total de avaliações semestrais 2022–2024
Evolução do Custo Total por Semestre (R$K)
Crescimento de +5% a.a. via reajustes salariais
🔷 Modelo Estrela — Star Schema
Tabelas fato ligadas a dimensões analíticas. Relacionamentos configurados para evitar caminhos ambíguos e garantir responsividade total aos slicers.
Tabela Fato
Dimensão
dCalendario
Dimensão · DAX
Date · Ano · Mês · NomeMes · Semestre · Trimestre
dLoja
Dimensão · DAX
id_loja · nome_loja · cidade · estado · regiao
dCargo
Dimensão · DAX
cargo · nivel · departamento · faixa_cargo
funcionarios
Fato Central
id_funcionario · nome · genero · id_loja · cargo · departamento
contratos
Fato · Admissões
data_admissao · data_demissao · status · motivo_saida
salarios
Fato · Custos
competencia · salario_base · encargos · benefícios · custo_total
performance
Fato · Avaliações
ano · semestre · nota_tecnica · nota_final · conceito
recrutamento
Fato · Vagas
data_abertura · sla_dias · custo_processo · contratado
_Medidas
Tabela Auxiliar · 47 medidas
5 pastas: Visão Geral · Turnover · Performance · Recrutamento · HTML Pages
⚡ Amostra de Medidas DAX
47 medidas organizadas em pastas temáticas. Destaques de padrões utilizados para responsividade e dinamismo.
Período dinâmico via slicer
Captura o contexto de filtro ativo e formata o label do período para exibição no header de cada página HTML.
-- Responde ao slicer de Ano e Mês
Período Header =
VAR _ano = SELECTEDVALUE(dCalendario[Ano], 0)
VAR _mes = SELECTEDVALUE(dCalendario[NomeMes], "")
RETURN
IF(_mes <> "", _mes & "/" & _ano,
  IF(_ano = 0, "Jan/2022 – Dez/2024",
     "Ano: " & _ano))
Variação YoY do Custo
Calcula a variação percentual ano a ano do custo total da folha, respondendo ao slicer de Ano.
-- YoY dinâmico pelo slicer de Ano
Custo YoY % =
VAR _ano    = SELECTEDVALUE(dCalendario[Ano], 2024)
VAR _atual  = CALCULATE([Custo Total Folha],
                 dCalendario[Ano] = _ano)
VAR _ant    = CALCULATE([Custo Total Folha],
                 dCalendario[Ano] = _ano - 1)
RETURN
DIVIDE(_atual - _ant, _ant, 0) * 100
HTML dinâmico com barra proporcional
Cada barra de progresso no dashboard tem largura calculada por DAX e injetada como string CSS.
-- Barra proporcional ao máximo do grupo
VAR _maxDepto = CALCULATE([Total Ativos],
                   funcionarios[departamento]="Vendas")
VAR _wVendas  = FORMAT(
  DIVIDE(_hcVendas, _maxDepto) * 100, "0")

-- Resultado injetado no HTML:
"width:" & _wVendas & "%"
Funil de Recrutamento dinâmico
Cada etapa do funil é calculada com USERELATIONSHIP para ativar o relacionamento inativo de data no contexto filtrado.
-- Usa relacionamento inativo via USERELATIONSHIP
VAR _candTri =
  CALCULATE(
    SUM(recrutamento[candidatos_triagem]),
    USERELATIONSHIP(
      recrutamento[data_abertura],
      dCalendario[Date])
  )
VAR _pTri =
  FORMAT(DIVIDE(_candTri,_cand)*100,"0")
📑 Páginas do Dashboard
6 páginas com filtros interativos de Ano, Mês, Loja e Cargo. Todos os visuais e valores respondem dinamicamente às seleções.
🏠
Capa
Identidade do projeto e visão geral dos KPIs do período
01
Visão Geral
Headcount por depto e loja, turnover, custo e nota média
02
Turnover
Motivos de saída, retenção por tempo de casa e taxa de retenção
03
Performance
Notas por dimensão, distribuição de conceitos e evolução semestral
04
Recrutamento
Funil de candidatos, SLA por nível e custo por contratação
05
Custos & Folha
Evolução semestral, composição da folha e custo por loja e nível
💡 Principais Insights
Conclusões analíticas geradas a partir dos dados do período 2022–2024.
⚠️
Turnover voluntário acima do benchmark
Com 20% de turnover (benchmark: 15%), 52% dos desligamentos foram por pedido voluntário — sinal de necessidade de ações de engajamento e retenção.
📍
SP Centro concentra 44% dos desligamentos
A loja com maior headcount apresenta o maior índice de saídas. Investigação de liderança e clima organizacional local é prioritária.
🛡️
67% dos ativos com 3+ anos de casa
O núcleo sênior está estável. O risco de saída se concentra em colaboradores admitidos há menos de 1 ano, que representam 14 pessoas.
Performance consistentemente positiva
Nota média de 3,7 com crescimento de +0,3 em 3 anos. Comportamental é a dimensão mais forte (3,8); técnica e metas têm oportunidade de desenvolvimento.
⏱️
SLA 4x maior para cargos gerenciais
Enquanto posições Júnior são preenchidas em 21 dias, vagas de Gerente levam 89 dias. Pipeline de talentos antecipado é essencial para esse nível.
Encargos representam 68% do salário base
Para cada R$1,00 de salário, a empresa desembolsa R$1,68 no total. O custo médio por colaborador é R$7,1K/mês com todos os encargos e benefícios incluídos.
📂 Estrutura do Repositório
Arquivos disponíveis no GitHub. O arquivo .pbix não está incluído — acesse o dashboard pelo link público acima.
Arquivo Camada Descrição
sql/01_funcionarios.sqlSQLCadastro dos 125 colaboradores com cargo, loja e nível
sql/02_contratos.sqlSQLAdmissões, demissões e motivos de saída
sql/03_salarios.sqlSQLHistórico salarial com encargos e benefícios
sql/04_performance.sqlSQLAvaliações semestrais por dimensão (S1 e S2)
sql/05_recrutamento.sqlSQLPipeline de vagas 2022–2024 com funil e SLA
sql_para_csv.pyPythonConversor SQL → CSV via SQLite (execução local)
people_analytics_colab.ipynbPythonNotebook ETL completo — 4 fases no Google Colab
csvs/Data5 CSVs exportados prontos para o Colab e Power BI
README.mdDocsDocumentação completa com arquitetura e código