Dashboard Preventivas

Solução em Power BI para acompanhar o ciclo de manutenção preventiva, conectar histórico, horímetro atual e próxima revisão e orientar a priorização operacional dos equipamentos.

Power BI Manutenção Preventiva Indicadores DAX Gestão Operacional

Visão completa do dashboard

Captura completa com a visão geral do dashboard de preventivas.

Captura de tela do Dashboard Preventivas completo

Apresentação do projeto

Objetivo

Centralizar as informações necessárias para programar e controlar manutenções preventivas por equipamento.

Desafio

Conectar cadastro, histórico de revisão, leitura atual de horímetro e previsão da próxima intervenção em uma leitura simples.

Solução

Um relatório operacional com filtros por local e máquina, medidas DAX centralizadas e destaque para as horas restantes.

Visão técnica

02páginas de análise
20visuais mapeados
10medidas DAX
16:9layout 1280 × 720

Fluxo de decisão

Selecionar o local e a máquina que serão analisados.
Consultar a última revisão, data, horímetro e ordem de serviço.
Conferir a leitura atual e a data de atualização do horímetro.
Identificar a próxima preventiva e as horas restantes até o marco.

Estrutura do relatório

Página Preventivas

Tela principal de programação e controle com filtros, identificação do equipamento e tabela operacional.

  • Filtros de local e máquina
  • Última revisão realizada
  • Leitura atual de horímetro
  • Próxima preventiva prevista

Página Custo

Visão complementar que reutiliza o contexto de local e máquina para aprofundar a análise financeira.

  • Filtros sincronizados
  • Tabela complementar
  • Análise por equipamento
  • Base para evolução de custos

Modelo de dados

A dimensão dMaquinas organiza os dados cadastrais e os filtros principais. A tabela _Medidas concentra a camada analítica.

CampoPapel no dashboard
dMaquinas.LocalLocalização do equipamento e filtro principal.
dMaquinas.MaquinaEntidade central de seleção e análise.
dMaquinas.PlacaIdentificação operacional do equipamento.
dMaquinas.ModeloCategoria e característica da máquina.

Medidas DAX documentadas

Cada medida apresenta seu papel no relatório. Toque em Ver fórmula para consultar o DAX completo.

Data_Horimetro_AtualRetorna a data mais recente de abastecimento registrada no contexto selecionado. Ver fórmula
Data_Horimetro_Atual =
CALCULATE(
    MAX(TQN[Dt. Abastec.])
)
Data_Ultima_PreventivaIdentifica a data de conclusão da preventiva mais recente. Ver fórmula
Data_Ultima_Preventiva =
CALCULATE(
    MAX(STJ[Real. Fim])
)
Horas_Faltam_ProximaCalcula quantas horas faltam para a próxima preventiva e alimenta o alerta por cores. Ver fórmula
Horas_Faltam_Proxima =
VAR _Proxima = [Horimetro_Proxima_Preventiva]
VAR _Atual = [Horimetro_Atual]

RETURN
IF(
    ISBLANK(_Proxima) || ISBLANK(_Atual),
    BLANK(),
    _Proxima - _Atual
)
Horimetro_AtualObtém a leitura mais recente do contador de horas da máquina. Ver fórmula
Horimetro_Atual =
CALCULATE(
    MAX(TQN[Contador 1]),
    LASTDATE(TQN[Dt. Abastec.])
)
Horimetro_Proxima_PreventivaSoma ao último horímetro o primeiro intervalo previsto no plano de manutenção. Ver fórmula
Horimetro_Proxima_Preventiva =
VAR _HorimetroUltima = [Horimetro_Ultima_Preventiva]

-- Pega o intervalo do 1º passo da máquina (ex.: 500 h)
VAR _Intervalo =
    CALCULATE(MIN(dPlanos[HorasAcumuladasNoCiclo]))

RETURN
    IF(
        ISBLANK(_HorimetroUltima),
        BLANK(),
        _HorimetroUltima + _Intervalo
    )
Horimetro_Ultima_PreventivaRecupera o maior horímetro registrado até a data da última preventiva da máquina. Ver fórmula
Horimetro_Ultima_Preventiva =
VAR _DataPreventiva = [Data_Ultima_Preventiva]
VAR _MaquinaAtual = SELECTEDVALUE(dMaquinas[Maquina])
VAR _MaiorHorimetroNaData =
    CALCULATE(
        MAX(TQN[Contador 1]),
        FILTER(
            ALL(TQN),
            TQN[Maquina] = _MaquinaAtual &&
            TQN[Dt. Abastec.] <= _DataPreventiva
        )
    )

