Modelo de portfólio · dados fictícios · João Victor Soares

Painel de RH da filial no Power BI

Guia de montagem de um painel que transforma as rotinas do RH de uma filial — recrutamento, admissão, ponto e banco de horas, conferência para a folha, férias, afastamentos, desligamentos e atendimento — em indicadores para decisão.

Base
Base_RH_Filial_Ficticia.xlsx — 7 tabelas, competências out/2025 a set/2026, retrato em 22/10/2026
Medidas
Medidas_DAX.txt — calendário, tabelas de apoio e medidas comentadas
Tema
Tema_RH_Portfolio.json — cores, fontes e grades do relatório
Ferramenta
Power BI Desktop (gratuito) para montar; serviço do Power BI para publicar e agendar

1O que o painel responde

Cada página responde perguntas que o RH de uma filial ouve toda semana — da gerência, do financeiro e dos próprios colaboradores.

Quantas pessoas temos?

Headcount no fim do período, por setor e gestor, evolução mês a mês e tempo médio de casa.

Página 1

Quem está saindo e por quê?

Desligamentos por tipo (pedido, sem justa causa, término de experiência, acordo, justa causa), turnover e turnover voluntário.

Página 1

Onde está o absenteísmo?

Absenteísmo % = (faltas + atestados + atrasos) ÷ horas previstas, por setor, gestor e mês.

Página 2

Quanto custa a hora extra?

Horas extras 50% e 100%, peso sobre as horas previstas e custo estimado (salário ÷ 220 × 1,5 ou × 2, sem encargos).

Página 2

Quais férias vencem?

Férias vencidas, críticas (menos de 60 dias para o limite) e a programar, com lista nominal e dias até o limite concessivo.

Página 3

Quem está afastado?

Afastados hoje, dias pagos pela empresa × dias INSS, motivo do afastamento e estabilidade acidentária.

Página 3

Quanto demoramos para fechar uma vaga?

Tempo médio de fechamento, funil de candidatos, taxa de conversão e fonte de cada contratação.

Página 4

O RH atende no prazo?

Chamados por categoria, % dentro do SLA e tempo médio de resolução em dias úteis.

Página 4

