Como Fazer um Dashboard de PCM no Power BI

Leonardo Karpinski

Leonardo Karpinski

Mestre do Power BI, criador do Curso Express de Power BI e Curso Completo de Power BI. Formou mais de 16 mil alunos nos últimos anos e participou de projetos em grandes empresas nacionais e multinacionais.

Fala Incomparável,

No artigo de hoje vamos criar do zero um dashboard de PCM utilizando o Power BI para calcular os principais KPIs da área como Quantidade de Falhas, Quantidade de Equipamentos que falharam, MTBF, MTTR, Downtime e Disponibilidade.

Dá uma olhada abaixo e veja como ficou incrível o nosso dashboard de PCM.

Figura 01 – Dashboard PCM

Dica do Mestre: Como descobrir e entender os principais KPIs de uma área específica?

1. Procure no Google “KPI da área de Manutenção”, o resultado serão diversas páginas mostrando quais são os KPIs e como calcular.
2. Converse com um Especialista, ninguém melhor para te explicar sobre determinado assunto, como PCM por exemplo, do que uma pessoa que trabalhou ou trabalha todos os dias com isso.

Cabe destacar que, existem particularidades que são inerentes ao negócio e para tratar disso basta alinhar com o seu cliente, beleza?!

Então, agora que você já sabe como encontrar os principais KPIs de PCM, bora colocar a mão na massa.

Figura 02 – Colocando a Mão na Massa

Base de Dados PCM

A base de dados abordada nesse artigo é focada na identificação das falhas, onde cada linha da tabela fato corresponde a uma falha.

Figura 03 – Base de Dados

Além disso, essa base de dados contém 03 tabelas dimensão: dEquipamentos, dOcorrencia, dOperadores.

Dica do Mestre:
Para entender um pouco mais sobre modelagem de dados no Power BI, e descobrir o que é tabela fato e o que é tabela dimensão, assista à live gratuita Como EVOLUIR do Excel para o Power BI onde explico tudo isso e muito mais.

Agora, clique aqui e faça o donwload da base de dados.

Tratamento de Dados no Power BI

Após fazer o download da base, é hora de carregar e tratar esses arquivos no Power BI, para isso execute os passos abaixo:

  1. Clique em “Obter Dados”
  2. Escolha a opção “Pasta de Trabalho do Excel”
  3. Na janela aberta, selecione a base de dados que você fez o download.
Figura 04 – Obter Dados

Em seguida:

  1. Selecione as tabelas: fPCM, dEquipamentos, dOcorrencia, dOperadores
  2. Clique em “Transformar Dados”
Figura 05 – Selecione as Tabelas

Agora, na tabela fPCM faça as seguintes transformações:

  1. Clique em “Adicionar Coluna”
  2. Em seguida, clique em “Coluna Personalizada”
  3. Nomeie como “Horas_Indisponiveis”
  4. Subtraia “Data Encerramento” – “Data Criação”
Figura 06 – Horas Indisponiveis

Os próximos passos são:

  1. Selecione a coluna “Horas_Indisponiveis”
  2. Agora, clique na guia “Transformar”
  3. Clique em “Duração”
  4. Escolha a opção “Total de Horas”
Figura 07 – Total de Horas

Em seguida, com a coluna “Data Criação” selecionada execute os seguintes passos:

  1. Clique na guia “Transformar”
  2. Em seguida, clique em “Dividir Coluna” > “Por Delimitador”
  3. Clique em “Personalizado” e escolha a opção “Espaço”
  4. Clique em “OK”
Figura 08 – Separar Data e Hora

Agora, basta repetir os 4 últimos steps para a coluna “Data Encerramento”.

Veja abaixo como ficou a tabela após as últimas transformações, note que as colunas foram renomeadas.

Figura 09 – Transformações fPCM

Por último, crie uma tabela dimensão Calendário executando os seguintes passos:

  1. Clique em “Nova Fonte” > Escolha a opção “Consulta Nula”
  2. Clique em “Editor Avançado”
  3. Cole o script M disponibilizado logo abaixo da figura 10
  4. Clique em “Concluído”
  5. Renomeie a consulta como “dCalendario”
  6. Clique em “Fechar e Aplicar”
Figura 10 – Importando Tabela Calendário
let
  DataMin = List.Min(fPCM[Data Criação]),
  DataMax = List.Max(fPCM[Data Criação]),
  AnoMin = Date.Year(DataMin),
  AnoMax = Date.Year(DataMax),
  DataInicial = #date(AnoMin, 1, 1),
  DataFinal = #date(AnoMax, 12, 31),
  Duracao = Duration.Days(DataFinal – DataInicial) + 1,
  Source = List.Dates(DataInicial, Duracao, #duration(1, 0, 0, 0)),
  #"Converted to Table" = Table.FromList(
    Source,
    Splitter.SplitByNothing(),
    null,
    null,
    ExtraValues.Error
  )
