Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
luiz_damascena
Contributor III
Contributor III

Subtotal em tabela dinâmica somando errado.

Tenho uma tabela dinâmica, com três dimensões (pais, estado, cidade) e três expressões (vendas, entregas, pendentes).

A expressão "pendentes" é uma fórmula: if(entregas > vendas, 0, Ceil((vendas - entregas),1))

Por hipóteses, três linhas;

na primeira, pendente=10;

na segunda, pendente=0 (entregas é maior que vendas, sem a fórmula, o resultado seria -5);

na terceira, pendente = 20.

A exibição de subtotais está ativada; a soma deveria ser 30 (10 + 0 + 20). Mas apura 25 (10 - 5 + 20). Porque?

Tentei algumas combinações tentando usar AGGR na fórmula, mas sem sucesso.

Grato desde já.

LC

1 Solution

Accepted Solutions
luiz_damascena
Contributor III
Contributor III
Author

Solução, dada pelo nosso colega Sunny Talwar, da comunidade internacional:

Sum(Aggr(

    RangeMax(

          RangeSum(

              Count({<num_item_egestao = {2137,92137,2138,92138,2139,92139}>} processo_egestao),

              Count({<num_item_egestao = {2142,92142}>} processo_egestao),

              -Count({<num_item_egestao = {2152,92152}>} processo_egestao),

              -Count({<num_item_egestao = {2192,92192}>} processo_egestao),

              -Count({<num_item_egestao = {2195,92195}>} processo_egestao)

          ),

    0)

, orgao, juiz, gabinete))

View solution in original post

7 Replies
Thiago_Justen_

Luiz,

Teste seu if desse jeito e verifique se o resultado se altera conforme desejado:

if(entregas > vendas, 0, 1)

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
Thiago_Justen_

A função Ceil arredonda o valor de entrada para o múltiplo mais próximo definido no step. No seu caso suponho algo desse tipo:

Vendas = 5

Entregas=10

Ceil(5-10,1) = -5, já que o múltiplo de 1 mais próximo é o próprio -5

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
pablolabbe
Luminary Alumni
Luminary Alumni

Neste caso o somatoria vai ficar errado mesmo, por que ele tenta aplicar a mesma lógica do IF para cada subtotal.

A solução neste caso é usar AGGR neste formato:

sum(aggr(if(sum(entregas) > sum(vendas), 0, Ceil((sum(vendas) - sum(entregas)),1)),pais,estado,cidade))

Era assim que você tinha utilizado o AGGR ?

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Luiz;

Já tentou incluir a fórmula das métricas em tempo de script?

A aplicação teria expressões mais simples e métricas já processados.

Mas tem que ver a questão da dinâmica dos filtros se atenderia...

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
luiz_damascena
Contributor III
Contributor III
Author

Atualizando esta questão, pois ainda estou com o problema...

Tenho uma tabela dinâmica, com três dimensões (orgao, juiz, gabinete) e oito expressões (Distribuídos, Redistribuídos, Restituídos, Dist Líquida, Em Sessão, Monocrática, Solucionados, Taxa Julg e Faltam).

Distribuídos é "=Count({<num_item_egestao={2137,92137,2138,92138,2139,92139}>} processo_egestao)"

Redistribuídos é "=Count({<num_item_egestao={2142,92142}>} processo_egestao)"

Restituídos é "=Count({<num_item_egestao={2152,92152}>} processo_egestao)"

Dist Líquida é "Distribuídos + Redistribuídos - Restituídos"

Em Sessão é "=Count({<num_item_egestao={2192,92192}>} processo_egestao)"

Monocrática é "=Count({<num_item_egestao={2195,92195}>} processo_egestao)"

Solucionados é "  "Em Sessão" + Monocrática"

Taxa Julg é "if("Dist Líquida" > 0, (Solucionados / "Dist Líquida"),0)"

Faltam é "if("Dist Líquida" > Solucionados, "Dist Líquida" - Solucionados, 0)"

Meu problema é na coluna Faltam. Na verdade, na soma dela.

Por hipótese,

linha 1: Dist Líquida = 2, Solucionados = 0, Faltam = 2

linha 2: Dist Líquida = 134, Solucionados = 88, Faltam = 46

linha 3: Dist Líquida = 0, Solucionados = 1, Faltam = 0 (Solucionado > Dist Líquida, resultado 0.)


A marcação "Mostrar Subtotais" está marcada para as três dimensões.


Deveria dar 48 (2 + 46 +0), mas a linha Total dá 47!


Ele não está somando a coluna Faltam. Ele está recalculando!

Dist Líquida = 136 (2+134+0), Solucionados 89 (0+88+1). 47!


Mas eu preciso que some a coluna Faltam (e não recalcule a linha), pois há uma fórmula nela - quando negativo, 0 é atribuído como resultado.


Como resolver?


Grato por qualquer ajuda ou esclarecimento.


LC

luiz_damascena
Contributor III
Contributor III
Author

Solução, dada pelo nosso colega Sunny Talwar, da comunidade internacional:

Sum(Aggr(

    RangeMax(

          RangeSum(

              Count({<num_item_egestao = {2137,92137,2138,92138,2139,92139}>} processo_egestao),

              Count({<num_item_egestao = {2142,92142}>} processo_egestao),

              -Count({<num_item_egestao = {2152,92152}>} processo_egestao),

              -Count({<num_item_egestao = {2192,92192}>} processo_egestao),

              -Count({<num_item_egestao = {2195,92195}>} processo_egestao)

          ),

    0)

, orgao, juiz, gabinete))

Thiago_Justen_

Boa Luiz! Muito obrigado por compartilhar a solução.

Abs e Sucesso!!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago