Qlik Community

Qlik Brasil

Announcements
BI & Data Trends 2021. Discover the top 10 trends emerging in today. Join us on Dec. 8th REGISTER
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
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
Highlighted
Creator
Creator

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
Highlighted
MVP & Luminary
MVP & Luminary

faltou o   AS

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




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

furtado@farolbi.com.br
Highlighted
MVP & Luminary
MVP & Luminary

ou a virgula se é outro campo

furtado@farolbi.com.br
Highlighted
MVP & Luminary
MVP & Luminary

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
Highlighted
Employee
Employee

ou um mapa

Highlighted
Specialist III
Specialist III

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
Highlighted
Creator
Creator

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.

Highlighted
Creator
Creator

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

Highlighted
Creator
Creator

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

Highlighted
Creator
Creator

Acabei utilizando o match Thiago, obrigado pela resposta!

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