Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
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
Luminary Alumni
Luminary Alumni

É 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

View solution in original post

10 Replies
Thiago_Justen_

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_

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
Luminary Alumni
Luminary Alumni

É 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

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