Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia Comunidade!!!
Fiz a programação do campo acumulado item na expressão:
( =if(RangeSum(above(TOTAL Column(11),0,NoOfRows(TOTAL))) > 100,'100,00',RangeSum(above(TOTAL Column(11),0,NoOfRows(TOTAL))))) ,
Só que comecei a ter um problema no acesso ao documento, tanto no Qlikdesktopestao como pelo Access Point, estao muito demorado para abrir e no Servidor a CPU vai a 100%.
Então parti para fazer no script, só que estou com dificuldades de ajustar isso porque são 5 campos que entram na soma/multiplicação/subtração para chegar no percentual que preciso para acumular, esses campos vem de 4 tabelas, estou tentando fazer o Concatenate para juntar na mesma informação mas não estou conseguindo ajustar.
Tenho uma coluna aonde eu chego no percentual do item:
meus campos são esses e essas são as tabelas:
=if(sum([Ven. Ult. 365 dias]) + sum([QUANTIDADE_IND]) - sum(QUANTIDADE)< 0,0,
(sum([Ven. Ult. 365 dias]) + sum([QUANTIDADE_IND]) - sum(QUANTIDADE)) / (sum( TOTAL {1}[total de vendas geral]))* 100)
[Ven. Ult. 365 dias]: vem da tabela: [Sugestao_Compra]
[total de vendas]: vem da tabela: [Sugestao_Compra]
[QUANTIDADE]: vem da tabela: [Devoluções]
[QUANTIDADE_IND]: vem da tabela:[Industrializações]
Depois criei a coluna percentual item acumulado com essa expressão: ( muito demorado pra abrir o documento depois de colocada)
( =if(RangeSum(above(TOTAL Column(11),0,NoOfRows(TOTAL))) > 100,'100,00',RangeSum(above(TOTAL Column(11),0,NoOfRows(TOTAL))))) ,
A dimensão que liga é o campo ITEM_ESTOQUE
tentei seguir teu o exemplo do artigo do Mario Soares : Incluindo saldo/acumulado via Script ou via Expressão
mas não estou me achando, Agradeço a ajuda.
Clever,
Voltou a ficar em 100% a CPU em todas as vezes que abro.
Mario,
Vou colocar abaixo como fiz, eu nao tenho campo de data.
Fiz via frond-end a parte da divisão como voce sugeriu
O meu resultado na coluna foi o mesmo valor da column 11, ele nao fez o acumulado, fez a operação de soma e divisao
no frond-end coloquei o campo acumulado / (sum( TOTAL {1}[total de vendas geral]))* 100)
ele fez o percentual mas como escrevi igual a column 11, sem acumular, não sei aonde fiz o erro.
Tab_Temp_Compra:
//Sugestao_Compra
NoConcatenate Load
ITEM_ESTOQUE,
[Ven. Ult. 365 dias],
[total de vendas geral]
resident Sugestao_Compra;
Left Join
//Devolucoes
Load
ITEM_ESTOQUE,
QUANTIDADE
resident Devoluções;
Left Join
//Industrializacaes
Load
ITEM_ESTOQUE,
QUANTIDADE_IND
resident Industrializações;
Tab_Movimento:
NoConcatenate Load
ITEM_ESTOQUE,
Rangesum(
If( ITEM_ESTOQUE = Previous(ITEM_ESTOQUE),
If( Rangesum( [Ven. Ult. 365 dias], [QUANTIDADE_IND], -QUANTIDADE) < 0, 0 + Peek(acumulado),
Rangesum( [Ven. Ult. 365 dias], [QUANTIDADE_IND], -QUANTIDADE, Peek(acumulado) )
)
,If( Rangesum( [Ven. Ult. 365 dias], [QUANTIDADE_IND], -QUANTIDADE) < 0, 0,
Rangesum( [Ven. Ult. 365 dias], [QUANTIDADE_IND], -QUANTIDADE)
)
)
) As 'acumulado'
Resident Tab_Temp_Compra Order By ITEM_ESTOQUE Asc;
Drop Table Tab_Temp_Compra;
Amigo, precisa de uma definição de qual ordem deve acontecer o cálculo acumulado para cada linha do registro, para dar certo.
Pode postar um print da sua tabela como está no front-end?
Observe o resultado acumulado na ordem por produto/título e data por exemplo neste documento para entender a lógica;
Incluindo saldo/acumulado via Script ou via Expressão
a ordenação na tabela eu faço pelo campo: Total Geral( Vendas + Indus - Dev ), na parte de classificação ele esta por expressao decrescente: =sum([Ven. Ult. 365 dias]) + sum([QUANTIDADE_IND]) - sum(QUANTIDADE)
conforme o print da minha tabela, estou analisando o documento que voce enviou o link
Amigo, segue;
Tab_Temp_Compra1:
//Sugestao_Compra
NoConcatenate Load
ITEM_ESTOQUE,
[Ven. Ult. 365 dias],
[total de vendas]
From [Lib://QVD/Sugestao_Compra.QVD] (qvd);
Left Join
//Devolucoes
Load
ITEM_ESTOQUE,
QUANTIDADE
From [Lib://QVD/Devoluções.QVD] (qvd);
Left Join
//Industrializacaes
Load
ITEM_ESTOQUE,
QUANTIDADE_IND
From [Lib://QVD/Industrializações.QVD] (qvd);
Tab_Temp_Compra2:
NoConcatenate Load
ITEM_ESTOQUE,
RangeSum([Ven. Ult. 365 dias], [QUANTIDADE_IND], -QUANTIDADE) As 'Total Geral',
[Ven. Ult. 365 dias],
[total de vendas],
QUANTIDADE,
QUANTIDADE_IND
Resident Tab_Temp_Compra1;
Drop Table Tab_Temp_Compra1;
Tab_Movimento:
NoConcatenate Load
ITEM_ESTOQUE,
[Total Geral],
Rangesum(
If( ITEM_ESTOQUE = Previous(ITEM_ESTOQUE),
If( [Total Geral] < 0, Peek(Saldo), Rangesum( [Total Geral], Peek(Saldo) ) )
,If( [Total Geral] < 0, 0, [Total Geral] )
)
) As 'Saldo'
Resident Tab_Temp_Compra2 Order By ITEM_ESTOQUE, [Total Geral] Desc;
Drop Table Tab_Temp_Compra2;
Marcio,
da problemas ao abrir o documento ou o objeto?
Se for o documento, faz um teste, salva ele em uma aba em branco.....e abre para ver se ficou rápido......
Te agradeço a ajuda Alessandro.
Fiz o teste, da aba retirei apenas esses campos de acumulado que sao 2 e tenho 2 de curva que vai a mesma expressão do acumulado só que tem os IFs para mostrar conforme percentual as letras A, B, C.
Sem os campos o documento abre normalmente, muito rápido, a planilha também, fica super rápida. nem precisei deixar em branco a aba.
Mario,
Coloquei como você enviou acima, mas ele continua colocando o mesmo valor, não o acumulado.
Tab_Temp_Compra1:
//Sugestao_Compra
NoConcatenate Load
ITEM_ESTOQUE,
[Ven. Ult. 365 dias],
[total de vendas geral] as [total de vendas]
resident Sugestao_Compra;
Left Join
//Devolucoes
Load
ITEM_ESTOQUE,
QUANTIDADE
resident Devoluções;
Left Join
//Industrializacaes
Load
ITEM_ESTOQUE,
QUANTIDADE_IND
resident Industrializações;
Tab_Temp_Compra2:
NoConcatenate Load
ITEM_ESTOQUE,
RangeSum([Ven. Ult. 365 dias], [QUANTIDADE_IND], -QUANTIDADE) As 'Total Geral',
[Ven. Ult. 365 dias],
[total de vendas],
QUANTIDADE,
QUANTIDADE_IND
Resident Tab_Temp_Compra1;
Drop Table Tab_Temp_Compra1;
Tab_Movimento:
NoConcatenate Load
ITEM_ESTOQUE,
[Total Geral],
Rangesum(
If( ITEM_ESTOQUE = Previous(ITEM_ESTOQUE),
If( [Total Geral] < 0, Peek(Saldo), Rangesum( [Total Geral], Peek(Saldo) ) )
,If( [Total Geral] < 0, 0, [Total Geral] )
)
) As 'Saldo'
Resident Tab_Temp_Compra2 Order By ITEM_ESTOQUE, [Total Geral] Desc;
Drop Table Tab_Temp_Compra2;
Amigo, você diz que [Total Geral] está igual a [Saldo]?
Crie uma tabela com somente os atributos abaixo, como dimensão;
[ITEM_ESTOQUE], [Total Geral] e [Saldo]
E apresente um print do resultado.