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

Como fazer Top N Dinâmico em Power BI: passo a passo

João Barros 12 de August de 2026 3 min de leitura

Este tutorial mostra como criar um Top N dinâmico em Power BI controlado por um slicer, útil para destacar os principais clientes, produtos ou categorias e agregar o restante em 'Others'. Explica o porquê e dá passos práticos com DAX e modelação simples.

Pré-requisitos

  • Power BI Desktop (versão recente).
  • Uma tabela de vendas com colunas: CustomerName, Product, SalesAmount, OrderDate.
  • Noções básicas de relações, tabelas e medidas DAX.

Passo 1: Preparar a tabela de ranking

Precisamos de uma tabela para selecionar o N (Top 3, Top 10, etc.). Cria uma tabela de parâmetros no Power BI com números que façam sentido para o teu relatório.

TopN = GENERATESERIES(1, 20, 1)

Depois converte-a num slicer no relatório para o utilizador escolher o N. Esta tabela está desligada (não precisa de relações) e serve para filtragem via medidas DAX.

Passo 2: Medida de total de vendas

Cria uma medida base com o total de vendas. Esta serve como referência para ranking e filtros.

Total Sales = SUM(Sales[SalesAmount])

Passo 3: Medida de ranking por dimensão

Vamos criar uma medida que calcula o rank de cada membro (ex.: CustomerName) ordenado por Total Sales. Usamos RANKX com ALLSELECTED para respeitar slicers relevantes.

Customer Rank =
RANKX(
  ALLSELECTED(Customer[CustomerName]),
  CALCULATE([Total Sales]),
  ,
  DESC,
  DENSE
)

Passo 4: Medida que identifica Top N

Com o rank e o valor de TopN seleccionado, criamos uma medida booleana que indica se um cliente está no Top N escolhido.

Is TopN =
VAR SelectedN = SELECTEDVALUE(TopN[Value], 5)
RETURN
IF([Customer Rank] <= SelectedN, 1, 0)

Passo 5: Medida para agrupar 'Others'

Queremos mostrar os Top N individualmente e somar o restante em 'Others'. Cria uma medida que devolve o valor do cliente se estiver no Top N ou agrega para 'Others'.

TopN Sales =
VAR IsTop = [Is TopN]
RETURN
IF(
  IsTop = 1,
  [Total Sales],
  BLANK()
)

Others Sales =
VAR SelectedN = SELECTEDVALUE(TopN[Value], 5)
VAR TableAll =
    ADDCOLUMNS(
        VALUES(Customer[CustomerName]),
        "Rank", [Customer Rank],
        "Sales", [Total Sales]
    )
VAR OthersSum =
    SUMX(
      FILTER(TableAll, [Rank] > SelectedN),
      [Sales]
    )
RETURN
IF(HASONEVALUE(Customer[CustomerName]) = FALSE(), OthersSum, BLANK())

Passo 6: Construir o visual com 'Others'

Usa uma tabela ou gráfico de colunas. Coloca Customer[CustomerName] e a medida TopN Sales. Para incluir 'Others' no mesmo visual, cria uma tabela auxiliar virtual com os Top N e uma linha 'Others' ou usa um visual combinado:

// Exemplo simplificado para tabela virtual num visual de tabela
Display Name =
IF([Is TopN] = 1, SELECTEDVALUE(Customer[CustomerName]), "Others")

Display Sales =
IF([Is TopN] = 1, [Total Sales], CALCULATE([Others Sales]))

Se preferires, cria uma tabela resumida com SUMMARIZE e usa-a num visual com a função 'Display Name' e 'Display Sales'.

Passo 7: Tratar empates e performance

Empates no ranking podem duplicar posições; usando DENSE evita saltos, mas podes usar SKIP para outro comportamento. Para performance, limita ALLSELECTED a uma coluna concreta e evita iteradores desnecessários em grandes volumes.

Verificar o resultado

Selecciona diferentes valores no slicer TopN e verifica que o visual actualiza: os N primeiros aparecem individualmente e o total das restantes entidades aparece como 'Others'. Confirma que os totais coincidem com o Total Sales geral e testa com diferentes filtros (data, produto) para garantir que ALLSELECTED respeita os slicers desejados.

Conclusão

O Top N dinâmico em Power BI permite dar foco aos principais itens mantendo contexto com os restantes agregados. Próximos passos: experimentar com Top N por produto, combinar com variáveis de tempo e criar bookmarks para opções predefinidas. Dica: usa tooltips para explicar ao utilizador o que representa 'Others' e evitar confusão.