Pular para o conteúdo

PCT_TOTAL, ACUMULADO, CLASSIFICAR, PRIMEIROS_N, PROCV, TRATAR_COMO

Aula 11 de 139 minOperarAtualizada em 2026-10-04

Vídeo em produção

A gravação desta aula está no lote de produção. O objetivo, o exercício e a documentação já valem. Duração-alvo: 9 min.

Objetivo: Montar ranking, top N e curva ABC

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ítuloMinutagem-alvoRota
1Abertura — a curva ABC como fio condutor da aula00:00–00:50/dashboards
2PCT_TOTAL e ACUMULADO — participação e soma corrente, os dois eixos da curva ABC00:50–03:20/dashboards (gráfico de linha)
3CLASSIFICAR — ranking de produtos03:20–04:40/dashboards (biblioteca de medidas)
4PRIMEIROS_N — top N dentro de CALCULAR04:40–06:10/dashboards (editor de fórmulas)
5PROCV e TRATAR_COMO — buscar e religar colunas06:10–08:10/dashboards (editor de fórmulas)
6Encerramento — "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

código
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.

formula
PCT_TOTAL(valor)
EntradaFórmulaResultado
grupo SP=60 num total SP+RJ=100PCT_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

código
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.

formula
ACUMULADO(valor)

CLASSIFICAR — ranking por uma medida

código
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.

formula
CLASSIFICAR(MEDIDA('Receita'))

PRIMEIROS_N — top N como modificador de CALCULAR

código
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.

formula
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

código
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.

formula
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

código
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.

formula
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çãoCategoria de usoDAX
PCT_TOTALparticipação simplessem equivalente direto
ACUMULADOsoma corrente pelo eixosem equivalente direto
CLASSIFICARranking (posição 1 = maior)RANKX
PRIMEIROS_Nrecorte top N dentro de CALCULARTOPN
PROCVbusca cruzando colunas do visualLOOKUPVALUE
TRATAR_COMOreliga colunas sem relação declaradaTREATAS (semântica diferente)

Erros comuns

  • Esperar que PRIMEIROS_N sempre devolva exatamente N linhas — empate na fronteira pode devolver mais.
  • Usar CLASSIFICAR fora 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) com TRATAR_COMO — os dois primeiros mudam o que é ignorado; TRATAR_COMO liga 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):

  1. Crie Ranking receita com CLASSIFICAR(MEDIDA('Receita')) numa tabela por produto.
  2. Crie Participação % com PCT_TOTAL(valor) (ou reaproveite a medida da aula 6).
  3. Adicione ACUMULADO(valor) com os produtos ordenados pelo ranking — essa é a curva ABC.
  4. 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#

Capacidades ensinadas#

C06.3 — o selo exibido na aula é sempre o estado mais conservador entre as capacidades citadas; nada aqui é "GA".

Carregando seu progresso…