Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
paulinhok14
Contributor

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.

1 Solution

Accepted Solutions
paulinhok14
Contributor

Re: Condicional utilizando campo de outra tabela

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?

9 Replies
MVP
MVP

Re: Condicional utilizando campo de outra tabela

faltou o   AS

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




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

MVP
MVP

Re: Condicional utilizando campo de outra tabela

ou a virgula se é outro campo

MVP
MVP

Re: Condicional utilizando campo de outra tabela

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]

Employee
Employee

Re: Condicional utilizando campo de outra tabela

ou um mapa

thiago_justen
Valued Contributor III

Re: Condicional utilizando campo de outra tabela

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
WhatsApp: 24 98152-1675
Skype: justen.thiago
paulinhok14
Contributor

Re: Condicional utilizando campo de outra tabela

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
Contributor

Re: Condicional utilizando campo de outra tabela

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
Contributor

Re: Condicional utilizando campo de outra tabela

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

paulinhok14
Contributor

Re: Condicional utilizando campo de outra tabela

Acabei utilizando o match Thiago, obrigado pela resposta!

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