Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
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