[Power BI] O totalizador da minha Tabela ou Matriz "NÃO BATE" e agora?


Olá amantes de visuais de tabela e matriz no Power BI, tudo bem?

Hoje vamos falar de um caso que vejo bastante nos grupos do Power BI.

“O calculo na linha está batendo mas no total não e agora?”

Mas antes de iniciarmos, que tal deixar aquela sua inscrição marota no meu canal no youtube que está recheado de vídeos legais, vai lá seu pão duro de like youtube.com/rafaelmendonca

Agora que você já aliviou sua pão-durice você merece conteúdo .... kkkkkkkk

Vamos lá, temos então a seguinte tabela gerada no meu conjunto de dados


Essa tabela possui uma lista de vendas realizadas por dois vendedores com o numero da ordem da venda, um valor unitário e uma quantidade de itens em cada venda.

O que queremos é bem simples meu jovem, calcular o valor total de cada venda e ter um total de todas as vendas...

Aí você muito garotão usa a seguinte expressão DAX:



E depois joga isso numa tabela.

Lindo neh???

Mas o totalizador trouxe um valor que não tem nada a ver com o totalizador real que deveria.


E de onde ele tirou esse valor?

Bem isso veio simplesmente da multiplicação dos totais de cada linha.

Isso ocorre porque quando usamos uma função não iterante, estamos criando cálculos que usam contexto de Filtro.

Rafael mas não tem nenhum filtro aplicado aí...

Ow animal... Claro que têm...

O próprio nome do vendedor e a Ordem de Venda cria um Filtro implícito que afeta nosso cálculo.
Traduzindo o que estamos fazendo linha a linha é filtrando o Vendedor X na Ordem de Venda Y, e multiplicando a soma da quantidade pela soma do valor de vendas.

E ele faz essa analise a cada filtro implícito no nosso visual de tabela em cada linha.

O problema que quando ele chega na linha totalizador, SIM o TOTALIZADOR É UMA LINHA DO NOSSO VISUAL, ele procura os filtros e não havendo filtros para vendedor e nem Ordem de venda, então ele simplesmente Soma toda a coluna de Quantidade e Multiplica pela Soma de toda a Coluna Valor e nos dá um resultado bizarro.

Temos então a velho logica que a soma dos produtos não é igual ao produto das somas.

E como corrigir isso?

Em DAX temos as chamadas funções iterantes, que diferente das demais não trabalham em contexto de Filtro mas em contexto de Linha.

O que isso quer dizer?

Quer dizer que essas funções tem a peculiaridade de poder analisar o meu cálculo LINHA A LINHA da minha tabela Fonte, e não somente com base no filtro implícito no meu visual de tabela.

Vamos demonstrar usando a função iterante que substituiria a nossa expressão anterior.

Como queremos uma SOMA dos totais iremos utilizar a função iterante para soma chamada SUMX.


E agora sim, tanto linha a linha quanto no total está correto o nosso valor.


E é isso pessoal, é importante conhecer a teoria para entender o que na prática está ocorrendo com nossos cálculos.

E se quiser conhecer mais sobre funções dax, temos o nosso guia dax em www.guiadax.com.br onde você pode consultar videos que existem em português da maioria das funções DAX.

Grande abraço e até a próxima



Comentários

  1. Perfect, ótimo material e didática. Abs

    ResponderExcluir
  2. Excelente dica! E quando temos o valor de tabela(index 100), o desconto e o acrescimo aplicado? Qual seria a forma mais correta de fazer a conta? utilizar a CURRENCY no valor de tabela e no valor final? Um abs!

    ResponderExcluir
  3. "Ow animal... Claro que têm" kkkkkk, ótimo material Rafael, aguardo os próximos.
    abs

    ResponderExcluir

Postar um comentário