Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
MarcoARaymundo
Creator III
Creator III

Set analysis como IF

Olá!

Criei uma expressão com IF em uma tabela simples:

If(WildMatch(Campo_1,'*FUL*','CRT*') > 0 and Campo_1<>Campo_2,Sum(VALOR))

Com set analysis como ficaria?

Tentei:

Sum({<Campo_1={'*FUL*','CRT*'}>-<Campo_1-={"$(=Campo_2)"}>} VALOR)

Mas só trouxe o valores referentes a primeira parte Campo_1={'*FUL*','CRT*'}


Alguém tem alguma dica?

Obrigado!

Labels (2)
1 Solution

Accepted Solutions
pablolabbe
Partner Ambassador
Partner Ambassador

É possível fazer esta comparação via set analysis através da pesquisa avançada, mas você precisa usar um campo que defina a ocorrência unica para estas datas. Veja o seguinte exemplo:

Suponha que exista uma tabela de pedidos com os campos "Numero Pedido" ,  "Data Pedido" e "Data Entrega".  e você quer pesquisar todos os pedidos que não foram entregues no mesmo dia da data do pedido. O campo numero pedido é a chave unica que defina as ocorrencias unicas de cada data.

O set analysis fica assim:

sum ( {< "Numero Pedido"  = {"=[Data Pedido] <> [Data Entrega]"} >}  VALOR)

Caso você não tenha um campo chave que defina ocorrencias unicas das datas dentro do seu modelo de dados, ai você tem que usar o IF dentro do SUM e não fora.

sum ( {<Campo_1={'*FUL*','CRT*'}>} if ([Data Pedido] <> [Data Entrega], VALOR)) 

Saudações,

Pablo

Did you find a solution to your question? Mark the solution as accepted and if you found it useful, press the like button! | Follow me on Linkedin

View solution in original post

10 Replies
Thiago_Justen_
MVP
MVP

Talvez isso:

Sum({<Campo_1={'*FUL*','CRT*'}>}If(Campo_1 <>Campo_2, VALOR))

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
MarcoARaymundo
Creator III
Creator III
Author

Thiago muito obrigado pela resposta, mas, eu já faço assim como você falou, eu procuro uma implementação via set analysis.

Thiago_Justen_
MVP
MVP

Entendo Marco, mas veja:

O Set Analysis não é capaz de fazer o que queres pois ele não "trabalha" dessa forma. A expressão no set Analysis é avaliada uma vez para todo o gráfico e não célula por célula.

Pro que você precisa não há maneira de fazer via SA.

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
pablolabbe
Partner Ambassador
Partner Ambassador

É possível fazer esta comparação via set analysis através da pesquisa avançada, mas você precisa usar um campo que defina a ocorrência unica para estas datas. Veja o seguinte exemplo:

Suponha que exista uma tabela de pedidos com os campos "Numero Pedido" ,  "Data Pedido" e "Data Entrega".  e você quer pesquisar todos os pedidos que não foram entregues no mesmo dia da data do pedido. O campo numero pedido é a chave unica que defina as ocorrencias unicas de cada data.

O set analysis fica assim:

sum ( {< "Numero Pedido"  = {"=[Data Pedido] <> [Data Entrega]"} >}  VALOR)

Caso você não tenha um campo chave que defina ocorrencias unicas das datas dentro do seu modelo de dados, ai você tem que usar o IF dentro do SUM e não fora.

sum ( {<Campo_1={'*FUL*','CRT*'}>} if ([Data Pedido] <> [Data Entrega], VALOR)) 

Saudações,

Pablo

Did you find a solution to your question? Mark the solution as accepted and if you found it useful, press the like button! | Follow me on Linkedin
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Marco Antonio,

eu não entendi uma coisa....

O Campo_1 queres = '*FUL*','CRT*'

e o Campo_2 tem que ser diferente do Campo_1, portanto Campo_2 <> '*FUL*','CRT*' ,  isto?


Então não seria tipo abaixo:


Sum( {< Campo_1={"*FUL*','CRT*"},Campo_2-={"*FUL*','CRT*"} >} VALOR)


*** PS : Teria que usar aspas duplas e não simples no Set analysis pois é tipo um like.....


https://community.qlik.com/blogs/qlikviewdesignblog/2017/09/11/quotes-in-set-analysis

furtado@farolbi.com.br
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

pensando melhor

Sum( {< Campo_1={"*FUL*"},Campo_2-={"*FUL*"} >} VALOR)

+

Sum( {< Campo_1={"CRT*"},Campo_2-={"CRT*"} >} VALOR)


furtado@farolbi.com.br
MarcoARaymundo
Creator III
Creator III
Author

Alessandro no exemplo creio que não ficou muito claro, mas, no meu modelo de dados tenho duas tabelas ligadas por uma chave, a tabela 1 é a versão atualizada da tabela 2, onde preciso identificar as mudanças entre a 1 e a 2, ou seja, todos que estavam na tabela 2 continuam iguais na tabela 1? Na Tabela 1 x Tabela 2 quais os novos?

Por isso não é só comparar se o campos são diferentes de CRT e FUL, preciso saber para onde foram.

A solução do Pablo é a que eu descobri no fim de semana e que resolve meu problema;

sum ( {< "Numero Pedido"  = {"=[Data Pedido] <> [Data Entrega]"} >}  VALOR)

Obrigado!

Marco

cristianozilz
Partner - Contributor III
Partner - Contributor III

Bom dia Marco,

Veja se é isso que você precisa.

Abraços!

MarcoARaymundo
Creator III
Creator III
Author

Cristiano eu estava procurando uma solução em set analysis.

A solução do Pablo resolveu o problema.

Muito obrigado!

Marco