(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como criar um ranking com RANKX em DAX: passo a passo

João Barros 05 de July de 2026 4 min de leitura

Ordenar produtos, vendedores ou regiões por desempenho é uma das perguntas mais comuns em Business Intelligence. Em DAX, a função RANKX permite criar um ranking dinâmico que reage aos filtros do relatório, atribuindo a cada elemento a sua posição — 1.º, 2.º, 3.º — com base numa medida. Este tutorial mostra, passo a passo e com um exemplo, como criar um ranking com RANKX no Power BI.

Pré-requisitos

  • Power BI Desktop instalado (versão gratuita).
  • Um modelo com uma tabela de factos (ex.: Vendas) e uma dimensão (ex.: Produto).
  • Conhecer o básico de medidas em DAX (como criar uma medida com SUM).

Passo 1: Criar a medida base

Antes de ordenar, precisamos de algo para ordenar. Vamos criar uma medida simples que soma o valor das vendas. Clique com o botão direito na tabela Vendas, escolha Nova medida e escreva:

Total Vendas = SUM ( Vendas[Valor] )

Esta medida devolve o total de vendas no contexto atual — por produto, por mês ou global, consoante o visual onde a colocar. É sobre este valor que o ranking vai ser calculado.

Passo 2: Criar o ranking com RANKX

Agora criamos a medida de ranking. A ideia é comparar cada produto com todos os outros e devolver a sua posição. Crie uma nova medida:

Ranking Produtos =
RANKX (
    ALL ( Produto[Nome] ),
    [Total Vendas],
    ,
    DESC,
    Dense
)

Explicando cada argumento: ALL ( Produto[Nome] ) devolve a lista completa de produtos; [Total Vendas] é o valor avaliado para cada produto; o argumento vazio a seguir é o parâmetro opcional value, que deixamos em branco para o RANKX usar o valor da linha atual; DESC coloca o valor mais alto em 1.º lugar; e Dense controla a forma como os empates são tratados (ver Passo 4).

Passo 3: Perceber o papel de ALL

Este é o passo onde a maioria das pessoas se engana. Se escrever RANKX ( Produto, [Total Vendas] ) sem ALL, todos os produtos aparecem com o ranking 1. Porquê? Porque, numa tabela ou matriz, cada linha já está filtrada para um único produto — o contexto de filtro reduz a tabela a essa única linha, e um valor sozinho fica sempre em primeiro.

A função ALL remove esse filtro e devolve todos os produtos, dando ao RANKX uma lista completa para comparar. Regra prática: o primeiro argumento do RANKX deve conter a lista inteira contra a qual quer ordenar.

Passo 4: Controlar empates e ordem

O argumento de ordenação aceita DESC (maior valor = 1.º, o mais comum num ranking de vendas) ou ASC (menor valor = 1.º, útil para rankings de custo ou de tempo). O último argumento define os empates:

  • Dense: dois produtos empatados em 2.º são ambos 2.º e o seguinte é 3.º (1, 2, 2, 3).
  • Skip: dois empatados em 2.º são ambos 2.º e o seguinte salta para 4.º (1, 2, 2, 4).

Escolha Dense quando quer um ranking contínuo sem saltos e Skip quando quer refletir quantos elementos ficaram à frente.

Passo 5: Mostrar apenas o Top 5

Um uso frequente do ranking é destacar os melhores. Pode reutilizar a medida para mostrar só os cinco primeiros produtos:

Top 5 Vendas =
IF ( [Ranking Produtos] <= 5, [Total Vendas], BLANK () )

Ao colocar esta medida num visual e filtrar os valores em branco, fica apenas o Top 5. Como o RANKX é dinâmico, o ranking recalcula-se sempre que o utilizador aplica filtros de ano, categoria ou região.

Verificar o resultado

Crie uma tabela (visual Tabela) com o campo Produto[Nome] e as medidas Total Vendas e Ranking Produtos. Ordene a coluna do ranking por ordem crescente: o produto com mais vendas deve mostrar 1, o segundo deve mostrar 2, e assim por diante. Se todos mostrarem 1, falta o ALL no primeiro argumento. Aplique um filtro (por exemplo, um ano específico) e confirme que as posições se recalculam.

Conclusão

Com uma única medida RANKX já consegue criar rankings dinâmicos que respondem aos filtros do relatório, controlar a ordem e gerir empates. O próximo passo natural é combinar o ranking com CALCULATE para ordenar dentro de categorias (por exemplo, o Top 3 de cada família de produto) usando ALLEXCEPT. Qual vai ser o primeiro ranking que vai construir no seu relatório — produtos, vendedores ou regiões?