RETURN
    _MaiorHorimetroNaData
Nome_Proxima_PreventivaDefine a próxima revisão conforme o histórico e a sequência do ciclo preventivo. Ver fórmula
Nome_Proxima_Preventiva =
VAR _MaquinaAtual = SELECTEDVALUE(dMaquinas[Maquina])
VAR _DataUltimaOS =
    CALCULATE(
        MAX(STJ[Real. Fim]),
        STJ[Maquina] = _MaquinaAtual
    )
VAR _UltimaSeqExecutada = [Ultima_Sequencia_Realizada]

RETURN
IF(
    ISBLANK(_DataUltimaOS),
    CALCULATE(
        MAX(dPlanos[NomePreventiva]),
        dPlanos[PassoCiclo] = 1
    ),
    IF(
        _UltimaSeqExecutada = 4,
        CALCULATE(
            MAX(dPlanos[NomePreventiva]),
            dPlanos[PassoCiclo] = 1
        ),
        VAR _DataUltimo4 =
            CALCULATE(
                MAX(STJ[Real. Fim]),
                FILTER(
                    ALL(STJ),
                    STJ[Maquina] = _MaquinaAtual &&
                    STJ[Sequência] = 4 &&
                    STJ[Real. Fim] <= _DataUltimaOS
                )
            )
        VAR _Qtd2Feitas =
            CALCULATE(
                COUNTROWS(STJ),
                FILTER(
                    ALL(STJ),
                    STJ[Maquina] = _MaquinaAtual &&
                    STJ[Sequência] = 2 &&
                    STJ[Real. Fim] > _DataUltimo4 &&
                    STJ[Real. Fim] <= _DataUltimaOS
                )
            )
        VAR _ProximoPasso =
            IF(_Qtd2Feitas >= 3, 4, _Qtd2Feitas + 1)
        RETURN
            CALCULATE(
                MAX(dPlanos[NomePreventiva]),
                dPlanos[PassoCiclo] = _ProximoPasso,
                ALL(dPlanos)
            )
    )
)
Nome_Ultima_PreventivaTraduz a última sequência executada para o nome da preventiva correspondente. Ver fórmula
Nome_Ultima_Preventiva =
VAR _UltimaSeq = [Ultima_Sequencia_Realizada]

RETURN
IF(
    ISBLANK(_UltimaSeq),
    "Sem Histórico",
    CALCULATE(
        MAX(dPlanos[NomePreventiva]),
        dPlanos[PassoCiclo] = _UltimaSeq,
        ALL(dPlanos)
    )
)
OS_Ultima_PreventivaRetorna a ordem de serviço vinculada à última preventiva. Ver fórmula
OS_Ultima_Preventiva =
VAR _DataUltimaOS = [Data_Ultima_Preventiva]

RETURN
CALCULATE(
    MAX(STJ[Ordem Serv.]),
    STJ[Real. Fim] = _DataUltimaOS
)
Ultima_Sequencia_RealizadaIdentifica a sequência de manutenção executada na última ordem de serviço. Ver fórmula
Ultima_Sequencia_Realizada =
VAR _DataUltimaOS = [Data_Ultima_Preventiva]

RETURN
CALCULATE(
    MAX(STJ[Sequência]),
    STJ[Real. Fim] = _DataUltimaOS
)

Alerta visual de vencimento

O valor de Horas_Faltam_Proxima recebe formatação condicional no Power BI. A cor permite reconhecer a prioridade sem precisar interpretar cada número individualmente.

Verde · Está okO equipamento ainda está dentro do prazo planejado.
Amarelo · AtençãoO vencimento está se aproximando e a preventiva deve ser programada.
Vermelho · VencidaO horímetro previsto já foi atingido ou ultrapassado.

Bases e conexões de dados

O dashboard reúne informações operacionais de diferentes sistemas. No modelo do Power BI, a relação de equipamentos funciona como eixo central para conectar manutenção, abastecimentos e mão de obra.

Manutenções · TOTVS

Fornece o histórico das ordens de serviço, datas de realização, sequências executadas e preventivas concluídas por máquina.

Abastecimentos · CTA Smart

Disponibiliza as datas de abastecimento e as leituras do contador, usadas para identificar o horímetro atual e recuperar o horímetro da última preventiva.

Mão de obra · TOTVS

Complementa a análise com os registros de mão de obra associados aos serviços de manutenção e às respectivas ordens de serviço.

Relação de equipamentos

Concentra o cadastro das máquinas — local, identificação, placa e modelo — e sustenta os filtros aplicados em todo o relatório.