2Passo a passo

  1. Importar o Excel

    Página Inicial › Obter dados › Pasta de trabalho do Excel e selecione Base_RH_Filial_Ficticia.xlsx. No Navegador, marque as 7 tabelas:

    • dColaboradores
    • fPonto
    • fBancoHoras
    • fFerias
    • fAfastamentos
    • fVagas
    • fChamados

    Cada aba tem uma Tabela do Excel com o mesmo nome. Marque o item com ícone de tabela (não o de planilha) e deixe a aba LEIA-ME de fora. Em seguida, clique em Transformar dados.

  2. Conferir os tipos de dados (Power Query)

    ColunasTipo
    Matricula, MatriculaContratadoNúmero inteiro
    Todas as datas: DataAdmissao, DataDesligamento, UltimoASO, Competencia, VencimentoSaldo, InicioAquisitivo, FimAquisitivo, LimiteConcessivo, InicioGozo, DataInicio, DataFim, FimEstabilidade, DataAbertura, DataFechamento, DataResolucaoData (não Data/Hora — senão as relações com o calendário falham)
    SalarioNúmero decimal fixo (moeda)
    Horas: HorasPrevistas, HorasFaltas, HorasAtestados, HorasAtrasos, HorasExtras50, HorasExtras100, HorasAdicionalNoturno, SaldoAnterior, Creditos, Debitos, SaldoFinalNúmero decimal
    Contagens: DiasUteis, Dias, DiasEmpresa, DiasINSS, DiasGozo, Inscritos a Contratados, SLADiasUteis, DiasUteisResolucaoNúmero inteiro
    Demais colunas (nomes, setor, situação, motivo…)Texto

    Clique em Fechar e aplicar. Em Arquivo › Opções e configurações › Opções › Arquivo atual › Carregamento de dados, desmarque Data/hora automática: o modelo usa a sua própria tabela de calendário.

  3. Criar a dCalendario e as tabelas de apoio

    Modelagem › Nova tabela e cole o bloco dCalendario do arquivo de medidas:

    dCalendario =
    VAR Datas =
        SELECTCOLUMNS(
            CALENDAR(DATE(2025, 1, 1), DATE(2026, 12, 31)),
            "Data", [Date]
        )
    VAR ComColunas =
        ADDCOLUMNS(
            Datas,
            "Ano", YEAR([Data]),
            "Mês nº", MONTH([Data]),
            "Mês", SWITCH(
                MONTH([Data]),
                1, "jan", 2, "fev", 3, "mar", 4, "abr", 5, "mai", 6, "jun",
                7, "jul", 8, "ago", 9, "set", 10, "out", 11, "nov", 12, "dez"
            ),
            "AnoMês", YEAR([Data]) * 100 + MONTH([Data]),
            "Competência", DATE(YEAR([Data]), MONTH([Data]), 1)
        )
    RETURN
        ADDCOLUMNS(
            ComColunas,
            "Mês/Ano", [Mês] & "/" & RIGHT(FORMAT([Ano], "0"), 2)    // ex.: "out/25"
        )
    • Ferramentas de tabela › Marcar como tabela de datas › coluna Data.
    • Classificar por coluna: Mês/Ano por AnoMês; Mês por Mês nº.
    • Repita Nova tabela com dSetor (setores de colaboradores e vagas, para uma segmentação única) e dEtapaFunil (etapas do funil; classifique Etapa por Ordem).
  4. Criar os relacionamentos

    Exibição de modelo › Gerenciar relações. Apague relações criadas automaticamente que não estejam na lista. Todas são de um para muitos, com filtro em direção única (do lado 1 para o lado muitos). Para as inativas, desmarque Tornar esta relação ativa.

    De (lado 1)Para (lado muitos)CardinalidadeDireção do filtroAtiva
    dColaboradores[Matricula]fPonto[Matricula]1 : *Única →Sim
    dColaboradores[Matricula]fBancoHoras[Matricula]1 : *Única →Sim
    dColaboradores[Matricula]fFerias[Matricula]1 : *Única →Sim
    dColaboradores[Matricula]fAfastamentos[Matricula]1 : *Única →Sim
    dSetor[Setor]dColaboradores[Setor]1 : *Única →Sim
    dSetor[Setor]fVagas[Setor]1 : *Única →Sim
    dCalendario[Data]fPonto[Competencia]1 : *Única →Sim
    dCalendario[Data]fBancoHoras[Competencia]1 : *Única →Sim
    dCalendario[Data]fAfastamentos[DataInicio]1 : *Única →Sim
    dCalendario[Data]fVagas[DataAbertura]1 : *Única →Sim
    dCalendario[Data]fVagas[DataFechamento]1 : *Única →Não (inativa)
    dCalendario[Data]fChamados[DataAbertura]1 : *Única →Sim
    dCalendario[Data]fChamados[DataResolucao]1 : *Única →Não (inativa)
    dCalendario[Data]fFerias[LimiteConcessivo]1 : *Única →Não (inativa)
    Por que dColaboradores não se liga ao calendário? Se ligasse, haveria dois caminhos de filtro até fPonto (direto e via colaboradores). As medidas de quadro leem o período do calendário e comparam com DataAdmissao e DataDesligamento. As relações inativas são ligadas só dentro das medidas que precisam delas, com USERELATIONSHIP; a de férias é inativa porque os indicadores de férias são um retrato na data de referência.
  5. Aplicar o tema

    Exibição › Temas › abra a galeria pela seta › Procurar temas › Tema_RH_Portfolio.json.

    • #2a78d6
    • #eb6834
    • #1baf7a
    • #eda100
    • #e87ba4
    • #008300
    • #6250d6
    • #e34948
    • bom #1E8A5A
    • atenção #C98A0B
    • crítico #D9452B
    • destaque de tabela #3346B0

    O tema define Segoe UI, títulos em 12 pt seminegrito na cor #18212B, linhas de grade claras (#E3E7EC), números dos cartões em #18212B e fundo de página cinza-claro com visuais brancos.

  6. Colar as medidas

    Página Inicial › Inserir dados, nomeie a tabela como _Medidas e clique em Carregar. Com ela selecionada, use Modelagem › Nova medida e cole um bloco do Medidas_DAX.txt por vez (do Nome = até o fim da expressão; os comentários podem ir junto). Ajuste o formato em Ferramentas de medida conforme indicado em cada bloco e, ao final, exclua a coluna Coluna1 — a tabela passa a ser só de medidas.

    TemaMedidas
    QuadroHeadcount, Headcount Médio, Admissões, Desligamentos, Desligamentos Voluntários, Turnover %, Turnover Voluntário %, Tempo Médio de Casa (anos), Prazo para Pagamento da Rescisão
    PontoHoras Previstas, Horas de Faltas / Atestados / Atrasos, Horas de Ausência, Absenteísmo %, Horas Extras 50% / 100% / Totais, HE % sobre Horas Previstas, Custo Estimado de HE (sem encargos)
    Banco de horasSaldo Banco de Horas (último mês do contexto), Saldo a Vencer em 30 dias
    FériasFérias Vencidas, Férias Críticas, Férias a Programar, % Férias em Dia, Dias até o Limite Concessivo, Férias com Limite no Período
    AfastamentosAfastados Hoje, Dias de Afastamento, Dias pagos pela Empresa, Dias INSS, Com Estabilidade Acidentária
    RecrutamentoVagas Abertas, Vagas Fechadas, Tempo Médio de Fechamento (dias), Taxa de Conversão, Vagas por Fonte, % Vagas por Fonte, Candidatos na Etapa
    AtendimentoChamados, % Dentro do SLA, Tempo Médio de Resolução (dias úteis), Chamados Resolvidos
  7. Fixar o período da base

    No painel Filtros › Filtros em todas as páginas, arraste dCalendario[Competência] e use a filtragem avançada: é posterior ou igual a 01/10/2025 e é anterior ou igual a 01/09/2026. A base não traz quem saiu antes de outubro de 2025; sem esse filtro, os meses anteriores mostrariam um quadro incompleto.

    Cartões de “retrato” (Afastados Hoje, férias, saldo a vencer) olham a data de referência — 22/10/2026 na base fictícia, TODAY() em produção. Os demais seguem o período filtrado.

