SUM e SUMX são as duas formas de somar valores no DAX, a linguagem de fórmulas do Power BI, do Power Pivot no Excel e dos modelos semânticos do Microsoft Fabric.

A SUM soma uma coluna inteira. A SUMX percorre uma tabela linha a linha, calcula uma expressão em cada uma delas e só depois soma os resultados.

Neste artigo, você vai entender a regra de decisão entre as duas funções, ver com números por que a SUM pode gerar um resultado absurdo, descobrir o que realmente deixa uma medida lenta e aprender a usar a SUMX para corrigir totais.

A regra de decisão em uma frase

Antes de qualquer detalhe técnico, guarde esta pergunta: o valor que eu quero somar já existe pronto em uma coluna?

  • Sim: use SUM. Exemplo: somar a coluna Quantidade.
  • Não, preciso calcular algo em cada linha antes de somar: use SUMX. Exemplo: Quantidade × Preço Unitário.

A tabela abaixo resume as diferenças práticas:

CaracterísticaSUMSUMX
O que recebeUma colunaUma tabela e uma expressão
Tipo de funçãoAgregadoraIteradora (percorre linha a linha)
Quando usarValor já pronto em uma colunaCálculo que envolve duas ou mais colunas da mesma linha
ExemploSUM(Vendas[Quantidade])SUMX(Vendas, Vendas[Quantidade] * Vendas[PrecoUnitario])
Equivalente no ExcelSOMASOMARPRODUTO
Desempenho com uma única colunaIdênticoIdêntico

Vamos usar a tabela abaixo como exemplo.

tabela de exemplo

Observe que a tabela não tem uma coluna de faturamento. Ela tem quantidade e preço separados. É exatamente aí que a escolha entre SUM e SUMX faz diferença.

Como funciona a SUM

A SUM recebe uma única coluna e soma todos os valores visíveis no contexto atual do visual (o filtro de mês, a categoria da linha da matriz, a segmentação selecionada).

Quantidade Vendida = SUM ( Vendas[Quantidade] )

Na nossa tabela, essa medida retorna 93 unidades.

Se você colocar a medida em uma matriz por Categoria, o Power BI filtra a tabela para cada categoria e soma só as linhas correspondentes.

A SUM é perfeita para tudo que já está pronto: quantidade, valor de nota fiscal já calculado pelo sistema, horas trabalhadas, número de chamados.

aplicação da função SUM

Como funciona a SUMX

A SUMX tem dois argumentos: a tabela que será percorrida e a expressão que será calculada em cada linha.

Faturamento Bruto =
SUMX (
    Vendas,                                      -- 1. Tabela que será percorrida
    Vendas[Quantidade] * Vendas[PrecoUnitario]   -- 2. Cálculo feito em cada linha
)

O que acontece por trás:

  1. A SUMX pega a primeira linha da tabela Vendas e calcula 2 × 4.200 = 8.400.
  2. Passa para a segunda linha e calcula 10 × 85 = 850.
  3. Repete o processo nas 16 linhas.
  4. Soma todos os resultados: R$ 48.815.

Esse “olhar para cada linha” é o que o DAX chama de contexto de linha. A SUM não cria esse contexto, por isso não consegue multiplicar colunas da mesma linha.

aplicação da função SUMX

O erro clássico: a soma dos produtos não é o produto das somas

Quem está começando costuma tentar resolver o faturamento só com SUM:

-- ⚠️ Medida ERRADA
Faturamento Errado =
SUM ( Vendas[Quantidade] ) * SUM ( Vendas[PrecoUnitario] )

Parece razoável, mas veja o que o DAX faz:

  • SUM(Quantidade) = 93
  • SUM(PrecoUnitario) = 18.060
  • Resultado: 93 × 18.060 = R$ 1.679.580

O faturamento real é R$ 48.815. A medida errada mistura a quantidade de mouses com o preço de notebooks e infla o valor em mais de 34 vezes.

MedidaResultadoCorreto?
SUM(Quantidade) * SUM(PrecoUnitario)R$ 1.679.580Não
SUMX(Vendas, Quantidade * PrecoUnitario)R$ 48.815Sim

A regra matemática por trás é simples: a soma dos produtos é diferente do produto das somas. Sempre que o cálculo precisa acontecer linha a linha, a SUMX é a ferramenta certa.

