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: 
taisregina
Contributor II
Contributor II

Problema com comando Pick

Bom dia, 

tenho varios campos e preciso juntar a informação e deixar a ultima que estiver completa
por ultimo e a que estiver vazio vai para outra ate ter informação.

EXEMPLO : Não tem informação no S3G, vai para S2G não tem informação no S1G vai para Result


Pick(Match(S3G,'PROC','PROC P','IMPR','EXT','DES','RENU','       '),
'ERRADO','ERRADO','CORRETO','CORRETO','CORRETO','CORRETO','INDETERMINADO'),

Pick(Match(S2G,'PROC','PROC P','IMPR','EXT','DES','RENU','      '),
'ERRADO','ERRADO','CORRETO','CORRETO','CORRETO','CORRETO','INDETERMINADO'),

Pick(Match(S1G,'PROC','PROC P','IMPR','EXT','DES','RENU','       '),
'ERRADO','ERRADO','CORRETO','CORRETO','CORRETO','CORRETO','INDETERMINADO'),

Pick(Match(RESULT,'005','002','004','007','001','003',' '),
'CORRETO','CORRETO','CORRETO','CORRETO','ERRADO','ERRADO','INDETERMINADO'),

 

O que esta acontecendo é que o comando esta pegando só o ultimo Pick.

1 Solution

Accepted Solutions
AndreFrencl
Contributor III
Contributor III

Ta , entao voce quer trocar um conteudo por outro.

tenta assim:

 

Mapping:
LOAD * Inline [

Original, Troca

PROC,ERRADO

PROC P,ERRADO

IMPR,CORRETO

EXT,CORRETO

DES,CORRETO

RENU,INDETERMINADO

];

 

no load, onde vc vai ler o campo S3G, coloque:

MapSubString('Mapping', S3G) as CAMPO_QUE_VOCE_QUER;

 

Esse script vai pegar o correspondente na tabelinha mapping  e substituir pelo valor que voce quer.

 

No caso deste,  voce pode criar um novo Mapping ou continuar com as opcoes na lista.

Pick(Match(RESULT,'005','002','004','007','001','003',' '),
'CORRETO','CORRETO','CORRETO','CORRETO','ERRADO','ERRADO','INDETERMINADO'),

 

Acho que agora vai, espero ajudar!

André

View solution in original post

7 Replies
AndreFrencl
Contributor III
Contributor III

Bom dia, tudo bem?

Experimenta mudar o codigo para:

if ( comando é verdadeiro, 

if ( vai pro proximo ...

))))) fecha os ifs

AS CAMPO.

 

Ja tentou assim?

 

abs 

 

André

 

taisregina
Contributor II
Contributor II
Author

obrigada pela pronta resposta, estou ha dois dias quebrando a cabeça com este comando pick, em outra formula bem parecida funcionou, poderia me dar exemplo deste IF com os campos exemplos ? Obrigada

taisregina
Contributor II
Contributor II
Author

obrigada pela pronta resposta, estou ha dois dias quebrando a cabeça com este comando pick, em outra formula bem parecida funcionou, poderia me dar exemplo deste IF com os campos exemplos ? Obrigada

AndreFrencl
Contributor III
Contributor III

Entao, 

Antes de me ajudar, me tira uma duvida. 

Voce quer:

se o campo S3G for 

'PROC','PROC P','IMPR','EXT','DES','RENU','    

troque cada um deles pelo respectivo abaixo
'ERRADO','ERRADO','CORRETO','CORRETO','CORRETO','CORRETO','INDETERMINADO'

OU assume só o nome "errado" ?

 

ou seja, vc quer trocar a sigla PROC por ERRADO?

taisregina
Contributor II
Contributor II
Author

Bom dia, Trocar PROC por ERRADO correto isso mesmo, caso SG3 esteja vazio ir para S2G e assim por diante, sabendo que SG1,SG2 e SG3 são campos de meu banco de dados.

AndreFrencl
Contributor III
Contributor III

Ta , entao voce quer trocar um conteudo por outro.

tenta assim:

 

Mapping:
LOAD * Inline [

Original, Troca

PROC,ERRADO

PROC P,ERRADO

IMPR,CORRETO

EXT,CORRETO

DES,CORRETO

RENU,INDETERMINADO

];

 

no load, onde vc vai ler o campo S3G, coloque:

MapSubString('Mapping', S3G) as CAMPO_QUE_VOCE_QUER;

 

Esse script vai pegar o correspondente na tabelinha mapping  e substituir pelo valor que voce quer.

 

No caso deste,  voce pode criar um novo Mapping ou continuar com as opcoes na lista.

Pick(Match(RESULT,'005','002','004','007','001','003',' '),
'CORRETO','CORRETO','CORRETO','CORRETO','ERRADO','ERRADO','INDETERMINADO'),

 

Acho que agora vai, espero ajudar!

André

taisregina
Contributor II
Contributor II
Author

não deu certo Mapping, vou tentar ser mais clara:

 

Pick(Match(CAMPO DA MINHA TABELA1,'REGISTRO05','REGISTRO02','REGISTRO04','REGISTRO007','REGISTRO01','REGISTRO003',' '),
'TESTE','TESTE','TESTE','TESTE','TESTE1','TESTE1','TESTE2')

Esse comando já funciona quero complementar ele com:

se no campo da minha tabela tiver vazio quero que va para o próximo registro

Pick(Match(CAMPO DA MINHA TABELA2,'REGISTRO05','REGISTRO02','REGISTRO04','REGISTRO007','REGISTRO01','REGISTRO003',' '),
'TESTE','TESTE','TESTE','TESTE','TESTE1','TESTE1','TESTE2')

Pick(Match(CAMPO DA MINHA TABELA3,'REGISTRO05','REGISTRO02','REGISTRO04','REGISTRO007','REGISTRO01','REGISTRO003',' '),
'TESTE','TESTE','TESTE','TESTE','TESTE1','TESTE1','TESTE2')

Pick(Match(CAMPO DA MINHA TABELA4,'REGISTRO05','REGISTRO02','REGISTRO04','REGISTRO007','REGISTRO01','REGISTRO003',' '),
'TESTE','TESTE','TESTE','TESTE','TESTE1','TESTE1','TESTE2')

as tabela