3Layout proposto: 4 páginas

Tela 16:9. A ordem de leitura é a mesma em todas as páginas: segmentações no topo, cartões com os números-chave, tendência no meio e listas de ação embaixo — quem abre o painel vê primeiro quanto, depois desde quando e por fim quem.

Página 1 · Visão geral da filial — quadro, movimentação e alertas

Esquema ilustrativo. No celular, os blocos aparecem empilhados.

VisualCamposMedida(s)
Segmentação de dados (botões)dSetor[Setor]—
Segmentação de dados (lista suspensa)dCalendario[Mês/Ano] ou dCalendario[Competência] no estilo “Entre”—
Cartão—Headcount
CartãoDica de ferramenta: Turnover Voluntário %Turnover %
Cartão—Absenteísmo %
Cartão—Vagas Abertas
Gráfico de linhasEixo X: dCalendario[Mês/Ano]Headcount
Gráfico de colunas agrupadasEixo X: dCalendario[Mês/Ano]Admissões, Desligamentos (mesma unidade: pessoas)
Gráfico de barras agrupadasEixo Y: dColaboradores[TipoDesligamento]Desligamentos
TabeladColaboradores[Nome], [Setor], [TipoDesligamento], [DataDesligamento]; filtro do visual: Desligamentos é 1Prazo para Pagamento da Rescisão

Página 2 · Ponto e banco de horas — conferência antes da folha