Atenção: em um visual filtrado para um único pedido, as duas medidas retornam o mesmo valor. O erro só aparece quando há várias linhas agregadas, o que torna esse problema fácil de passar despercebido nos testes.

A ponte com o Excel: SUMX é o SOMARPRODUTO do DAX

Se você vem do Excel, já conhece a lógica da SUMX. Com a mesma tabela em uma planilha, o faturamento seria calculado assim:

=SOMARPRODUTO(E2:E17; F2:F17)

O SOMARPRODUTO multiplica cada par de células da mesma linha e soma os resultados. É exatamente o que a SUMX faz no DAX.

A outra forma comum no Excel é criar uma coluna auxiliar =E2*F2, arrastar para baixo e somar a coluna. No DAX, essa coluna auxiliar vira a expressão dentro da SUMX, sem precisar existir fisicamente na tabela.

Um detalhe útil para quem trabalha com Excel: todas as medidas deste artigo funcionam também no Power Pivot, porque ele usa o mesmo motor e a mesma linguagem DAX do Power BI.

exemplo de uso da função SOMARPRODUTO

Exemplos práticos de SUMX no dia a dia

Com a lógica entendida, a SUMX resolve vários cálculos de negócio comuns.

Faturamento líquido

O desconto da nossa tabela é um valor em reais por pedido. O cálculo precisa acontecer em cada linha: quantidade × preço, menos o desconto daquele pedido.

Faturamento Líquido =
SUMX (
    Vendas,
    ( Vendas[Quantidade] * Vendas[PrecoUnitario] ) - Vendas[Desconto]
)

Resultado: R$ 48.815 − R$ 1.240 = R$ 47.575.

Como o desconto já é um valor pronto, também daria para escrever [Faturamento Bruto] - SUM(Vendas[Desconto]). As duas formas chegam ao mesmo número, e você pode escolher a que deixar a medida mais legível.

Custo total e lucro

O custo também depende de quantidade × custo unitário, então segue o mesmo padrão:

Custo Total =
SUMX (
    Vendas,
    Vendas[Quantidade] * Vendas[CustoUnitario]
)
Lucro =
[Faturamento Líquido] - [Custo Total]

Resultado: R$ 47.575 − R$ 32.575 = R$ 15.000.

Repare que a medida de Lucro não usa SUMX. Ela apenas subtrai duas medidas que já estão corretas. Reaproveitar medidas prontas deixa o modelo mais fácil de manter.

Margem percentual

Margem % =
DIVIDE ( [Lucro], [Faturamento Líquido] )

Resultado: 31,5%. A função DIVIDE evita erro de divisão por zero quando um filtro não retorna vendas.

Conversão de moeda com tabela relacionada

Imagine que as vendas estejam em dólar e exista uma tabela Cotacao relacionada à tabela Vendas pela data, com a taxa de câmbio de cada dia. A SUMX, combinada com RELATED, busca a cotação correta para cada linha:

Faturamento em Reais =
SUMX (
    Vendas,
    Vendas[Quantidade] * Vendas[PrecoUnitario]
        * RELATED ( Cotacao[TaxaDolarReal] )
)

Cada pedido é convertido pela cotação do próprio dia antes da soma. Usar uma cotação média sobre o total geraria um valor diferente e incorreto.

SUMX é mais lenta que SUM? Depende do que está dentro dela

É comum ouvir que a SUMX é sempre mais pesada e deve ser evitada em bases grandes. Os testes de especialistas mostram algo diferente.

SUM é, na prática, uma SUMX com uma coluna

Segundo o DAX Guide, mantido pela SQLBI, a SUM é um atalho: o motor do Power BI executa SUM(Vendas[Quantidade]) exatamente como SUMX(Vendas, Vendas[Quantidade]). Um teste publicado pelo SQLGene confirmou que os planos de execução das duas são idênticos.

Ou seja, para somar uma única coluna, não existe diferença de desempenho. A escolha entre elas, nesse caso, é só de legibilidade.

O que realmente pesa

A SQLBI mostrou que uma SUMX de quantidade × preço sobre 200 milhões de linhas roda muito rápido, porque o motor de armazenamento do Power BI consegue fazer a multiplicação sozinho. Mas, ao incluir um simples ROUND dentro da expressão, o tempo de CPU do motor saltou de 203 ms para 53.422 ms (artigo da SQLBI sobre o tema).

