Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Vendas em Datas Equivalentes (Dimensão Marca e Clientes)

Pessoal, Boa Tarde!

Tudo Bem?

Preciso de uma ajuda de vocês mais uma vez para a seguinte questão, algo muito parecido como o que eu havia postado\nteriormente, agora mais detalhado.

Um dos meus principais indicadores é a curva de vendas comparada com a data equivalente, ou seja, a comparação das vendas de hoje  com o mesmo período no ano anterior, para isso tenho duas tabelas (Tabela Data Equivalente por Marca, Tabela Vendas Históricas). Na tabela  "Tabela Data Equivalente por Marca"  tenho as datas equivalentes em 2016 para cada venda em 2017, só que agora por marca. Na  tabela "Vendas Históricas", todas as vendas históricas por marca e cliente. Eu preciso montar uma tabela que mostre a data atual, as vendas no período atual e as vendas no período correspondente por cliente e marca conforme exemplo:.


Tabela Data Equivalente por Marca:

MARCADataData Equivalente
MARCA00101/01/201731/12/2015
MARCA00102/01/201701/01/2016
MARCA00103/01/201702/01/2016
MARCA00201/01/201701/01/2016
MARCA00202/01/201702/01/2016
MARCA00203/01/201703/01/2016
MARCA00301/01/201730/12/2015
MARCA00302/01/201731/12/2015
MARCA00303/01/201701/01/2016

Tabela Vendas Históricas:

DataCLIENTEMARCAVendas
31/12/20151000005MARCA001R$  27.564,00
01/01/20161000005MARCA001R$  26.361,00
02/01/20161000005MARCA001R$  23.996,00
01/01/20161000005MARCA002R$  27.392,00
02/01/20161000005MARCA002R$  27.460,00
03/01/20161000005MARCA002R$  22.021,00
30/12/20151000005MARCA003R$  25.954,00
31/12/20151000005MARCA003R$  21.351,00
01/01/20161000005MARCA003R$  27.725,00
01/01/20171000005MARCA001R$  22.237,00
02/01/20171000005MARCA001R$  27.224,00
03/01/20171000005MARCA001R$  24.211,00
01/01/20171000005MARCA002R$  20.039,00
02/01/20171000005MARCA002R$  24.792,00
03/01/20171000005MARCA002R$  20.861,00
01/01/20171000005MARCA003R$  25.783,00
02/01/20171000005MARCA003R$  20.119,00
03/01/20171000005MARCA003R$  25.320,00
31/12/20151000006MARCA001R$  27.281,00
01/01/20161000006MARCA001R$  26.564,00
02/01/20161000006MARCA001R$  20.613,00
01/01/20161000006MARCA002R$  27.393,00
02/01/20161000006MARCA002R$  25.392,00
03/01/20161000006MARCA002R$  29.758,00
30/12/20151000006MARCA003R$  26.790,00
31/12/20151000006MARCA003R$  28.327,00
01/01/20161000006MARCA003R$  26.571,00
01/01/20171000006MARCA001R$  25.493,00
02/01/20171000006MARCA001R$  25.779,00
03/01/20171000006MARCA001R$  24.640,00
01/01/20171000006MARCA002R$  21.099,00
02/01/20171000006MARCA002R$  26.751,00
03/01/20171000006MARCA002R$  29.313,00
01/01/20171000006MARCA003R$  26.424,00
02/01/20171000006MARCA003R$  20.028,00
03/01/20171000006MARCA003

R$  20.681,00

Tabela Final:

     

DataMARCACLIENTEData EquivalenteVenda AtualVendaDataEquivalente2016
01/01/2017MARCA001100000531/12/2015R$   22.237,00R$                                27.564,00
02/01/2017MARCA001100000501/01/2016R$   27.224,00R$                                26.361,00
01/01/2017MARCA002100000501/01/2016R$   20.039,00R$                                27.392,00
02/01/2017MARCA002100000502/01/2016R$   24.792,00R$                                27.460,00
01/01/2017MARCA003100000530/12/2015R$   25.783,00R$                                25.954,00
02/01/2017MARCA003100000531/12/2015R$   20.119,00

R$                                21.351,00

Tentei utilizar o Inner Join, mas ele duplica os valores para trazer as vendas equivalentes

Mensagem editada por: Anderson Silva Ajustei a tabela Final com o resultado esperado

1 Solution

Accepted Solutions
Marcio_Campestrini
Specialist
Specialist

Anderson

Segue.

Márcio Rodrigo Campestrini

View solution in original post

9 Replies
Marcio_Campestrini
Specialist
Specialist

Bom dia Anderson

Se você fizer o Join entre MARCA/DATA EQUIVALENTE da primeira tabela e MARCA/DATA da segunda tabela não funciona?

Se possível poste um exemplo para facilitar a análise do problema.

Márcio Rodrigo Campestrini
Anonymous
Not applicable
Author

Marcio, Obrigado pela resposta.

Estou começando meus conhecimentos em SQL, acho que estou errando em alguma coisa simples.

Segue o script

Calendardeparatmp:

LOAD * INLINE [

MARCA, Data, DataEquivalente,

MARCA001, 01/01/2017, 31/12/2015

MARCA001, 02/01/2017, 01/01/2016

MARCA001, 03/01/2017, 02/01/2016

MARCA002, 01/01/2017, 01/01/2016

MARCA002, 02/01/2017, 02/01/2016

MARCA002, 03/01/2017, 03/01/2016

MARCA003, 01/01/2017, 30/12/2015

MARCA003, 02/01/2017, 31/12/2015

MARCA003, 03/01/2017, 01/01/2016

];

