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: 
marcio150972
Creator
Creator

acumulado via Script / percentual item

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, 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.


Labels (1)
49 Replies
marcio150972
Creator
Creator
Author

Clever,

Voltou a ficar em 100% a CPU em todas as vezes que abro.

marcio150972
Creator
Creator
Author

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; 

mario_sergio_ti
Partner - Specialist
Partner - Specialist

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

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
marcio150972
Creator
Creator
Author

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 linkSem título.png

mario_sergio_ti
Partner - Specialist
Partner - Specialist

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;

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

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......

furtado@farolbi.com.br
marcio150972
Creator
Creator
Author

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.

marcio150972
Creator
Creator
Author

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;

mario_sergio_ti
Partner - Specialist
Partner - Specialist

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.

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
marcio150972
Creator
Creator
Author

Sem título.png