Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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:
Sum( Amount ) / Count( distinct Customer )
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