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: 
paulinhok14
Creator
Creator

Condicional utilizando campo de outra tabela

Pessoal boa tarde,

Preciso fazer uma condicional utilizando como base dois campos e armazenar o resultado em um outro campo, porém, um dos meus campos está em uma tabela posterior que foi carregada através de uma consulta SQL à um banco Oracle.

Não consigo fazer um load resident em outra tabela para fazer isso pois perco os joins da modelagem.

Conseguem me ajudar? Segue um trecho do script para exemplo:

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

left join

po:

LOAD PO,

     PO_LINE,

     PO_TYPE as [Tipo PO],

     PO&'-'&PO_LINE&'-1' as Document,

     //aqui começa a condicional que preciso fazer, mas também utilizando o campo "Categ. Confirmação" da tabela de baixo

     if(PO_TYPE = 'ZRDA' or PO_TYPE = 'ZINA' or PO_TYPE = 'ZNNC' or PO_TYPE = 'ZRDC' or PO_TYPE = 'ZINC' or PO_TYPE = 'ZNNN' or PO_TYPE = 'ZNNA' or PO_TYPE = 'ZBNC' or PO_TYPE = 'ZRAR' or PO_TYPE = 'ZNAR' or PO_TYPE = 'ZBNA' or PO_TYPE = 'ZRDN' or PO_TYPE = 'ZNHA' or PO_TYPE = 'ZINN' , 'Compras',

      if(PO_TYPE = 'ZNMA' or PO_TYPE = 'ZIMA' or PO_TYPE = 'ZRIN','Reparo')) as [Classificação PO]

FROM

(qvd);

//where NOT Match(PO_TYPE,'ZNGS');

ODBC CONNECT32 TO [TS11;DBQ=TS11] (XUserId is OKJWTRNNGbXKXZVMSDAA, XPassword is DRfRVRNNGLLB);

left join

SQL SELECT

      "CONFIRM_CATEG" "Categ. Confirmação",

    "PURCHASE_ORDER",

    "LINE_ITEM",

    //concatenação de PO, linha e traço um para casar com Document

    "PURCHASE_ORDER" || '-' || "LINE_ITEM" || '-1' "Document"

FROM "CKF_USER"."CKF_SPR_ZSURMM030";

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Dentro da condicional que está na tabela PO, eu queria adicionar a seguinte situação: if ([Categ. Confirmação] = 'CH' , 'Problema Site') as [Classificação PO], porém ele dá erro por não reconhecer o campo, como segue:

erro.png

Agradeço desde já!

Att,

Paulo.

Labels (2)
1 Solution

Accepted Solutions
paulinhok14
Creator
Creator
Author

E novamente obrigado pela sugestão, já estou utilizando o match, dessa maneira:

  if(match(PO_TYPE,'ZRDA','ZINA','ZNNC','ZRDC','ZINC','ZNNN','ZNNA','ZBNC','ZRAR','ZNAR','ZBNA','ZRDN','ZNHA','ZINN'),'Compras',

if(match(PO_TYPE,'ZNMA','ZIMA','ZRIN'),'Reparo',

if(match([Categ. Confirmação],'CH'),'Problema Site' ))) as [Classificação PO]


Uma dúvida: por se tratar de um script de leitura sequencial, não há problemas fazer essa condicional "antes" da carga do campo?

View solution in original post

9 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

faltou o   AS

"CONFIRM_CATEG" "Categ. Confirmação",




"CONFIRM_CATEG"  AS  "Categ. Confirmação",

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

ou a virgula se é outro campo

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

Paulo,

uma dica

ao invés de usar os ifs, poderias usar o match como uma opção

     if(match(PO_TYPE,'ZRDA','ZINA','ZNNC','ZRDC','ZINC','ZNNN','ZNNA','ZBNC','ZRAR','ZNAR','ZBNA','ZRDN','ZNHA','ZINN'),'Compras',

     if(match(PO_TYPE,'ZNMA','ZIMA','ZRIN'),'Reparo')) as [Classificação PO]

furtado@farolbi.com.br
Clever_Anjos
Employee
Employee

ou um mapa

Thiago_Justen_

Além das dicas acima, você pode optar pelo Lookup(). Evidentemente esta função é menos performática do que o Mapping sugerido pelo cleveranjos‌.

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

Alessandro, obrigado pela resposta e pela sugestão!

A respeito de faltar um AS, na minha concepção não seria necessário pois é uma consulta SQL, e a nomenclatura poderia ser feita dessa maneira, o campo está sendo nomeando "Categ. Confirmação" normalmente.

Porém para desencargo de consciência coloquei o AS, nada mudou.

Ele continua não encontrando o campo.

paulinhok14
Creator
Creator
Author

E novamente obrigado pela sugestão, já estou utilizando o match, dessa maneira:

  if(match(PO_TYPE,'ZRDA','ZINA','ZNNC','ZRDC','ZINC','ZNNN','ZNNA','ZBNC','ZRAR','ZNAR','ZBNA','ZRDN','ZNHA','ZINN'),'Compras',

if(match(PO_TYPE,'ZNMA','ZIMA','ZRIN'),'Reparo',

if(match([Categ. Confirmação],'CH'),'Problema Site' ))) as [Classificação PO]


Uma dúvida: por se tratar de um script de leitura sequencial, não há problemas fazer essa condicional "antes" da carga do campo?

paulinhok14
Creator
Creator
Author

Clever, ainda não consegui fazer dar certo, pode me ajudar?

paulinhok14
Creator
Creator
Author

Acabei utilizando o match Thiago, obrigado pela resposta!

Porém ainda não consegui resolver o problema de achar o campo.