,
  #"Changed Type" = Table.TransformColumnTypes(#"Converted to Table", {{"Column1", type date}}),
  #"Renamed Columns" = Table.RenameColumns(#"Changed Type", {{"Column1", "Data"}}),
  #"Inserted Year" = Table.AddColumn(#"Renamed Columns", "Ano", each Date.Year([Data]), Int64.Type),
  #"Inserted Month" = Table.AddColumn(#"Inserted Year", "Mes", each Date.Month([Data]), Int64.Type),
  #"Inserted Month Name" = Table.AddColumn(
    #"Inserted Month",
    "Nome do Mes",
    each Date.MonthName([Data]),
    type text
  )
,
  #"Inserted Quarter" = Table.AddColumn(
    #"Inserted Month Name",
    "Trimestre",
    each Date.QuarterOfYear([Data]),
    Int64.Type
  )
,
  #"Inserted Day" = Table.AddColumn(#"Inserted Quarter", "Dia", each Date.Day([Data]), Int64.Type),
  #"Inserted Day Name" = Table.AddColumn(
    #"Inserted Day",
    "Nome do dia",
    each Date.DayOfWeekName([Data]),
    type text
  )
,
  #"Inserted Day of Week" = Table.AddColumn(
    #"Inserted Day Name",
    "Dia da semana",
    each Date.DayOfWeek([Data]),
    Int64.Type
  )
,
  #"Coluna Personalizada Adicionada" = Table.AddColumn(
    #"Inserted Day of Week",
    "Mes-Ano",
    each Text.Combine({Date.ToText([Data], "MMM"), "-", Date.ToText([Data], "yyyy")}),
    type text
  )
,
  #"Personalização Adicionada" = Table.AddColumn(
    #"Coluna Personalizada Adicionada",
    "Class Mes-Ano",
    each 100 * [Ano] + [Mes]
  )
,
  #"Tipo Alterado" = Table.TransformColumnTypes(
    #"Personalização Adicionada",
    {{"Class Mes-Ano", Int64.Type}}
  )
,
  #"Colocar Cada Palavra Em Maiúscula" = Table.TransformColumns(
    #"Tipo Alterado",
    {{"Nome do Mes", Text.Proper, type text}, {"Mes-Ano", Text.Proper, type text}}
  )
,
  #"Primeiros caracteres extraídos" = Table.TransformColumns(
    #"Colocar Cada Palavra Em Maiúscula",
    {{"Nome do Mes", each Text.Start(_, 3), type text}}
  )

in

  #"Primeiros caracteres extraídos"

Dica do Mestre: Se você está começando agora e precisa aprender um pouco mais sobre Power BI antes de construir esse dashboard de PCM, acesse agora meu CURSO GRATUITO DE POWER BI.

Modelagem de PCM no Power BI

Agora, vamos para a parte de modelagem, em outras palavras relacionamento entre tabelas no Power BI.

Para fazer isso é muito simples, basta identificar os campos que são semelhantes entre as tabelas fato e dimensão, e arrastar conforme mostrado abaixo.

Figura 11 – Relacionando as Tabelas

Em seguida, repita o processo com as demais tabelas. As colunas que devem ser relacionadas estão na figura 12.

Figura 12 – Colunas Relacionadas

Importando Background no Power BI

Para importar um background no Power BI, execute os passos abaixo:

  1. Clique em “Formatar sua página do relatório”
  2. Em seguida, clique em “Tela de Fundo”
  3. Clique em “Procurar”
  4. Selecione o arquivo
  5. Em “Ajuste da Imagem”, escolha a opção “Ajuste”
  6. Em “Transparência”, coloque “0%”
Figura 13 – Importando Background

E se você quiser aprender como criar um background personalizado para o Power BI, clique aqui e descubra o poder do storytelling para criar dashboards com design premium.

Calculando KPIs de PCM no Power BI

Enfim, vamos aos cálculos. Todas as métricas e KPIs que foram utilizados neste dashboard de PCM com Power BI estão listadas logo abaixo, é só você clicar em “Nova Medida” e em seguida copiar e colar aí no seu arquivo.

Qtd Paradas =
COUNTROWS ( fPCM )

Qtd Paradas em Aberto =
VAR vDataFinal =
    MAX ( dCalendario[Data] )
VAR vFalhasAbertas =
    FILTER (
        ALL ( fPCM ),
        fPCM[Data Criação] <= vDataFinal
            && (
                fPCM[Data Encerramento] > vDataFinal
                    || ISBLANK ( fPCM[Data Encerramento] )
            )
    )
RETURN
    COUNTROWS ( vFalhasAbertas ) + 0

Qtd Operadores =
DISTINCTCOUNT ( fPCM[ID Operador] )

Qtd Equipamentos =
DISTINCTCOUNT ( fPCM[ID Equipamento] )

Horas Paradas =
SUM ( fPCM[Horas Indisponíveis] )

