Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
marciomgm
Creator
Creator

JUNÇÃO DE TABELAS

Será que alguém consegue me ajudar?

Estou precisando juntar duas tabelas da seguinte forma:

[TABELA1] contém os seguintes campos:

TABELA_ANO,

TABELA,MES,

TABELA_DIASUTEIS     */esse campo é utilizado para dizer a quantidade de dias úteis do respectivo ano e mês

[TABELA2] contém os seguintes campos:

TABELA2_ANO as TABELA_ANO,

TABELA2,MES,

TABELA2_VENDAS

O resultado final dessa junção é montar uma simples tabela e um gráfico de linha para saber o total de vendas em dias úteis, exemplo:

ANO     MES     VENDAS_EM_DIAS_UTEIS

2012     JAN        100,00

2012     FEV        200,00

2013     JAN        500,00

Onde VENDA_EM_DIAS_UTEIS =  SUM(TABELA2_VENDAS / TABELA_DIASUTEIS)


Em resumo seria isso, se em OUT/2013 a venda total foi de R$80.00,00 e Janeiro possui 22 dias úteis definido no campo TABELA_DIASUTEIS então o resultado de VENDAS_EM_DIAS_UTEIS seria R$3.636,36

O problema é que eu não estou conseguindo juntar as duas tabelas.

Segue em anexo o arquivo QVW e mais duas planilhas excel.

15 Replies
aderlanrm
Partner - Specialist
Partner - Specialist

Nesse caso, talvez, o uso do LEFT JOIN seja mais indicado, certo? Experiente!

Abraço.

Enviado pelo meu Windows Phone

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
aderlanrm
Partner - Specialist
Partner - Specialist

Rodolfo, talvez você já conheça, mas não custa eu reforçar.

Use o comando Hash para gerar chaves, usando esse exemplo, ficaria:

Directory;

TABELA1:

LOAD Hash128(TABELA_ANO,TABELA_MES) AS CHAVE,

     TABELA_ANO,

     TABELA_MES,

     TABELA_DIASUTEIS

FROM

tabela1.xlsx

(ooxml, embedded labels, table is Sheet1);

Directory;

TABVELA2:

LOAD Hash128(TABELA2_ANO,TABELA2_MES) as CHAVE,

     TABELA2_VENDAS

FROM

tabela2.xlsx

(ooxml, embedded labels, table is Sheet1);

Observe que é eliminado os campos que são iguais no segundo LOAD, porem eu recomendo, nesse caso, que seja feito assim:

TABELA1:

LOAD TABELA_ANO,

     TABELA_MES,

     TABELA_DIASUTEIS

FROM

tabela1.xlsx

(ooxml, embedded labels, table is Sheet1);

Left Join (TABELA1)

LOAD TABELA2_ANO AS TABELA_ANO,

     TABELA2_MES AS TABELA_MES,

     TABELA2_VENDAS

FROM

tabela2.xlsx

(ooxml, embedded labels, table is Sheet1);

Apenas dicas, o mais importante mesmo é funcionar.

Grande abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Not applicable

Olá Aderlan, eu já vi o pessoal falando desse Hash, mas nunca usei. Depois vou dar uma estudada nele.

Aproveito para perguntar para que serve esse "Directory;" antes do Load? Nunca usei também...

Quanto ao Left Join, eu também usaria ele.

Abraço!

aderlanrm
Partner - Specialist
Partner - Specialist

Boa pergunta, eu também não uso. Rsrsrsrs...

O "Directory" é usado para definir onde esta os arquivos.

Você pode ter arquivos no "C:\temp", então vai ficar "Directory C:\temp", todos os loads vão buscar arquivos nesse caminho até outro comando "Directory".

É pouco usado porque o pessoal costuma usar variáveis mais ou menos assim:

SET caminho = 'C:\temp';

LOAD * FROM $(caminho)\arquivo.txt

Ou seja, vícios de programação, pois conhecendo o QlikView, descobrimos que algumas coisas são diferentes.

Abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Not applicable

Eu também uso variável, tipo assim:

Set vCaminho = '..\pasta';

=]

Anonymous
Not applicable

Muito obrigado Aderlan!

Loguei só para agradecer, resolveu o meu caso com seu exemplo.

Grande abraço!!!