Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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:
Agradeço imensamente de antemão.
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;
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.
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?
Exato.
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;
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`)