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

Como calcular a percentagem do total em DAX: passo a passo

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

Mostrar cada valor como percentagem do total é uma das análises mais pedidas em qualquer relatório: quanto pesa cada categoria, região ou produto dentro do total geral. Em DAX, o segredo está em comparar o valor da linha atual com um total que ignora os filtros dessa mesma linha. Quando essa comparação está bem feita, a soma das percentagens dá sempre 100% — e é isso que vamos construir aqui, do zero e de forma reutilizável.

Pré-requisitos

  • Power BI Desktop instalado, ou o Power BI Service com um modelo que possa editar.
  • Uma tabela de factos com valores numéricos — vamos usar uma tabela Vendas com a coluna Valor.
  • Pelo menos uma coluna para agrupar os dados, como Vendas[Categoria].
  • Saber criar uma medida simples com SUM. Não é preciso mais nada.

Passo 1: Criar a medida base do total

Antes de pensar em percentagens, precisamos de uma medida que some os valores. Esta medida reage ao contexto de filtro: numa matriz por categoria, devolve o total de cada categoria; numa linha de total, devolve o total de tudo.

Total Vendas = SUM ( Vendas[Valor] )

Crie a medida com o botão Nova medida e arraste-a para uma matriz que tenha Vendas[Categoria] nas linhas. Deve ver um valor diferente por categoria.

Passo 2: Calcular o total geral com ALL

A percentagem precisa de um denominador que não mude de linha para linha: o total geral. A função ALL remove os filtros de uma coluna ou tabela, e CALCULATE recalcula a medida nesse novo contexto sem filtros. O resultado é o total de todas as categorias, mesmo quando estamos dentro da linha de uma só.

Total Geral =
CALCULATE (
    [Total Vendas],
    ALL ( Vendas[Categoria] )
)

Se juntar esta medida à matriz, vai reparar que ela mostra o mesmo número em todas as linhas. Parece estranho à primeira vista, mas é precisamente o denominador que procuramos: o "todo" contra o qual cada categoria será comparada.

Passo 3: Dividir para obter a percentagem

Agora combinamos as duas ideias numa só medida. Usamos DIVIDE em vez da barra de divisão porque DIVIDE devolve um valor em branco (em vez de um erro) quando o denominador é zero. As variáveis VAR tornam a fórmula mais legível e mais rápida, porque cada valor é calculado uma única vez.

% do Total =
VAR TotalCategoria = [Total Vendas]
VAR TotalGeral =
    CALCULATE ( [Total Vendas], ALL ( Vendas[Categoria] ) )
RETURN
    DIVIDE ( TotalCategoria, TotalGeral )

Por fim, selecione a medida e formate-a como Percentagem, com uma ou duas casas decimais. Agora cada categoria mostra o seu peso real no total.

Dica: dê nomes claros às medidas. "% do Total" é imediatamente compreensível para quem abre o relatório meses depois.

Passo 4: Respeitar os filtros com ALLSELECTED

Há uma subtileza que faz toda a diferença. Como ALL remove todos os filtros, ele também ignora as segmentações (slicers) que o utilizador escolheu. Se filtrar por um ano e quiser que 100% represente apenas esse ano, precisa de ALLSELECTED, que respeita os filtros vindos dos visuais e segmentações.

% do Total (Selecionado) =
DIVIDE (
    [Total Vendas],
    CALCULATE ( [Total Vendas], ALLSELECTED ( Vendas[Categoria] ) )
)

Regra prática: use ALL quando 100% deve ser sempre o total absoluto; use ALLSELECTED quando 100% deve refletir aquilo que o utilizador filtrou no relatório.

Verificar o resultado

Coloque Vendas[Categoria] numa matriz com as medidas [Total Vendas] e [% do Total] e procure dois sinais de que está tudo certo:

  • A coluna de percentagens soma 100% na linha de total.
  • Ao adicionar uma segmentação por ano, a versão com ALLSELECTED continua a somar 100%, enquanto a versão com ALL passa a somar menos de 100%, porque compara com o total de todos os anos.

Este teste dos 100% é a forma mais rápida de confirmar o resultado e de decidir qual das funções usar em cada caso.

Conclusão

Com apenas três peças — uma medida base, um denominador com ALL ou ALLSELECTED, e DIVIDE para evitar erros — já consegue calcular qualquer percentagem do total em DAX e aplicar o mesmo padrão a regiões, produtos ou clientes. O passo seguinte é calcular a percentagem dentro de uma hierarquia, mostrando o peso de cada produto na sua categoria. Que argumento acha que teria de mudar na função ALL para conseguir esse efeito?