Os três cenários que costumam deixar uma SUMX lenta em tabelas grandes são:

  • Funções complexas dentro da expressão, como arredondamentos e lógicas condicionais pesadas, que o motor de armazenamento não consegue processar sozinho.
  • Medidas dentro do iterador, que forçam uma transição de contexto em cada linha (explicada na próxima seção).
  • Iteradores aninhados, como uma SUMX dentro de outra SUMX ou de um FILTER sobre uma tabela grande.

Em tabelas de alguns milhares de linhas, nada disso é perceptível. Em tabelas fato com dezenas de milhões de registros, a diferença entre uma expressão simples e uma complexa pode separar um visual instantâneo de um que demora vários segundos.

Uma boa prática equilibrada

Comece pelas soluções mais simples: SUM para colunas prontas e CALCULATE para alterar filtros. Quando precisar de uma SUMX, use sem receio, mas trate isso como um sinal para revisar a expressão de dentro: ela é simples? Tem medidas? Tem outro iterador?

A pergunta certa não é “SUM ou SUMX?”, e sim “o que eu coloquei dentro da SUMX?”.

Quando o total da matriz não bate com a soma das linhas

Este é um problema que sempre aparece em fóruns de Power BI. Todas as linhas da matriz estão corretas, mas o total mostra um valor que não corresponde à soma delas.

Por que isso acontece

No Excel, o total de uma tabela soma os valores visíveis. No Power BI, o total é recalculado: a mesma fórmula da medida é aplicada sobre todas as linhas juntas, e não sobre os resultados já exibidos.

Para medidas simples como a SUM, isso dá o mesmo resultado. Para medidas com regras condicionais, o resultado muda. Como explica a SQLBI, o total não está “errado”: ele está correto para a fórmula que foi escrita, que simplesmente não é aditiva.

Exemplo com a tabela de vendas

Suponha uma regra de frete: pedidos acima de R$ 2.000 têm frete grátis; os demais pagam R$ 50.

Frete =
IF ( [Faturamento Bruto] > 2000, 0, 50 )

Em uma matriz por Pedido, cada linha mostra o frete correto. Oito pedidos ficam abaixo de R$ 2.000 (PED-1002, 1004, 1005, 1007, 1011, 1013, 1014 e 1016), então o frete total esperado é R$ 400.

Mas o total da matriz mostra R$ 0. Na linha de total, o Power BI calcula o faturamento bruto de todos os pedidos juntos (R$ 48.815), que é maior que R$ 2.000, e aplica a regra uma única vez.

A correção com SUMX

A solução é dizer ao DAX: “calcule o frete pedido a pedido e depois some”.

Frete Total =
SUMX (
    VALUES ( Vendas[Pedido] ),   -- 1. Lista de pedidos visíveis no contexto atual
    [Frete]                      -- 2. Calcula a regra de frete para cada pedido
)

Agora as linhas continuam iguais e o total mostra R$ 400.

exemplo de aplicação da função SUMX

O ponto-chave está no primeiro argumento. Em vez de percorrer a tabela Vendas inteira, a SUMX percorre VALUES(Vendas[Pedido]), a lista de pedidos distintos. A tabela escolhida define a granularidade do cálculo:

Primeiro argumentoA regra é aplicada por…
VendasCada linha da tabela fato
VALUES(Vendas[Pedido])Cada pedido
VALUES(Vendas[Categoria])Cada categoria
VALUES(Calendario[Mês])Cada mês

Se a regra de negócio fosse “frete grátis para categorias que faturaram mais de R$ 10.000 no mês”, a tabela iterada seria outra. Escolher a granularidade certa é o que define se o total vai bater.

Transição de contexto: o que muda quando há uma medida dentro da SUMX

Repare que a medida Frete Total usa [Frete], uma medida, dentro da SUMX. Isso funciona por causa de um comportamento do DAX chamado transição de contexto.

Toda referência a uma medida é envolvida automaticamente por um CALCULATE.

Dentro de um iterador, esse CALCULATE transforma a linha atual (o pedido PED-1002, por exemplo) em um filtro. Assim, [Faturamento Bruto] passa a ser calculado só para aquele pedido.

