Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
webill
Contributor II
Contributor II

Unificar tabelas eliminando registros

Pessoal, antes de qualquer coisa, preciso dizer que não sou programador e não sou usuário médio de QLIK, então vou fazer o melhor para explicar o que eu quero, mesmo ainda entendendo pouco do assunto.

Preciso unir duas tabelas sendo que em uma há os campos A e B e na outra os campos A, C e D.

Vi muita gente falando em join ou coisas do tipo, mas não achei alguém que mencionasse como eliminar registros nessa fusão.

Ocorre que o campo A da segunda tabela tem também registros a mais os quais eu não quero na nova tabela unificada, então gostaria de unir e eliminar os registros que não fossem correspondentes aos da primeira tabela.

Vocês podem sugerir via script ou com alguma opção pós incorporação de dados.

Para ajudar no entendimento, coloco uma imagem que ilustra  a situação:

preciso-fazer-isso-tabelas.png

Agradeço imensamente de antemão.

6 Replies
RafaMartins
Creator II
Creator II

Boa tarde, 

Você pode fazer o join da tabela e na carga da tabela onde tem registros que vocês não querer trazer você usa um where dessa forma

TabelaB:

Load

Campo A

Campo D

Campo E

From [lib://Local/tabela] where wildmach(Campo A,'brasilia','astra')=0;

webill
Contributor II
Contributor II
Author

Entendi. Mas nesse caso eu teria que citar os registros que eu não quero. No meu caso são muitos. Queria só eliminar a linha toda, sem nem saber o que tem nela. Não sei se fui claro.

julyanasoares
Contributor II
Contributor II

O campo A é a chave entre as tabelas, certo?

Você deseja adicionar a tabela apenas as linhas da tabela B onde a chave seja existente na tabela A?

webill
Contributor II
Contributor II
Author

Exato.

julyanasoares
Contributor II
Contributor II

Você pode utilizar o comando exists, ficaria semelhante ao exemplo abaixo:

 

TABELA_A:
Load * Inline [
CAMPOA|CAMPOB|CAMPOC
fusca|batata|verde
monza|tomate|amarelo
] (delimiter is '|');

TABELA_B:
Load * Inline [
CAMPOA|CAMPOD|CAMPOE
fusca|maça|brasil
astra|banana|rússia
] (delimiter is '|');

Left Join (TABELA_A)
Load
CAMPOA,
CAMPOD ,
CAMPOE
Resident TABELA_B where Exists(CAMPOA);

Drop Table TABELA_B;

webill
Contributor II
Contributor II
Author

Deu erro. Veja como o código é de maneira mais próxima do real:

LOAD id as id_grade_grades__,
itemid as id_item__,
`userid` as id_user__,
finalgrade as finalgrade__;
SQL SELECT id,
itemid,
`userid`,
finalgrade
FROM LALALA.`dbp_um_banco`.`mdl_grade_grades`;

LEFT JOIN (LALALA.`dbp_um_banco`.`mdl_grade_items`)
LOAD id as id_item__,
courseid as id_curso__,
itemname as itemname__,
itemtype as itemtype__,
gradetype as gradetype__
Resident LALALA.`dbp_um_banco`.`mdl_grade_grades` where Exists (id_item__);

Drop Table LALALA.`dbp_um_banco`.`mdl_grade_grades`;


Trazendo mais para o real, a tabela 'mdl_grade_grades' tem muito mais id_item__ do que eu preciso. Quero apenas os registros do campo id_item__ da mdl_grade_items que é muito menor, mas, claro, mantendo as relações, onde houver.

Ocorreram os seguintes erros:
Unknown statement: LEFT JOIN (LALALA.`dbp_um_banco`.`mdl_grade_items`)