Traduzido daqui : autorizado pelo Hic

O total em um gráfico não é a soma das linhas individuais em um gráfico.

Ao invés disso, o total e os subtotais são calculados utilizando-se a expressão, mas em um subconjunto maior dos dados que data linha em especial.

Pode ser que os dois métodos resultem nos mesmos números, mas algumas vezes existe uma diferença muito grande.

Um exemplo disso é quando você utiliza uma função não-linear, como por exemplo Count(Distinct ...) como expressão. O exemplo abaixo demonstra bem isso

A origem dos dados (esquerda) relaciona um país para cada estado, e se você contar o número de países distintos para cada estado utilizando Count(distinct Country) você terá o gráfico da direita.

Cada estado pertence a apenas um país e o número total de países é 2, então o gráfico possui 4 linhas.

 

Um outro caso é quando você possui uma relação muitos-para-muitos nos seus dados.

No exemplo abaixo, existem três produtos, cada um com um volume de vendas. Cada produto pode pertencer a vários grupos de produtos então as vendas totais para cada grupo de produtos não pode ser somado: o total será menor que a soma das linhas individuais, já que existe uma sobreposição entre os grupos de produtos.

A sumarização é executada na tabela fato e não no gráfico.

Uma outra maneira de descrever isso é dizer que uma nota de dólar pertence a ambos grupos de produtos e seria contada duas vezes se você apenas somar as linhas. Em ambos casos, Qlik irá mostrar os valores corretos para os dados apresentados. Apenas somar as linhas seria incorreto

Então, como isso afeta você como um desenvolvedor de aplicação?

Normalmente, não muito.

Mas é importante ficar atento e eu (HIC) sugiro fazer o seguinte:

  • Quando você constrói sua expressão você deve ficar concentrado na linha de totalização. Normalmente, a expressão estará correta também para as linhas individuais.
  • Sempre use funções de agregação . Isso irá garantir que o Qlik seja capaz de calcular o valor corretamente.
  • Se você quiser uma média na linha de totalização, você deveria dividir seu valor por Count(distinct <Dim>). Fazendo assim, tanto a totalização quanto os valores por linha (onde o contador = 1) ficarão corretos. Exemplo
         Sum( Amount ) / Count( distinct Customer )
  • Nos casos que você quiser mostrar algo completamente diferente na linha de total, você deveria avaliar a função Dimensionality()  que retorna 0, 1, 2, …  dependendo do nível de agregação do seu gráfico (total, subtotal ou detalhe). Exemplo
          If( Dimensionality() = 0, <Total line expression>, <Individual line expression> )

Mas e se você quiser que a o total seja a soma das linhas? Eu não quero que a expressão seja calculada sobre o conjunto completo dos dados, mas a soma das linhas. Como fazer? Existem duas maneiras de fazer isso. A primeira é usar a função Aggr() na sua expressão

          Sum( Aggr( <Original expression> , <Dimension> ) )

Isso funciona em todos os objetos. Para uma Gráfico Tabela simples, você tem acesso à uma funcionalidade na aba Expressões que permite a você definir como deve ser feita a totalização

Configurando como acima, "Soma das Linhas" mudará o comportamento do gráfico para exatamente o que diz: a soma das linhas HIC

 

Link : https://www.clever.com.br/totais-em-graficos/