Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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);
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.
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);