Na prática, isso traz duas consequências:

  • Poder: é o que permite aplicar regras de negócio em qualquer granularidade, como no exemplo do frete.
  • Cuidado: a transição acontece em cada linha iterada. Sobre uma tabela pequena como a lista de pedidos, não há problema. Sobre uma tabela fato com milhões de linhas, pode pesar no desempenho e, se a tabela tiver linhas duplicadas, gerar resultados inesperados.

Se duas medidas que parecem idênticas retornam números diferentes dentro de uma SUMX, a transição de contexto costuma ser a explicação.

Para se aprofundar, a SQLBI tem uma explicação visual da transição de contexto.

Medida com SUMX ou coluna calculada?

Uma alternativa à SUMX seria criar uma coluna calculada Faturamento = Vendas[Quantidade] * Vendas[PrecoUnitario] e depois somá-la com SUM. O resultado numérico é o mesmo, mas o custo é diferente.

AspectoMedida com SUMXColuna calculada + SUM
Quando é calculadaNa hora da consultaNa atualização do modelo
Ocupa memóriaNãoSim, em cada linha da tabela
CompressãoNão se aplicaCostuma ser pior que a de colunas importadas
Pode ser usada como eixo, filtro ou segmentaçãoNãoSim
Pode criar relacionamentosNãoSim

Na maioria das análises de valores (faturamento, custo, lucro), a medida com SUMX é a melhor escolha, porque não aumenta o tamanho do modelo.

A coluna calculada faz sentido quando o resultado precisa classificar ou fatiar os dados. Exemplos:

  • Uma coluna Faixa de Ticket (“Até R$ 1.000”, “R$ 1.000 a R$ 5.000”, “Acima de R$ 5.000”) para usar em uma segmentação.
  • Uma chave combinada para criar um relacionamento entre tabelas.

Se o cálculo puder ser feito na origem ou no Power Query, essa costuma ser uma opção ainda melhor do que a coluna calculada em DAX. Veja mais no nosso artigo sobre Power Query para iniciantes.

Checklist rápido para escolher entre SUM e SUMX

Antes de criar uma medida de soma, passe por estas perguntas:

  1. O valor já existe pronto em uma coluna? Use SUM.
  2. O cálculo usa duas ou mais colunas da mesma linha? Use SUMX sobre a tabela fato.
  3. A regra precisa ser aplicada por pedido, cliente, categoria ou mês? Use SUMX sobre VALUES da coluna que define essa granularidade.
  4. O total da matriz não bate com as linhas? Verifique se a medida tem regras condicionais e recomponha o total com SUMX.
  5. A medida ficou lenta? Revise o que está dentro da SUMX: funções complexas, medidas sobre tabelas grandes ou iteradores aninhados.
  6. Precisa usar o resultado como filtro ou eixo? Avalie uma coluna calculada ou um ajuste no Power Query.

Conclusão

A diferença entre SUM e SUMX no Power BI se resume a uma pergunta: o valor já está pronto ou precisa ser calculado linha a linha?

A SUM soma colunas prontas. A SUMX percorre uma tabela, calcula uma expressão em cada linha e soma os resultados, funcionando como o SOMARPRODUTO do DAX.

Você também viu que, para uma única coluna, as duas têm o mesmo desempenho, porque a SUM é uma SUMX por baixo dos panos.

O que pesa é o conteúdo da expressão. E a SUMX, combinada com VALUES, é a ferramenta para corrigir totais de medidas com regras de negócio, aplicando o cálculo na granularidade certa.

Para colocar em prática, abra um relatório que você já usa e revise as medidas de faturamento, custo e margem.

Procure multiplicações entre duas SUMs, totais de matriz que não conferem com as linhas e colunas calculadas que poderiam virar medidas.

Em poucos minutos, você deixa o modelo mais confiável, mais leve e pronto para responder às perguntas do seu gestor, do seu cliente ou do seu próprio negócio com números corretos.

Sobre o Autor

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Solicitar exportação de dados

Use este formulário para solicitar uma cópia de seus dados neste site.

Solicitar a remoção de dados

Use este formulário para solicitar a remoção de seus dados neste site.

Solicitar retificação de dados

Use este formulário para solicitar a retificação de seus dados neste site. Aqui você pode corrigir ou atualizar seus dados, por exemplo.

Solicitar cancelamento de inscrição

Use este formulário para solicitar a cancelamento da inscrição do seu e-mail em nossas listas de e-mail.