Projetos
Power BI · RH · Desenvolvimento

Dashboard RH — Como foi feito (explicado fácil)

RH precisa saber: "quantos somos hoje, quantos contratamos, quantos saíram, e a taxa de saída tá normal?". Pra responder bem, tem uma pegadinha — a base só tem eventos (admissão/demissão). Eu preciso reconstruir o "estado atual" mês a mês.

Nível Intermediário a avançado Stack Power BI · DAX · Power Query Tipo Dashboard BI
Visão geral

O que é isso, em uma frase?

É um painel no Power BI que entrega 4 indicadores fundamentais de RH: headcount, contratações, demissões e turnover anualizado, com estrutura hierárquica por área e cargo.

Por que importa? Porque RH bom é o que vê o problema antes dele estourar. Turnover subindo numa área específica? Reunião antes da próxima demissão, não depois.

Passo a passo

Reconstruir o "estado atual" mês a mês

1 · A pegadinha: a base tem 1 linha por evento — "Maria foi admitida em jan/22", "João foi demitido em ago/23". Mas pra saber o headcount em mar/23, preciso varrer todo histórico até essa data e ver quem estava ativo.

2 · A solução: tabela calculada de status mensal. Crio uma tabela DAX que enumera meses × colaboradores e marca ativo/inativo de cada um em cada mês.

fato_status_mensal =
    SUMMARIZECOLUMNS (
        dim_tempo[YearMonth],
        dim_colaborador[Id_Colaborador],
        "Status",
        IF (
            dim_colaborador[Data_Admissao] <= MAX ( dim_tempo[Date] )
                && ( ISBLANK ( dim_colaborador[Data_Demissao] )
                       || dim_colaborador[Data_Demissao] > MAX ( dim_tempo[Date] ) ),
            "Ativo",
            "Inativo"
        )
    )

Agora o headcount sai com 1 linha de DAX.

3 · Headcount, contratações, demissões.

Headcount Atual =
    CALCULATE (
        DISTINCTCOUNT ( fato_status_mensal[Id_Colaborador] ),
        fato_status_mensal[Status] = "Ativo"
    )

Contratacoes Mes =
    CALCULATE ( COUNTROWS ( fato_movimentacao ),
                fato_movimentacao[TipoEvento] = "Admissao" )

Demissoes Mes =
    CALCULATE ( COUNTROWS ( fato_movimentacao ),
                fato_movimentacao[TipoEvento] = "Demissao" )

4 · Turnover anualizado — o KPI mais pedido. Fórmula RH clássica: demissões nos últimos 12 meses / headcount médio do período.

Turnover Anualizado % =
VAR _demis_12m =
    CALCULATE (
        [Demissoes Mes],
        DATESINPERIOD (
            dim_tempo[Date],
            MAX ( dim_tempo[Date] ),
            -12, MONTH
        )
    )
VAR _hc_medio =
    AVERAGEX ( VALUES ( dim_tempo[YearMonth] ), [Headcount Atual] )
RETURN
    DIVIDE ( _demis_12m, _hc_medio )

Régua de leitura: <10% saudável, 10-20% atenção, >20% problema sério.

5 · Visual. Pirâmide por nível hierárquico, mapa de calor de turnover por área, evolução temporal das movimentações. Cada slicer filtra todos os visuais ao mesmo tempo.

Resultado

O painel final

O que dá pra levar daqui

Em uma linha: o que esse projeto ensina

Que "estado atual" a partir de "histórico de eventos" é um dos padrões mais comuns em BI. Saber resolver isso em DAX (com tabela calculada) é skill muito procurado.

Coisas técnicas que apareceram aqui: SUMMARIZECOLUMNS para tabela calculada, lógica condicional dentro de DAX, DATESINPERIOD, AVERAGEX para média sobre dimensão, fórmula RH de turnover anualizado.