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: 
nprospero
Contributor
Contributor

Conceito Not Exists

Boa tarde pessoal, por favor uma ajuda para "entender" o codigo abaixo.

O que eu preciso é o seguinte:

1-) Ler tabela A e quando for ler a tabela B, carregar da tabela B somente os registros que não existem na tabela A. 

2-) Alem disso gostaria de entender porque o código abaixo, somente funciona se os nomes das colunas das 2 tabelas forem idênticos.  Se tiver nomes de colunas diferentes o código não funciona.

3-) Então o que eu preciso é de um codigo que leia 2 tabelas com nomes de colunas diferentes de um qvd, e que por uma chave em comum eu consiga usar o not exists.

Eu criei um código de exemplo (abaixo):

Chave da tabela TPR:  numer_mov

Chave da tabela TPE:  numer_mov_ref

//------------------------------------------------------------------------//
[TPR]:
LOAD * INLINE
[ origem, entidad, numer_mov, numer_mov_ref, centro, numero_contrato
TPR, entidade1, 1, 11, 2, 112233
TPR, entidade2, 2, 22, 3, 334455
TPR, entidade3, 3, 33, 4, 445566
TPR, entidade4, 4, 44, 5, 667788
TPR, entidade5, 5, 55, 6, 889900
TPR, entidade6, 6, 66, 7, 001112
];
STORE [TPR] INTO lib://Carga/tpr.qvd(qvd);
Drop Table [TPR];
//-----------------------------------------------------------------------//
[TPE]:
LOAD * INLINE
[ origem, entidad, numer_mov_ref, numer_mov, centro, numero_contr
TPE, entidade1, 1, 11, 2, 112233
TPE, entidade2, 2, 22, 3, 334455
TPE, entidade3, 3, 33, 4, 445566
TPE, entidade4, 4, 44, 5, 667788
TPE, entidade5, 5, 55, 6, 889900
TPE, entidade6, 6, 66, 7, 001112
TPE, entidade7, 7, 77, 8, 889900
TPE, entidade8, 8, 88, 9, 001112
TPE, entidade9, 9, 99, 10, 889900
TPE, entidade10, 10, 10, 11, 001112
];

STORE [TPE] INTO lib://Carga/tpe.qvd(qvd);
Drop Table [TPE];
//-----------------------------------------------------------------------//

[LER_TPR]:
LOAD
origem,
entidad,
numer_mov,
numer_mov_ref,
centro,
numero_contrato
FROM
lib://Carga/tpr.qvd (qvd);

LOAD
origem,
entidad,
numer_mov_ref,
numer_mov,
centro,
numero_contr as numero_contrato
FROM
lib://Carga/tpe.qvd (qvd)

WHERE not Exists(numer_mov,numer_mov_ref);

STORE [LER_TPR] into lib://Carga/tpr_sem_tpe.qvd(qvd);

 

1 Reply
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Quando o Qlik esta lendo uma nova tabela que tenha a mesma quantidade de campos com os mesmos nomes de uma  tabela já lida, ele concatena automaticamente. 

 https://help.qlik.com/pt-BR/sense/February2019/Subsystems/Hub/Content/Sense_Hub/LoadData/concatenate...

Sobre o Exists() , o que é feito é verificar se o "conteúdo" do campo já foi lido. E no exemplo abaixo queremos que leia da segunda tabela somente os Clientes que não tenham sido lidos ainda.

ex:


Tabela1:
LOAD * inline [
Cliente
Alessandro
Alessandro Furtado
];

Tabela2:
LOAD * inline [
Cliente
Alessandro
Alessandro F.
Alessandro Furtado
] Where not Exists(Cliente);

 

 

 

furtado@farolbi.com.br