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.
Se tiver mais alguma dúvida em especifico só falar que tentamos te ajudar.
O resident só funciona quando eu pego os dados do excel, quando tento pegar do banco ele nao funciona.
Tabela1
LOAD
id as id2,
nota as nota2,
mês as mês2,
ano as ano2,
valor
sql select
id,
nota,
mês,
ano,
valor
from .....
Tabela2:
LOAD
id as id2,
nota as nota2,
mês as mês2,
ano as ano2
resident Tabela2;
right join (Tabela2)
...................
Só uma simulação
percebi que você usa apenas rigth join, enquanto eu uso right join(tabela1)
qual a diferença
Breno, bom dia!
Precisamos antes entender o comando Resident.
Resident será usado se for necessário carregar os dados de uma tabela carregada anteriormente, ou seja, você poderá associar o Resident apenas a uma tabela que você já carregou de forma normal usando o from.
Então abaixo descrevo o processo como um todo.
TABELA1 ( tabela que não pode ser alterada - carregue-a normalmente sem alterações )
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 E AO INVES DO FROM VC USARÁ O RESIDENT TRAZENDO OS DADOS DA TABELA1
LOAD
id as id2,
nota as nota2,
mês as mês2,
ano as ano2,
valor
RESIDENT TABELA1;
right 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); AQUI VC TEM QUE USAR O FROM, POIS AINDA NAO CARREGOU OS DADOS DA TABELA2 NO QLIKVIEW... SE VC JA TIVESSE CARREGADO EM ALGUM MOMENTO ANTERIOR NO CÓDIGO, PODERIA USAR O RESIDENT
Espero que ajude. Abraços
funciona da seguinte maneira..
tabela1
load *
from xxx
right join - quando não se usa o (tabela) ele vai unir as duas tabelas que estão entre o comando.. no caso a tabela 1 e tabela 2
tabela2
2 caso..
tabela1
load
tabela2
load
right join (tabela1) neste caso ele vai dar join da tabela 1 com a tabela3.. como existe outra tabela no meio do código eu preciso especificar qual a tabela que eu estou dando join.
tabela3
load
por algum motivo que ainda nao descobrir meu resident não está funcionando, quando eu troco ele por sql select e carrego novamente os dados funciona.
por algum motivo que ainda nao descobrir meu resident não está funcionando, quando eu troco ele por sql select e carrego novamente os dados funciona.
se puder colocar aqui exatamente o código que esta tentando carregar ou o arquivo qvw posso verificar o que está errado.
Não posso colocar os dados reais por normas da empresa, mais apenas tiro o resident e coloco sql e carrego novamente os dados ele funciona