Horas Disponíveis =
VAR vDataInicial =
    MIN ( dCalendario[Data] )
VAR vDataFinal =
    MAX ( dCalendario[Data] )
VAR vQtd_Dias =
    DATEDIFF ( vDataInicialvDataFinalDAY ) + 1
RETURN
    vQtd_Dias * 24 * [Qtd Equipamentos]

Downtime =
DIVIDE ( [Horas Paradas], [Horas Disponíveis] )

MTTR =
DIVIDE ( [Horas Paradas], [Qtd Paradas] )

MTBF =
DIVIDE ( [Horas Disponíveis] – [Horas paradas], [Qtd Paradas] )

Disponibilidade =
DIVIDE ( [MTBF], [MTBF] + [MTTR] )

Storytelling com Dados no Power BI

Finalmente, chegamos na parte de storytelling, ou seja, construção de uma narrativa com os dados que foram tratados e modelados.

Para construir um storytelling semelhante ao utilizado neste exemplo, siga os passos abaixo:

  1. Cards: utilize o visual “Cartão de linha múltipla” e importe do marketplace o visual “Sparkline by OKVIZ” para fazer o minigráfico
  2. Para criar esse visual foram utilizados 04 gráficos de área sobrepostos, onde cada um é ativado por um botão. Detalharei um pouco mais sobre esse item na sequência
  3. Nesse campo, foi utilizado um gráfico de rosca com as métricas “Downtime” e “Disponibilidade”
  4. Nesse campo, foi utilizado um gráfico de barras clusterizado, onde no campo “Eixo” contém a coluna “Equipamento” da tabela “dEquipamento” e no campo valores contém a métrica “Horas Paradas”
  5. Este item é um visual de matriz, onde o campo “Linhas” contém a coluna “Ocorrencia” da tabela “dOcorrencia”, o campo “Colunas” contém a coluna “nome do mês” da tabela “dCalendario”, e o campo “Valores” contém a métrica “Qtd Paradas”
  6. Por último, utilize o visual “Segmentação de Dados” para criar os filtros suspensos utilizando campos das tabelas dimensão
Figura 14 – Visuais Utilizados

Entretanto, você deve estar se perguntado como faz para trocar os visuais utilizando botões? Todavia, existem muitas maneiras de fazer isso, mas nesse exemplo vamos utilizar botões acionados por indicadores.

Execute os passos abaixo:

  1. Duplique o gráfico de área e coloque exatamente em cima do gráfico já existente
  2. Troque a métrica do segundo gráfico por “Qtd Equipamentos”
  3. Não esqueça do storytelling hein, veja que a cor que representa a quantidade de equipamentos é alaranjado
  4. Clique em “Botões” conforme mostrado na figura 16
  5. Escolha a opção “Em Branco”
  6. Repita os passos 4 e 5 para inserir mais um botão
Figura 15 – Sobrepondo Visuais

Figura 16 – Inserir Botão em Branco

Agora, vamos configurar os indicadores de cada botão.

  1. Veja abaixo que temos 02 botões, 01 que irá mostrar a quantidade de falhas/paradas e outro que irá mostrar a quantidade de equipamentos.
  2. Clique na guia “Exibição”
  3. Clique em “Indicadores” e “Seleção” para ativar seus devidos painéis
  4. No painel de seleção, clique no olhinho para o ocultar o gráfico de quantidade de equipamentos (o gráfico alaranjado)
  5. No painel de indicadores, clique em “Adicionar”
  6. Dê um nome para o indicador, nesse caso coloquei o nome de “PARADAS” mas você pode colocar outro nome se preferir
  7. Repita os passos 4, 5 e 6 para criar um indicador com o nome de “EQUIPAMENTOS”, e lembre-se que agora você tem que ocultar o gráfico azul e mostrar o gráfico alaranjado, OK?!

Em seguida, ajuste um detalhe muito importante. Clique nos 3 pontinhos ao lado de cada um dos indicadores e desmarque a opção “Dados”, isso irá impedir que o indicador altere os filtros ao ser selecionado.

Agora é só configurar a ação dos botões.

  1. Clique no botão a ser configurado
  2. Agora clique na guia de formatação
  3. Clique em “Ação”
  4. Em “Tipo” escolha a opção “Indicador”
  5. Em “Indicador” escolha o indicador que corresponde ao botão

E para testar se deu tudo certo, CRTL + Clique em cima do botão.

Por fim, é isso que temos para hoje, eu espero que você pratique bastante. Solte sua criatividade criando seu próprio background, e inserindo novas análises para começar a impressionar com Power BI hoje mesmo.

Por último e não menos importante, ao criar sua versão desse dashboard de PCM com Power BI compartilhe em suas redes sociais e me marque, combinado?!

Abraços, Leonardo Karpinski.

Compartilhe este post:

Atenção: Ao utilizar o site, você concorda que utilizemos cookies para te fornecer uma melhor experiência.