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.
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.
Casos Mês Anterior =
CALCULATE(
[Total Casos],
DATEADD(Calendário[Date], -1, MONTH)
)
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.
Casos YTD =
TOTALYTD(
[Total Casos],
Calendário[Date]
)
Casos YTD Ano Anterior =
CALCULATE(
[Casos YTD],
SAMEPERIODLASTYEAR(Calendário[Date])
)
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.
CALCULATE(COUNTROWS(incident), NOT(ISBLANK(incident[slainvokedid]))).
Rank Agente Volume =
RANKX(
ALL(systemuser[fullname]),
[Total Casos],
,
DESC,
Dense
)
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.
Casos resolvidos em menos de 2 horas e sem reabertura são proxy para FCR:
FCR % =
DIVIDE(
CALCULATE(
COUNTROWS(incident),
incident[statecode] = 1,
incident[Horas até Resolução] <= 2
),
CALCULATE(
COUNTROWS(incident),
incident[statecode] = 1
),
0
)
Métrica de urgência — casos críticos parados:
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.
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.