8 Replies Latest reply: Feb 23, 2015 12:43 PM by Marcos Santos RSS

    Filtrar registros.

    Marcos Santos

      Bom dia, estou com uma duvida sobre algo que me parece ser simples de resolver, tenho uma listagem de recursos de produtos, e  existem vários registros de recursos para cada produto, nessa tabela quero que caso o produto 'X' tiver o recurso 'Y' não traga nenhum registro desse produto as invés de não trazer apenas os registros que contém o recurso 'Y'.

      Na tabela abaixo estou filtrando o produto EM16, no caso ele tem o recurso 'GALV', o que quero é que caso o produto tenha esse

      recurso não traga nenhum registro do mesmo na tabela. Resumindo, se o produto EM16 tiver o recurso GALV, a tabela tem que ficar zerada. Qualquer duvida estou a disposição.

      Sem título.png

        • Re: Filtrar registros.
          Yuri Nicolett

          Marcos, você pode fazer isso de algumas maneiras:

           

          A primeira você removeria os registros dos produtos que possuem esse recurso, por exemplo:

           

          Produtos_Recurso_Galv:

          LOAD

          DISTINCT COD_PRODUTO

          RESIDENT TABELA

          WHERE COD_RECURSO = 'GALV'

           

          Produtos:

          LOAD

          COD,

          COD_PRODUTO,

          PRODUTO,

          COD_RECURSO (etc,etcetc...)

          RESIDENT TABELA2

          WHERE NOT Exists(COD_PRODUTO)

           

          A segunda você apenas incluir um FLAG na tabela indicador que esse produto não deve aparecer, desta forma você trata isso no gráfico.

           

           

          Produtos:

          LOAD

          COD,

          COD_PRODUTO,

          PRODUTO,

          COD_RECURSO (etc,etcetc...)

          RESIDENT TABELA2;

           

          LEFT JOIN

           

          LOAD

          DISTINCT COD_PRODUTO,

          'REMOVE' as FLG_REMOVE_PRODUTO

          RESIDENT TABELA

          WHERE COD_RECURSO = 'GALV'

            • Re: Filtrar registros.
              Yuri Nicolett

              Depois basta utilizar essa coluna "FLG_REMOVE_PRODUTO" para decidir se o produto será ou não utilizado.

              Fica mais fácil.

               

              Uma terceira maneira, sem nenhuma tratativa de script, é criar uma dimensão calculada com a regra

              if(COD_RECURSO = 'GALV', PRODUTO) e marcar a regra "Ocultar quando o valor for nulo".

            • Re: Filtrar registros.
              Fernando Tonial

              Olá,

               

              Você pode utilizar o Operador implícito da análise de conjunto E().

               

              Count({$<CodProd=E({1<CodRecurso={'GALV'}>} CodProd)>} CodProd)

               

              Don´t worry,

              Be Qlik.

               

              Tonial.

                • Re: Filtrar registros.
                  Marcos Santos

                  Fernando, não conheço Set Analysis ainda, porém inclui na minha tabela como dimensão o código que você me passou da seguinte forma:

                   

                  =Aggr(Count({$<CodProd=E({1<CodRecurso={'GALV', 'PT01'}>} CodProd)>} CodProd), CodProd)

                   

                  Depois marquei a opção ocultar valores nulos e ele deixou de trazer os produtos que tinham os recursos 'GALV' e 'PT01', agora só não tenho certeza se fiz da forma correta.

                  • Re: Filtrar registros.
                    Marcos Santos

                    Analisei melhor aqui o exemplo que você me mando e funcionou também, obrigado.

                    • Re: Filtrar registros.
                      Marcos Santos

                      Estava testando aqui e verifiquei que não está sendo possível filtrar as informações pelo código do produto, indiferente de eu clicar ou selecionar em um caixa de seleção ele fica como se estivesse travado, já pelas outras dimensões está filtrando normalmente.

                       

                      Obs: Resolvi utilizando um CodProd2  na tabela, ao invés do que está sendo utilizado na expressão.

                        • Re: Filtrar registros.
                          Fernando Tonial

                          Altere o identificador 1 por $.

                          No lugar de:

                          E({1<CodRecurso={'GALV', 'PT01'}>} CodProd)>}

                          Altere por:

                          E({$<CodRecurso={'GALV', 'PT01'}>} CodProd)>}

                           

                          e veja se funciona.

                           

                          Don´t worry,

                          Be Qlik.

                           

                          Tonial.

                            • Re: Filtrar registros.
                              Marcos Santos

                              Boa tarde, Fernando, não resolveu, mas isso não é problema pois utilizando um código auxiliar funcionou normalmente, outra coisa, caso eu quiser fazer o procedimento contrario, ou seja, mostrar apenas os produtos que não contenham os recursos GALV e PT01 como ficaria a sintaxe, ou teria que utilizar outro método? Obrigado, qualquer duvida estou a disposição.