12 Replies Latest reply: Oct 28, 2016 1:43 PM by Rodrigo Borella RSS

    Set Analysis - Quantidade baseada em um campo

    Rodrigo Borella

      Ola pessoal.

       

      Tenho uma situação em que, clicando em um botão,  preciso mostrar na tabela a quantidade de estoque baseado somente na data de ultima entrada de cada produto:

       

       

      Criei um set Analysis com a instrução :

      IF(GetFieldSelections(OPCAO)='Qtd.Ult.Entrada', num(round(Sum({$<DT_ULT_ENTRADA>}QT_ESTOQUE))

      Isto está correto? Como faria para or exemplo, ter o max(DT_ULT_ENTRADA) para a qtde de estoque?

        • Re: Set Analysis - Quantidade baseada em um campo
          mauro ponte

          Rodrigo,

           

          Pelo que estou vendo voce está utilizando botoes, e quando clicar no botao Qtde.Ult.Entrada mostrar somente o que voce deseja.

           

          Se for isso o que voce deve fazer é criar uma variavel, e utilizar o disparador do botao para passar um valor para essa variavel, e na condição da expressão voce comparar o valor da variavel. o getfieldselections voce utiliza quando seleciona um valor em uma lista com um campo.

           

          Com relação o set analisys, do jeito que você colocou nao está comparando a data com nada. Para comparar com a maior data utilize:

          {<DT_ULT_ENTRADA={"$(=max(DT_ULT_ENTRADA))"}>}

           

          Espero ter ajudado.

           

          Se voce puder disponibilizar o QVW talvez possa ajudar mais.

          • Re: Set Analysis - Quantidade baseada em um campo
            Rodrigo Borella

            Oi MAuro.

             

            Sim, sua lógica esta correta. Estou utilizando botões e quando carrego este App, passo como parametro os nomes, assim, criei uma métrica que utiliza que me retorna os valores de acordo com o botão escolhido. Todos os outras opções estão ok, com a exceção do que apontei.

             

            Ex:

            IF(GetFieldSelections(OPCAO)='Quantidade',num(round(Sum(QT_ESTOQUE)- sum(QT_PEND_VENDA))),

            IF(GetFieldSelections(OPCAO)='Valor', money((QT_ESTOQUE - QT_PEND_VENDA)*VL_CUSTO_ULT_ENT), //,'R$ #.##0,00;-R$ #.##0,00'),

            IF(GetFieldSelections(OPCAO)='Pedidos',num(round(SUM(QT_PEDIDO))),

            IF(GetFieldSelections(OPCAO)='Dias Estoque',num(round(Sum(QT_ESTOQUE/QT_SAIDA_MEDIA))),

            IF(GetFieldSelections(OPCAO)='Estoque Padrao', num(round(Sum(QT_ESTOQUE_PADRAO))),

            IF(GetFieldSelections(OPCAO)='Estoque >= 60 dias',if(num(round(Sum(QT_ESTOQUE/QT_SAIDA_MEDIA)))>=60,num(round(Sum(QT_ESTOQUE/QT_SAIDA_MEDIA))),0),

            IF(GetFieldSelections(OPCAO)='Saida Media',num(Sum(QT_SAIDA_MEDIA)),

            IF(GetFieldSelections(OPCAO)='Dt.Ult.Entrada',Date(DT_ULT_ENTRADA_F),

             

            //------

            IF(GetFieldSelections(OPCAO)='Qtd.Ult.Entrada', num(round(Sum({<DT_ULT_ENTRADA={"$(=max(DT_ULT_ENTRADA))"}>}QT_ESTOQUE)))

            //-----

            Segui sua instrução, porém os valores ficaram todos zerados, e sei isto esta incorreto por que todos os produtos possuem data de ultima entrada. Pode me dizer se montei corretamente a sintaxe?

            • Re: Set Analysis - Quantidade baseada em um campo
              Rodrigo Borella

              Oi Mauro.

               

              Estou utilizando o QlikSense e infelizmente, pela política da empresa, não posso disponibilizar qualquer tipo de arquivo sem um processo longo e burocrático de autorização.

              Por isso vou tentar ser um pouco mais claro para ver se consegue me ajudar:

               

              Preciso obter em uma metrica, a quantidade total de produtos em estoque (QT_ESTOQUE) somente recebidos na ultima data de entrada(DT_ULT_ENTRADA).

              Se fizer simplesmente o Sum(QT_ESTOQUE), terei o resultado de todo meu volume de estoque, ao invés apenas das ultimas entradas, baseada na data que mencionei.

              Imaginei em fazer o set analysis, mas conforme me orientou, criando desta forma:

              num(round(Sum({<DT_ULT_ENTRADA={"$(=max(DT_ULT_ENTRADA))"}>}QT_ESTOQUE))), não funcionou. Existe algum outro modo?

               

              Espero que eu tenha explicado melhor.

              Obrigado pela ajuda.

              • Re: Set Analysis - Quantidade baseada em um campo
                Thiago Gonçalo

                Rodrigo, bom dia!

                 

                Acredito que o melhor jeito seja criando uma tabela auxiliar no script pegando sempre a ultima data de estoque por produto e depois aplicando essa tabela no gráfico em questão utilizando a variavel..

                 

                Digo isso, por que mesmo que você use uma expressão para pegar a data máxima de cada produto e passar essas datas para a expressão, pode ser que tenha outros produtos que também tenham estoque em alguma dessas datas , e então seu gráfico vai realizar ma soma errada, abaixo um exemplo..

                 

                imagine a tabela

                 

                produto --      data --           estoque        

                AAA        10/12/2015          4

                AAA        01/01/2016          2

                BBB        01/01/2016          2

                BBB        05/01/2016          5

                CCC       07/01/2016          3

                CCC       08/01/2016          4

                 

                agora, criando uma expressão que pegue a data máxima de cada produto, ele passaria os seguintes parâmetros.

                 

                sum( DATA = { expressão que gera a data máxima de cada produto.. sendo eles  01/01/2016 - 05/01/2016 -  08/01/2016 }  QUANTIDADE...

                 

                pelo fato do seu produto BBB ter estoque tambem no dia 01/01/2016... o gráfico vai somar os valores e vai ficar assim..

                 

                PRODUTO - QTDE

                AAA     2

                BBB 7

                CCC 4

                ......

                Então como dito acima o melhor seria criar uma tabela auxiliar, pegando o ultimo saldo de cada produto.. Sendo mais ou menos assim

                 

                AUXILIAR_TEMP

                LOAD

                PRODUTO,

                MAX(DATA) AS DATA

                Resident TABELAESTOQUE

                GROUP BY PRODUTO;

                 

                ESSA PRIMEIRA TABELA VAI GERAR TODOS OS PRODUTOS E SUAS RESPECTIVAS DATAS MAXIMAS

                 

                DEPOIS É SÓ VC FAZER UM LEFT JOIN COM A QUANTIDADE

                 

                LEFT JOIN (AUXILIAR TEMP)

                PRODUTO,

                SUM(QUANTIDADE) AS QUANTIDADE,

                DATA

                GROUP BY PRODUTO,DATA;

                 

                ELE IRA ADICIONAR NA TABELA AUXILIAR_TEMP APENAS AS QUANTIDADES PARA OS PRODUTOS/DATAS QUE TENHAM NA TABELA AUXILIAR..

                 

                TENDO A TABELA MONTADA, VOCÊ PODE NAQUELE QUE QUANDO VC CLICAR NO BOTÃO, A EXPRESSÃO DO GRÁFICO SEJA FEITA PELOS CAMPOS DA TABELA AUXILIAR.

                 

                QUALQUER DÚVIDA À DISPOSIÇÃO.

                 

                THIAGO GONÇALO

                • Re: Set Analysis - Quantidade baseada em um campo
                  Rodrigo Borella

                  Estou tentando encerrar este fórum mas não aparece a opção de "Resposta Correta" alguém sabe como proceder?

                  • Re: Set Analysis - Quantidade baseada em um campo
                    Rodrigo Borella

                    Pois é, so aparece "Marcar como útil"