Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia!
Como fazer um right join com mais de um campo em comum.
Estou fazendo um right join e o hash128(id,nota,ano,mes), mas não dá certo.
Tabela 1
id | nota | mes | ano | valor |
---|---|---|---|---|
10 | 16 | 06 | 2014 | 20 |
10 | 15 | 06 | 2014 | 30 |
10 | 12 | 06 | 2014 | 40 |
15 | 12 | 06 | 2014 | 50 |
Tabela2
id | nota | mes | ano |
---|---|---|---|
10 | 16 | 06 | 2014 |
10 | 15 | 06 | 2014 |
10 | 12 | 06 | 2014 |
10 | 13 | 06 | 2014 |
Resultado que desejo:
id | nota | mes | ano | valor |
---|---|---|---|---|
10 | 16 | 06 | 2014 | 20 |
10 | 15 | 06 | 2014 | 30 |
10 | 12 | 06 | 2014 | 40 |
10 | 13 | 06 | 2014 | |
Carrega sempre todos os dados da tabela2(por isso usei o right join)
Esses não são dados reais, tentei fazer uma simulação, ficou muito parecido com meus dados reais.
if I understand
Tabela1:
LOAD id,
nota,
mes,
ano,
valor
FROM
[http://community.qlik.com/thread/151764]
(html, codepage is 1252, embedded labels, table is @1);
Right join (Tabela1)
LOAD id,
nota,
mes,
ano
FROM
[http://community.qlik.com/thread/151764]
(html, codepage is 1252, embedded labels, table is @2);
Dessa maneira muda os valores da tabela1, eu queria criar uma nova tabela com esse valores, no caso a tabela2, exemplo : eu já tenho minha tabela 1 montada, quero pegar esses dados na tabela2.
Estou postando o qvw: posso até mudar a tebela2 ou criar uma nova tabela3 , mas a tabela 1 não pode sofrer alterações já que é usada em outro módulo.
Breno, como vc nao quer alterar a estrutura da tabela 1, faça o seguinte:
TABELA1:
LOAD id,
nota,
mês,
ano,
valor
FROM
C:\Users\Fabio\Desktop\TABELA1.xlsx
(ooxml, embedded labels, table is Plan1);
Tabela 2: aqui vc vai novamente carregar os dados da tabela 1.. só que ia chamar de tabela 2 e ira mudar os campos para nao dar chave sintética
LOAD
id as id2,
nota as nota2,
mês as mês2,
ano as ano2,
valor
FROM
C:\Users\Fabio\Desktop\TABELA1.xlsx --- NOTE (from tabela1)
(ooxml, embedded labels, table is Plan1);
rigth join
LOAD
id as id2,
nota as nota2,
mês as mês2,
ano as ano2
FROM
C:\Users\Fabio\Desktop\TABELA2.xlsx
(ooxml, embedded labels, table is Plan1);
ou seja ele ira criar a tabela2 realizando o join das duas tabelas sem alterar a tabela 1
Espero ter ajudado
Thiago Gonçalo
Eu pensei a mesma coisa que você Thiago, mas eu não queria carregar novamente essa tabela1, pq ele é a mais pesada de todas 20 milhões de registros, minha carga ficaria muito mais lenta, mas não sei se tem outra forma.
Putz Breno... vacilo meu tambem..
Cara.. como vc ja carregou a tabela 1 .. basta no código de criação da tabela 2 vc usar o RESIDENT.. pois como sua tabela ja está em memoria.. nao precisaria carregar denovo.. ai então ele não onera tanto o processo.
Tabela 2: aqui vc vai novamente carregar os dados da tabela 1.. só que ia chamar de tabela 2 e ira mudar os campos para nao dar chave sintética
LOAD
id as id2,
nota as nota2,
mês as mês2,
ano as ano2,
valor
Resident Tabela1;
rigth join
LOAD
id as id2,
nota as nota2,
mês as mês2,
ano as ano2
FROM
C:\Users\Fabio\Desktop\TABELA2.xlsx
(ooxml, embedded labels, table is Plan1);
Ok vou tentar e mando resposta:
Deu certo Breno?
Qualquer dúvida, nos comunique para tentarmos ajudar.
Abraços
Ainda Não, estou fazendo alguns testes, quando tiver uma reposta comunico, Obrigado Thiago