Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
andersongentil
New Contributor II

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
MCampestrini
Valued Contributor

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

Anderson

Segue.

Márcio Rodrigo Campestrini
9 Replies
MCampestrini
Valued Contributor

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

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
andersongentil
New Contributor II

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

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,

MCampestrini
Valued Contributor

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

Anderson

Acho que funcionou.

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

Márcio Rodrigo Campestrini
andersongentil
New Contributor II

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

Márcio, quase deu certo aqui.

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

CommunitEquivalenteData.png

MCampestrini
Valued Contributor

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

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
andersongentil
New Contributor II

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

Oi Marcio,

Alterei,mas ainda não funcionou.

Estou postando o modelo de dados.

MCampestrini
Valued Contributor

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

Anderson

Segue.

Márcio Rodrigo Campestrini
andersongentil
New Contributor II

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

Marcio, Sensacional!!!

Era isso mesmo que eu precisava.

Obrigado!

andersongentil
New Contributor II

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

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,