Vendastmp:

LOAD * INLINE [

Data, CLIENTE, MARCA, Vendas

31/12/2015, 1000005, MARCA001, R$ 27.564,00

01/01/2016, 1000005, MARCA001, R$ 26.361,00

02/01/2016, 1000005, MARCA001, R$ 23.996,00

01/01/2016, 1000005, MARCA002, R$ 27.392,00

02/01/2016, 1000005, MARCA002, R$ 27.460,00

03/01/2016, 1000005, MARCA002, R$ 22.021,00

30/12/2015, 1000005, MARCA003, R$ 25.954,00

31/12/2015, 1000005, MARCA003, R$ 21.351,00

01/01/2016, 1000005, MARCA003, R$ 27.725,00

01/01/2017, 1000005, MARCA001, R$ 22.237,00

02/01/2017, 1000005, MARCA001, R$ 27.224,00

03/01/2017, 1000005, MARCA001, R$ 24.211,00

01/01/2017, 1000005, MARCA002, R$ 20.039,00

02/01/2017, 1000005, MARCA002, R$ 24.792,00

03/01/2017, 1000005, MARCA002, R$ 20.861,00

01/01/2017, 1000005, MARCA003, R$ 25.783,00

02/01/2017, 1000005, MARCA003, R$ 20.119,00

03/01/2017, 1000005, MARCA003, R$ 25.320,00

31/12/2015, 1000006, MARCA001, R$ 27.281,00

01/01/2016, 1000006, MARCA001, R$ 26.564,00

02/01/2016, 1000006, MARCA001, R$ 20.613,00

01/01/2016, 1000006, MARCA002, R$ 27.393,00

02/01/2016, 1000006, MARCA002, R$ 25.392,00

03/01/2016, 1000006, MARCA002, R$ 29.758,00

30/12/2015, 1000006, MARCA003, R$ 26.790,00

31/12/2015, 1000006, MARCA003, R$ 28.327,00

01/01/2016, 1000006, MARCA003, R$ 26.571,00

01/01/2017, 1000006, MARCA001, R$ 25.493,00

02/01/2017, 1000006, MARCA001, R$ 25.779,00

03/01/2017, 1000006, MARCA001, R$ 24.640,00

01/01/2017, 1000006, MARCA002, R$ 21.099,00

02/01/2017, 1000006, MARCA002, R$ 26.751,00

03/01/2017, 1000006, MARCA002, R$ 29.313,00

01/01/2017, 1000006, MARCA003, R$ 26.424,00

02/01/2017, 1000006, MARCA003, R$ 20.028,00

03/01/2017, 1000006, MARCA003, R$ 20.681,00

];

Vendastmp1:

NoConcatenate

load * Resident Vendastmp;

Vendastmp2:

NoConcatenate

Load Data as DataEquivalente,MARCA as MARCA,Vendas as ValorEquival Resident Vendastmp;

Inner join(Calendardeparatmp)

load * Resident Vendastmp1;

Inner join(Calendardeparatmp)

load * Resident Vendastmp2;

drop Tables Vendastmp,Vendastmp1,Vendastmp2;

Abs,

Marcio_Campestrini
Specialist
Specialist

Anderson

Acho que funcionou.

Remova o último Inner Join e faça a recarga para ver o resultado.

Márcio Rodrigo Campestrini
Anonymous
Not applicable
Author

Márcio, quase deu certo aqui.

Retirei o último join, mas não retornou o valor das vendas equivalentes.

CommunitEquivalenteData.png

Marcio_Campestrini
Specialist
Specialist

Anderson

Analisando melhor o caso percebo que o seu problema é o código do cliente na tabela de vendas. Ele não está informado no Load da tabela Vendastmp2.

Altere conforme abaixo:

Vendastmp2:

NoConcatenate

Load Data as DataEquivalente, CLIENTE, MARCA,Vendas as ValorEquival Resident Vendastmp;

Márcio Rodrigo Campestrini
Anonymous
Not applicable
Author

Oi Marcio,

Alterei,mas ainda não funcionou.

Estou postando o modelo de dados.

Marcio_Campestrini
Specialist
Specialist

Anderson

Segue.

Márcio Rodrigo Campestrini
Anonymous
Not applicable
Author

Marcio, Sensacional!!!

Era isso mesmo que eu precisava.

Obrigado!

Anonymous
Not applicable
Author

Marcio, Boa Noite, Tudo Bem?

Preciso de mais uma dica sua sobre essa mesma situação.

Tentei bastante até localizar o problema. A tabela só retorna  as vendas que são coincidentes entre marca, data e cliente. Isso acontece por conta do Inner Join.

Eu precisava alterar os script para que ele continue considerando as datas equivalentes, marca e clientes, mas trazendo os valores de zero na venda atual quando houver venda na data correspondente e não na atual e o valor da venda no campo 'venda equivalente' e vice e versa no caso da venda correspondente x atual, além de trazer os casos coincidentes. Sei que ficou complicado mas segue o exemplo da saída:

Dessa forma retornará todos valores das datas atuais e equivalentes independentemente da ausência de um valor ou outro.

DataMARCACLIENTEData EquivalenteVenda AtualVendaDataEquivalente2016
01/01/2017MARCA001100000531/12/2015R$   22.237,00R$                                27.564,00
02/01/2017MARCA001100000501/01/2016R$                                26.361,00
01/01/2017MARCA002100000501/01/2016R$   20.039,00R$                                27.392,00
02/01/2017MARCA002100000502/01/2016R$                                27.460,00

Abs,