Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
marcelomachado
Contributor III
Contributor III

Erro subtotal em tabela dinâmica

Bom dia,

Algo que não consigo explicar está ocorrendo na subtotalização de uma coluna numa planilha dinâmica no Qlikview, infelizmente não tenho como postar o qvd pois a empresa não permite, abaixo uma imagem do problema. O interessante é que ocorre somente numa coluna e é erro de somatória, alguém já passou por isso e conseguiu solucionar este problema? aguardo auxilio.

Abraço!

Labels (2)
1 Solution

Accepted Solutions
nicolett_yuri

Marcelo, a tabela dinâmica não possui opção de somatório de linhas ou média de linhas, a tabela dinâmica, em seu total, refaz o cálculo sem considerar nenhuma das dimensões e por essa razão o seu número de total não é o que deseja.

Para "forçar" esse somatório, você pode utilizar do recurso de Dimensionality ou Aggr. Note que os dois podem prejudicar a performance de seu gráfico.

Exemplo de expressão para o somatório de linhas:

SUM( AGGR( If((sum({$<Ano={$(=Max(Ano))}>} Quant)/sum({$<Ano={$(=Max(Ano))}>} [COTA ANUAL])) >= 1,(sum({$<Ano={$(=Max(Ano))}>}VL_PREMIO_IND)),0.00), COLUNA_CAMPANHA, COLUNA_REGIONAL, COLUNA_PRODUTO))

Apenas troque as colunas pelos respectivos nomes de seu modelo.

View solution in original post

9 Replies
jonas_rezende
Specialist
Specialist

Marcelo Machado.

A minha sugestão é:verificar se os dados: 1. Produto 1, 2. Produto 2, 4. Produto 4 e 5. Produto 5, em Produtos_Campanhas, tem alguma linha duplicada ou a mais, na origem (qvd), fazendo com que some mais de uma vez o valor  1.125,00 em Prêmio.

Os objetos Tabela e Texto poderão ajudá-lo nessa confirmação.

Espero que isso ajude!

joao_sp_campina
Creator II
Creator II

Envie um qvw de teste para gente tentar de ajudar.

João Carlos Ferreira

nicolett_yuri

Disponibilize a formula dessas colunas

marcelomachado
Contributor III
Contributor III
Author

Olá João, infelizmente não posso enviar o qvw, seria importante más não estou autorizado.

Grato,

marcelomachado
Contributor III
Contributor III
Author

Olá Yuri,

A fórmula é a seguinte:

If((sum({$<Ano={$(=Max(Ano))}>} Quant)/sum({$<Ano={$(=Max(Ano))}>} [COTA ANUAL])) >= 1,(sum({$<Ano={$(=Max(Ano))}>}VL_PREMIO_IND)),0.00)

Uma condicional onde o Consultor atingindo 100% ou mais da meta no determinado produto ele ganha o prêmio naquele produto, na tabela isto funciona corretamente como pode perceber na imagem enviada, o problema é na totalização desta coluna que totaliza incorretamente.

nicolett_yuri

Marcelo, a tabela dinâmica não possui opção de somatório de linhas ou média de linhas, a tabela dinâmica, em seu total, refaz o cálculo sem considerar nenhuma das dimensões e por essa razão o seu número de total não é o que deseja.

Para "forçar" esse somatório, você pode utilizar do recurso de Dimensionality ou Aggr. Note que os dois podem prejudicar a performance de seu gráfico.

Exemplo de expressão para o somatório de linhas:

SUM( AGGR( If((sum({$<Ano={$(=Max(Ano))}>} Quant)/sum({$<Ano={$(=Max(Ano))}>} [COTA ANUAL])) >= 1,(sum({$<Ano={$(=Max(Ano))}>}VL_PREMIO_IND)),0.00), COLUNA_CAMPANHA, COLUNA_REGIONAL, COLUNA_PRODUTO))

Apenas troque as colunas pelos respectivos nomes de seu modelo.

marcelomachado
Contributor III
Contributor III
Author

Perfeito Yuri, funcionou como deveria!

Muito obrigado pela ajuda.

nicolett_yuri

No post anterior esqueci de explicar, mas o SUM e AGGR vai forçar a tabela dinâmica fazer o cálculo sempre considerar cada uma das dimensões e somando os resultados, assim o seu total passa a ser o Somatório das linhas.

Caso queira a média, então troque por AVG, o maior número, troque por MAX, etc...

pauloandre
Creator II
Creator II

nicolett.yuri,

possuo na tabela abaixo a seguinte expressão:

if(

(Count(DISTINCT CLIE_NR_MATRICULA) / first(Count(DISTINCT CLIE_NR_MATRICULA)))>0,

(Count(DISTINCT CLIE_NR_MATRICULA) / first(Count(DISTINCT CLIE_NR_MATRICULA))), Null())

e preciso que seja apresentado na linha de Total a média dos valores da coluna. Tentei usar o

Avg(Aggr(if(

(Count(DISTINCT CLIE_NR_MATRICULA) / first(Count(DISTINCT CLIE_NR_MATRICULA)))>0,

(Count(DISTINCT CLIE_NR_MATRICULA) / first(Count(DISTINCT CLIE_NR_MATRICULA))), Null()), Dimesao1, Dimensao2))

e não tive sucesso.

Poderia me ajudar?

tabdinamica.JPG