VisualCamposMedida(s)
SegmentaçõesdSetor[Setor], dCalendario[Mês/Ano]—
Cartões (6)—Absenteísmo %, Horas Extras Totais, HE % sobre Horas Previstas, Custo Estimado de HE (sem encargos), Saldo Banco de Horas, Saldo a Vencer em 30 dias
Gráfico de colunas empilhadasEixo X: dCalendario[Mês/Ano]Horas de Faltas, Horas de Atestados, Horas de Atrasos
Gráfico de barras agrupadasEixo Y: dSetor[Setor]; cor das barras por Cor AbsenteísmoAbsenteísmo %
Gráfico de colunas empilhadasEixo X: dCalendario[Mês/Ano]Horas Extras 50%, Horas Extras 100%
MatrizLinhas: dColaboradores[Gestor] › dColaboradores[Nome]; barras de dados no custoHoras Extras Totais, Custo Estimado de HE (sem encargos), Saldo Banco de Horas

O custo de HE é uma estimativa (salário ÷ 220 × 1,5 para HE 50% e × 2 para HE 100%), sem encargos e reflexos — deixe isso escrito no título do cartão.

Página 3 · Férias e afastamentos — prazos legais e quem está fora

VisualCamposMedida(s)
SegmentaçõesdSetor[Setor], dColaboradores[Gestor]—
Cartões (6)—Férias Vencidas, Férias Críticas, Férias a Programar, % Férias em Dia, Afastados Hoje, Dias INSS
Tabela de fériasdColaboradores[Nome], [Gestor], fFerias[FimAquisitivo], [LimiteConcessivo], [Situacao]; filtro do visual: Situacao = Vencida, Crítica (< 60 dias), A programar; ordenar por dias até o limite (crescente)Dias até o Limite Concessivo
Gráfico de colunas empilhadasEixo X: dCalendario[Mês/Ano]Dias pagos pela Empresa, Dias INSS
Tabela de afastamentosdColaboradores[Nome], fAfastamentos[Motivo], [DataInicio], [DataFim], [Beneficio], [ExameRetorno]; filtro do visual: Afastados Hoje é 1Afastados Hoje
Gráfico de barras agrupadasEixo Y: fAfastamentos[Motivo]Dias de Afastamento

