Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
Not applicable

Tabela de Metas por Cliente

Boa tarde Pessoal!

Tenho as metas mensais definidas por cliente, porem a tabela nao tem nenhum campo data !!!

Nao tem campo data pq o valor da meta foi criado na tabela de cadastro do cliente, mas vale para todos os meses.

Deu pra entender? Preciso criar uma tabela com o valor da meta mensal atual do cliente mês-a-mês desde 2010 até hoje.

CLIENTES

Cliente_IDCliente_NomeCliente_Meta_Mensal
1Cliente A100
2Cliente B201


Para relacionar com as vendas, eu imagino que preciso colocar os dados da tabela de meta por mês, assim:


META_CLIENTES:

IDDataCliente_IDValor Meta
101/01/20101100
201/02/20101100
301/03/20101100
401/01/20102201
501/02/20102201
601/03/20103201

... até 01/01/2017


Tentei fazer da forma abaixo mas não deu certo, ele faz por dia e multiplica o valor pelos dias dos meses e a meta é mensal


LET vMesInicial = Date('01/01/2010');

LET vMesFinal = Date(MonthEnd(Today()));

tmp_data:

LOAD

Date(MonthEnd(Today())-Recno()+1,'DD/MM/YYYY') as [Data]

AUTOGENERATE(vMesFinal-vMesInicial+1);

TMP_Clientes_Meta:

LOAD

meta_top_15,

Cliente_ID    

Resident Clientes where meta_top_15 > 0;

LEFT JOIN

LOAD

Data

Resident tmp_data;

Cliente_Meta:

LOAD

  recno() as Cliente_Meta_ID,

  Year(Data) & Month(Data) & Cliente_ID as Chave_ClienteMeta,

  meta_top_15 as Cliente_Ranking_300_Meta

Resident TMP_Clientes_Meta;

DROP TABLE tmp_data;

DROP TABLE TMP_Clientes_Meta;


1 Solution

Accepted Solutions
MVP
MVP

Re: Tabela de Metas por Cliente

Elton,

Concordo com o nicolett.yuri‌    Não sei o porque nao deixar na tabela cliente....

Outro problema seria que criar um calendario de 2010 para ca nao necessariamente o cliente era cliente naquele ano....Deveria ter uma data inicial para cada cliente de acordo com a data de inicio dele.

Mas,para criar um calendário (primeiro dia do mês)

Dai poderia ser criado uma tabela com o codigo cliente e a meta e dar um join no calendario (criaria meta para todas as datas).

//=======================================================================================

//

// Criar calendário primeiro dia do mês.....

//

LET vDateMin    = num(date(date#('01/01/2010','DD/MM/YYYY')));

LET vDateMax   = num(MakeDate(year(Today()),12,31));

Calendario: 

LOAD

   Date(MonthStart( AddMonths( $(vDateMin) , RowNo() )))      AS Data

   AUTOGENERATE 1

WHILE AddMonths( $(vDateMin) , RowNo() ) <  $(vDateMax); 

//=======================================================================================

MetaCliente:

LOAD

       meta_top_15                 as Meta_Cliente,    // Para nao dar chave sintetica

       Cliente_ID   

Resident Clientes where meta_top_15 > 0;

join

LOAD Data Resident Calendario;

//

drop table Calendario;

Dai daria para concatenar esta tabela aonde tens a venda.....Mas depende de como esta montada, quem sabe criando ainda ano e mes...

6 Replies

Re: Tabela de Metas por Cliente

Elton, mas se a meta é única não teria necessidade de criar mensal. Basta você fazer a ligação através do Client ID.

eduardo_dimperi
Valued Contributor II

Re: Tabela de Metas por Cliente

Oi Elton,

Tente suprimir os dias, já que a meta é mensal.

tmp_data:

LOAD

LET vMesInicial=date(floor(monthstart(addmonths(Today()))), 'YYYYMM');

AUTOGENERATE(vMesInicial+1);

Not applicable

Re: Tabela de Metas por Cliente

Então Yuri, o problema é relacionar isso com as vendas, fazer somatórias, etc.

Por exemplo, eu tenho uma tabela dinamica (ano e mes), uma coluna com vendas e somatória por ano. A meta não soma!

Captura de tela_2017-01-10_18-05-26.png

Not applicable

Re: Tabela de Metas por Cliente

Obrgiado Eduardo, mas eu nao consegui entender e o QV deu erro.

Pode explicar um pouco mais?

MVP
MVP

Re: Tabela de Metas por Cliente

Elton,

Concordo com o nicolett.yuri‌    Não sei o porque nao deixar na tabela cliente....

Outro problema seria que criar um calendario de 2010 para ca nao necessariamente o cliente era cliente naquele ano....Deveria ter uma data inicial para cada cliente de acordo com a data de inicio dele.

Mas,para criar um calendário (primeiro dia do mês)

Dai poderia ser criado uma tabela com o codigo cliente e a meta e dar um join no calendario (criaria meta para todas as datas).

//=======================================================================================

//

// Criar calendário primeiro dia do mês.....

//

LET vDateMin    = num(date(date#('01/01/2010','DD/MM/YYYY')));

LET vDateMax   = num(MakeDate(year(Today()),12,31));

Calendario: 

LOAD

   Date(MonthStart( AddMonths( $(vDateMin) , RowNo() )))      AS Data

   AUTOGENERATE 1

WHILE AddMonths( $(vDateMin) , RowNo() ) <  $(vDateMax); 

//=======================================================================================

MetaCliente:

LOAD

       meta_top_15                 as Meta_Cliente,    // Para nao dar chave sintetica

       Cliente_ID   

Resident Clientes where meta_top_15 > 0;

join

LOAD Data Resident Calendario;

//

drop table Calendario;

Dai daria para concatenar esta tabela aonde tens a venda.....Mas depende de como esta montada, quem sabe criando ainda ano e mes...

Not applicable

Re: Tabela de Metas por Cliente

Deu certo! Muito obrigado