Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
Not applicable

Filtrar registros.

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

Tags (1)
1 Solution

Accepted Solutions
fernando_tonial
Valued Contributor

Re: Filtrar registros.

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.

8 Replies

Re: Filtrar registros.

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.

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

fernando_tonial
Valued Contributor

Re: Filtrar registros.

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.

Not applicable

Re: Filtrar registros.

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.

Not applicable

Re: Filtrar registros.

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

Not applicable

Re: Filtrar registros.

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.

fernando_tonial
Valued Contributor

Re: Filtrar registros.

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.

Not applicable

Re: Filtrar registros.

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.