Selo de estado:
Preview(teto atual do produto) · Curso ACD-320 — Fórmulas pt-BR: de SOMA a CALCULAR · Aula 11 de 13 · Atualizado em 2026-10-04.
Objetivo#
Ao final desta aula você vai montar ranking, top N e curva ABC.
Vídeo#
Identificador no manifesto: acd-320-11-participacao-ranking-topn · duração-alvo 9 min · tela do produto: /dashboards.
Roteiro:
| # | Capítulo | Minutagem-alvo | Rota |
|---|---|---|---|
| 1 | Abertura — a curva ABC como fio condutor da aula | 00:00–00:50 | /dashboards |
| 2 | PCT_TOTAL e ACUMULADO — participação e soma corrente, os dois eixos da curva ABC | 00:50–03:20 | /dashboards (gráfico de linha) |
| 3 | CLASSIFICAR — ranking de produtos | 03:20–04:40 | /dashboards (biblioteca de medidas) |
| 4 | PRIMEIROS_N — top N dentro de CALCULAR | 04:40–06:10 | /dashboards (editor de fórmulas) |
| 5 | PROCV e TRATAR_COMO — buscar e religar colunas | 06:10–08:10 | /dashboards (editor de fórmulas) |
| 6 | Encerramento — "faça você mesmo" | 08:10–09:00 | /dashboards |
Conteúdo#
Esta aula junta seis funções da categoria Contexto e filtro em torno de um exercício clássico de varejo: a curva ABC — ranquear produtos, ver quanto cada um pesa no total e quanto os primeiros acumulam.
PCT_TOTAL — participação direta, sem escrever CALCULAR
PCT_TOTAL(coluna)Sem equivalente de uma função só no DAX (lá o padrão é DIVIDE(medida; CALCULATE(medida; ALLSELECTED(...)))). Aqui é uma função pronta: compara o grupo atual com o total do visual inteiro.
PCT_TOTAL(valor)| Entrada | Fórmula | Resultado |
|---|---|---|
| grupo SP=60 num total SP+RJ=100 | PCT_TOTAL(receita) | 0,6 |
Isso é exatamente o que a aula 6 montou "na mão" com DIVIDIR(MEDIDA('Receita'); CALCULAR(MEDIDA('Receita'); TUDO())) — use PCT_TOTAL quando bastar a participação simples, e CALCULAR+TUDO/TUDO_EXCETO quando precisar de um recorte mais específico (como "participação dentro da categoria").
ACUMULADO — soma corrente ao longo do eixo
ACUMULADO(coluna)Sem equivalente de uma função só no DAX. Soma as linhas até o ponto atual, na ordem do eixo do visual — a base de qualquer gráfico "acumulado" e da curva ABC.
ACUMULADO(valor)CLASSIFICAR — ranking por uma medida
CLASSIFICAR(expr; [arg2]; [arg3])Compatível com RANKX: empate divide a mesma posição e a próxima pula (comportamento "Skip"). Precisa saber qual coluna agrupa o visual — se o motor não conseguir descobrir, avisa em vez de chutar.
CLASSIFICAR(MEDIDA('Receita'))PRIMEIROS_N — top N como modificador de CALCULAR
PRIMEIROS_N(expr; arg2; [arg3]; [arg4])Compatível com TOPN: fica só com as N maiores linhas (ou grupos, se você informar a coluna) pela expressão. Empate na fronteira entra inteiro — por isso o resultado pode passar de N.
CALCULAR(MEDIDA('Receita'); PRIMEIROS_N(10; MEDIDA('Receita'); produto_id))Essa fórmula recorta o visual para os 10 produtos de maior receita — a base do "top 10" de qualquer ranking.
PROCV — busca no visual inteiro
PROCV(coluna; arg2; arg3; [arg4]...[arg9])Compatível com LOOKUPVALUE: devolve o valor de uma coluna na linha em que a busca casa, procurando no visual inteiro (não só no grupo atual). Aceita várias colunas de busca e um padrão no final.
PROCV(nome; produto_id; VALOR_SELECIONADO(produto_id); "—")Essa fórmula busca o nome do produto cujo produto_id é igual ao único produto_id selecionado no grupo atual (via VALOR_SELECIONADO) — e devolve "—" quando não há casamento.
TRATAR_COMO — religa colunas sem relação declarada
TRATAR_COMO(coluna; arg2; [arg3]...[arg6])DIFERE do DAX: o TREATAS do DAX recebe uma tabela de valores arbitrária; aqui usa os valores que a 2ª coluna tem no grupo atual como filtro da 1ª — liga duas colunas sem relacionamento declarado no modelo, até 3 pares.
CALCULAR(SOMA(valor); TRATAR_COMO(data_entrega; data))Essa fórmula lê: "filtre data_entrega pelos mesmos valores que data tem no grupo atual" — útil quando você quer comparar pela data de entrega usando o filtro que está na data de venda, sem precisar de uma relação extra no modelo.
Montando a curva ABC
Combinando as seis: CLASSIFICAR ordena os produtos, PRIMEIROS_N recorta o top N, PCT_TOTAL dá a participação de cada um e ACUMULADO (sobre os produtos já ordenados pelo ranking) dá o acumulado — a curva ABC clássica é "ranking + participação acumulada" lido direto numa tabela.
Na prática, a classe ABC nasce de uma regra sobre a participação acumulada: produtos até 80% do acumulado são classe A, até 95% classe B, o resto classe C. Com ACUMULADO e PCT_TOTAL já na tabela, essa classificação é um ESCOLHER/SE (aula 3) sobre o acumulado — nenhuma função nova, só composição do que você já sabe.
As seis funções, de um olhar
| Função | Categoria de uso | DAX |
|---|---|---|
PCT_TOTAL | participação simples | sem equivalente direto |
ACUMULADO | soma corrente pelo eixo | sem equivalente direto |
CLASSIFICAR | ranking (posição 1 = maior) | RANKX |
PRIMEIROS_N | recorte top N dentro de CALCULAR | TOPN |
PROCV | busca cruzando colunas do visual | LOOKUPVALUE |
TRATAR_COMO | religa colunas sem relação declarada | TREATAS (semântica diferente) |
Erros comuns
- Esperar que
PRIMEIROS_Nsempre devolva exatamente N linhas — empate na fronteira pode devolver mais. - Usar
CLASSIFICARfora de um visual com eixo claro — sem saber a coluna que agrupa, o motor não tem como ordenar. - Confundir
TUDO_EXCETO/REMOVER_FILTROS(aula 6) comTRATAR_COMO— os dois primeiros mudam o que é ignorado;TRATAR_COMOliga uma coluna a outra que não tem relação declarada.
Estado da capacidade
Transição de contexto e iteradores sobre tabela virtual (C06.3) está em Preview, cobrindo ranking, top N e as funções de busca desta aula.
Faça você mesmo#
No workspace de treino Aurora Varejo (abra /dashboards no console):
- Crie Ranking receita com
CLASSIFICAR(MEDIDA('Receita'))numa tabela por produto. - Crie Participação % com
PCT_TOTAL(valor)(ou reaproveite a medida da aula 6). - Adicione
ACUMULADO(valor)com os produtos ordenados pelo ranking — essa é a curva ABC. - Monte um visual "Top 10 produtos" com
CALCULAR(MEDIDA('Receita'); PRIMEIROS_N(10; MEDIDA('Receita'); produto_id)).
Você terminou quando a tabela de curva ABC mostrar ranking, participação e acumulado lado a lado, e o visual "Top 10" mostrar só os 10 produtos de maior receita (ou mais, em caso de empate na fronteira).
Checagem rápida#
Três perguntas no final da aula, corrigidas no servidor. A aula só conta como concluída depois da checagem.
Documentação relacionada#
- formulas/pct_total
- formulas/acumulado
- formulas/classificar
- formulas/primeiros_n
- formulas/procv
- formulas/tratar_como
- formulas/valor_selecionado
Capacidades ensinadas#
C06.3 — o selo exibido na aula é sempre o estado mais conservador entre as capacidades citadas; nada aqui é "GA".