Formatação condicional da tabela de férias

  • Coluna Situacao › Formatação condicional › Cor de fundo › Formatar estilo: Valor do campo › medida Cor Situação Férias (vencida em vermelho #D9452B, crítica em âmbar #C98A0B).
  • Coluna Dias até o Limite Concessivo › Cor da fonte por regras: menor que 0 em vermelho; de 0 a 59 em âmbar.
  • O texto da situação continua visível: a cor reforça, mas não substitui a informação.

Opcional: um gráfico de colunas com Férias com Limite no Período por Mês/Ano vira a agenda de programação dos próximos meses (para enxergar limites de 2027 em diante, amplie a data final da dCalendario).

Página 4 · Recrutamento e atendimento — velocidade e prazo do RH

VisualCamposMedida(s)
SegmentaçõesdSetor[Setor] (filtra vagas; chamados não têm setor), dCalendario[Mês/Ano]—
Cartões (6)—Vagas Abertas, Tempo Médio de Fechamento (dias), Taxa de Conversão, Chamados, % Dentro do SLA, Tempo Médio de Resolução (dias úteis)
FunilCategoria: dEtapaFunil[Etapa]Candidatos na Etapa
Gráfico de barras agrupadasEixo Y: dSetor[Setor]Tempo Médio de Fechamento (dias)
Gráfico de barras agrupadasEixo Y: fVagas[Fonte]; dica de ferramenta: % Vagas por FonteVagas por Fonte
Gráfico de barras agrupadasEixo Y: fChamados[Categoria]; dica de ferramenta: % Dentro do SLAChamados
Gráfico de linhasEixo X: dCalendario[Mês/Ano]; Análise › Linha constante em 90% (meta ilustrativa)% Dentro do SLA

4Boas práticas

Um eixo de valores por gráfico

Nada de eixo duplo. Pessoas e percentuais não dividem o mesmo gráfico: headcount fica em um visual, turnover em outro (ou na dica de ferramenta). Quando duas medidas aparecem juntas, como admissões × desligamentos ou dias empresa × dias INSS, elas têm a mesma unidade. Uma meta entra como linha constante, não como segunda escala.

Formatação condicional por status

As cores seguem o tema: bom #1E8A5A, atenção #C98A0B e crítico #D9452B. As medidas Cor Situação Férias, Cor % SLA e Cor Absenteísmo devolvem o código da cor e entram em Formatação condicional › Formatar estilo: Valor do campo. A regra fica em um lugar só e vale para todos os visuais. Os limites de absenteísmo e SLA do arquivo são ilustrativos: ajuste-os às metas da empresa.

LGPD: dados pessoais e de saúde

  • Afastamento, atestado e ASO envolvem dados de saúde, que a LGPD trata como dados pessoais sensíveis (art. 5º, II). O acesso fica restrito a quem precisa deles para trabalhar.
  • CID nunca entra no modelo nem no painel. A base guarda só o motivo genérico (doença, acidente de trabalho, licença-maternidade) e o tipo de benefício.
  • Nome aparece só onde há uma ação a tomar (férias em risco, afastamentos em curso, desligamentos); o restante é agregado.
  • Restrinja a exportação de dados nas configurações do relatório e publique em um workspace com acesso controlado.

Segurança em nível de linha (RLS): cada gestor vê a própria equipe

1. Crie uma tabela de mapeamento dAcessoGestor, sem relação com as demais e oculta no relatório:

EmailGestorSetor
ricardo.m@example.comRicardo M.Comercial
patricia.l@example.comPatrícia L.Trade Marketing
anderson.k@example.comAnderson K.Logística
fernanda.r@example.comFernanda R.Administrativo

2. Modelagem › Gerenciar funções › Nova função “Gestor”, com estes filtros:

// Tabela dColaboradores — o filtro desce para fPonto, fBancoHoras,
// fFerias e fAfastamentos pela Matricula
[Gestor] IN
    CALCULATETABLE(
        VALUES(dAcessoGestor[Gestor]),
        dAcessoGestor[Email] = USERPRINCIPALNAME()
    )

// Tabela fVagas — vagas do setor do gestor
[Setor] IN
    CALCULATETABLE(
        VALUES(dAcessoGestor[Setor]),
        dAcessoGestor[Email] = USERPRINCIPALNAME()
    )

// Tabela dAcessoGestor — cada um enxerga só a própria linha
[Email] = USERPRINCIPALNAME()

3. Crie também a função “RH”, sem filtros. Teste em Modelagem › Exibir como e, depois de publicar, associe os e-mails às funções na segurança do modelo semântico, no serviço do Power BI.

Atualização agendada

  • Publique em Página Inicial › Publicar e configure em Modelo semântico › Configurações › Atualização agendada.
  • Planilha no OneDrive ou SharePoint da empresa: atualiza sem gateway. Planilha em pasta local ou de rede: precisa de gateway de dados local.
  • Frequência sugerida: diária, depois da importação do ponto, e uma atualização extra no dia de conferência da folha. A licença Pro permite até 8 atualizações por dia.
  • Em produção, troque a medida Data de Referência por TODAY(). No serviço, TODAY() segue o horário UTC; o arquivo de medidas traz a versão ajustada para Brasília.

Organização do modelo

  • Medidas na tabela _Medidas, separadas por pastas de exibição (Quadro, Ponto, Banco de horas, Férias, Afastamentos, Recrutamento, Atendimento, Formatação).
  • Oculte colunas técnicas (Matricula nas tabelas fato, AnoMês, Mês nº, Ordem) para que o painel de campos mostre só o que se usa nos visuais.
  • Use a descrição de cada medida (Exibição de modelo › Propriedades) para registrar a regra de cálculo: quem pega o painel depois entende de onde vem o número.

5Conferência rápida

Antes de mostrar o painel, três checagens que não dependem de valores fixos:

  • Headcount de hoje = cadastro. Com o filtro em out/2026 (mês da data de referência), o Headcount deve ser igual ao número de linhas com Status = "Ativo" em dColaboradores.
  • Fechamento do quadro. Headcount em 30/09/2026 = headcount em 30/09/2025 + Admissões − Desligamentos de out/2025 a set/2026.
  • Vagas. Vagas Abertas em out/2026 deve ser igual ao número de vagas com Status diferente de “Fechada”.

6Como isso ajuda a filial