Dynamics do Zero ao PRO · Lição 36 de 48 · Módulo 5

LIÇÃO 36DAX para Métricas Avançadas de Atendimento

Total de casos e MTTR são o básico. As perguntas que realmente movem decisões são outras: estamos atendendo mais ou menos que no mês passado? Qual agente resolve mais rápido? Quantos casos violaram o SLA? DAX responde tudo isso — com as fórmulas certas.

🎯

Resultado desta lição

Ao final, você terá 8 medidas DAX prontas para uso: variação MoM, casos acumulados no ano, taxa de SLA cumprido, ranking de agentes por volume e velocidade, e taxa de resolução no primeiro contato.

As métricas que gestores pedem

  1. Variação de casos mês a mês (MoM)

    Medida: Casos Mês Anterior Casos Mês Anterior = CALCULATE( [Total Casos], DATEADD(Calendário[Date], -1, MONTH) )
    Medida: Variação MoM % Variação MoM % = DIVIDE( [Total Casos] - [Casos Mês Anterior], [Casos Mês Anterior], 0 )

    Formate Variação MoM% como porcentagem. Use em um cartão com ícone de seta para cima/baixo baseado em formatação condicional — verde quando negativo (menos casos = bom), vermelho quando positivo.

    DIVIDE() evita erro de divisão por zero: O terceiro parâmetro (0) é o valor alternativo quando o denominador é zero. Usar [Casos Mês Anterior] / [Total Casos] diretamente geraria BLANK() ou erro em meses sem histórico.
  2. Acumulado no ano (YTD)

    Medida: Casos YTD Casos YTD = TOTALYTD( [Total Casos], Calendário[Date] )
    Medida: Casos Mesmo Período Ano Anterior Casos YTD Ano Anterior = CALCULATE( [Casos YTD], SAMEPERIODLASTYEAR(Calendário[Date]) )
    TOTALYTD e SAMEPERIODLASTYEAR: São funções de inteligência temporal — só funcionam corretamente quando a tabela Calendário está marcada como tabela de datas. Elas ignoram o filtro de período do slicer e calculam sempre acumulado desde 1º de janeiro.
  3. Taxa de cumprimento de SLA

    Medida: SLA Cumprido % SLA Cumprido % = DIVIDE( CALCULATE( COUNTROWS(incident), incident[slaisblocked] = FALSE() ), [Total Casos], 0 )

    O campo slaisblocked indica se o SLA foi violado. FALSE = SLA dentro do prazo, TRUE = SLA violado. Esta métrica mostra a porcentagem de casos atendidos dentro do SLA configurado no Dynamics.

    Casos sem SLA configurado: Casos criados sem uma regra de SLA associada terão slaisblocked = BLANK(). Ajuste a fórmula para excluir esses casos do denominador se quiser uma taxa mais precisa: CALCULATE(COUNTROWS(incident), NOT(ISBLANK(incident[slainvokedid]))).
  4. Ranking de agentes por volume e velocidade

    Medida: Rank por Volume Rank Agente Volume = RANKX( ALL(systemuser[fullname]), [Total Casos], , DESC, Dense )
    Medida: Rank por MTTR (menor = melhor) Rank Agente MTTR = RANKX( ALL(systemuser[fullname]), [MTTR], , ASC, Dense )

    Use essas medidas em uma tabela com as colunas: Nome do Agente, Total Casos, MTTR, Rank Volume, Rank MTTR. Isso gera o painel de performance individual de cada agente.

  5. Taxa de resolução no primeiro contato (FCR)

    Casos resolvidos em menos de 2 horas e sem reabertura são proxy para FCR:

    Medida: FCR Estimado % FCR % = DIVIDE( CALCULATE( COUNTROWS(incident), incident[statecode] = 1, incident[Horas até Resolução] <= 2 ), CALCULATE( COUNTROWS(incident), incident[statecode] = 1 ), 0 )
    FCR é uma estimativa: Sem um campo específico de "resolvido no primeiro contato" no Dynamics, usamos tempo como proxy. Uma configuração mais precisa seria criar um campo customizado no Dynamics que marca o caso como FCR quando resolvido sem recontato do cliente.
  6. Casos com alta prioridade abertos há mais de 48h

    Métrica de urgência — casos críticos parados:

    Medida: Alta Prioridade Críticos Alta Prioridade Críticos = CALCULATE( COUNTROWS(incident), incident[statecode] = 0, incident[Prioridade] = "Alta", DATEDIFF(incident[createdon], NOW(), HOUR) > 48 )

    Use em um cartão com formatação condicional: se > 0 → vermelho com borda de alerta. Este número idealmente deve ser sempre zero.


Checklist

Contexto de filtro — o conceito central do DAX

Todo cálculo DAX acontece dentro de um contexto de filtro — os filtros ativos no relatório (slicer de período, filtro de prioridade, linha de tabela) que determinam quais linhas a medida vai calcular. O CALCULATE() é a função que manipula esse contexto: você passa uma medida e filtros adicionais, e o CALCULATE cria um novo contexto com esses filtros aplicados.

Quando você entende que CALCULATE([Total Casos], incident[Prioridade] = "Alta") calcula o Total Casos dentro de um contexto onde só existem casos de Alta Prioridade — independente dos outros filtros do relatório — você entendeu a essência do DAX.

Foto de Pablo Maruk
Pablo Maruk
Analista Funcional de Dynamics · 16 anos de TI · EUA & Europa