Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
marciomgm
Creator
Creator

Classificar clientes que não compram a X dias

Gostaria de saber como usar a função class para criar faixas de dias sem compra.

Tenho a seguinte tabela:

NUMPEDIDOCODCLIENTEULTIMACOMPRA
1101/01/2017
2101/02/2017
3101/09/2017
4201/01/2017
5201/02/2017
6201/06/2017

Gostaria de construir uma classificação por faixa de dias com base em today() com a última compra

=Class((Today() - max(ULTIMACOMPRA)),30)

Error in calculated dimension

É necessário considerar apenas o max(ULTIMACOMPRA) mas não estou sabendo como fazer isso.

Resultado esperado:

0 <= x <30   = 1 cliente

60 <=x <90  =  1 cliente

Labels (2)
1 Solution

Accepted Solutions
felipedl
Partner - Specialist III
Partner - Specialist III

Olá Marcos,

O seguinte código irá gerar um classificar, através de IntervalMatch, para colocar a sua data de última compra em um range de valores.

// Classificador para o INtervalmatch, como irá fazer a Desc a partir da data de hoje menos a data de ultima compra

Periodos:

Load * Inline

[

De,Ate,Desc

0,30,De 0 a 30 dias

31,60,De 31 a 60 dias

61,90,De 61 a 90 dias

91,9999999,Maior que 90 dias

];

// Dados carregados como você colocou

Data:

Load * Inline

[

NUMPEDIDO, CODCLIENTE, ULTIMACOMPRA

1, 1, 01/01/2017

2, 1, 01/02/2017

3, 1, 01/09/2017

4, 2, 01/01/2017

5, 2, 01/02/2017

6, 2, 01/06/2017

];

// Pega a maior data por cliente

maxDataCliente:

Load

CODCLIENTE,

MaxData,

SecondMaxData,

Today()-MaxData as Teste2,

MaxData-SecondMaxData as Teste;

Load

CODCLIENTE,

max(ULTIMACOMPRA) as MaxData,

max(ULTIMACOMPRA,2) as SecondMaxData

Resident Data

group by CODCLIENTE;

// Join para inserir os dados na tabela original

left join (Data)

Load

CODCLIENTE,

MaxData as ULTIMACOMPRA,

Teste as [Número de dias da compra anterior],

Teste2 as [Número de dias da última compra com hoje]

Resident maxDataCliente;

// Classificação dos valores

left join IntervalMatch([Número de dias da última compra com hoje])

Load

De,Ate

Resident Periodos;

// Pega a descrição da tabela Periodos

left join(Data)

Load

De,

Ate,

Desc

Resident Periodos;

// Drops para tirar tabelas e certos campos;

drop table Periodos;

drop fields De,Ate from Data;

E retorna como resultado o seguinte,

Sample2.png

Anexo também o QVW que usei.

Felipe

View solution in original post

3 Replies
felipedl
Partner - Specialist III
Partner - Specialist III

Olá Marcos,

O seguinte código irá gerar um classificar, através de IntervalMatch, para colocar a sua data de última compra em um range de valores.

// Classificador para o INtervalmatch, como irá fazer a Desc a partir da data de hoje menos a data de ultima compra

Periodos:

Load * Inline

[

De,Ate,Desc

0,30,De 0 a 30 dias

31,60,De 31 a 60 dias

61,90,De 61 a 90 dias

91,9999999,Maior que 90 dias

];

// Dados carregados como você colocou

Data:

Load * Inline

[

NUMPEDIDO, CODCLIENTE, ULTIMACOMPRA

1, 1, 01/01/2017

2, 1, 01/02/2017

3, 1, 01/09/2017

4, 2, 01/01/2017

5, 2, 01/02/2017

6, 2, 01/06/2017

];

// Pega a maior data por cliente

maxDataCliente:

Load

CODCLIENTE,

MaxData,

SecondMaxData,

Today()-MaxData as Teste2,

MaxData-SecondMaxData as Teste;

Load

CODCLIENTE,

max(ULTIMACOMPRA) as MaxData,

max(ULTIMACOMPRA,2) as SecondMaxData

Resident Data

group by CODCLIENTE;

// Join para inserir os dados na tabela original

left join (Data)

Load

CODCLIENTE,

MaxData as ULTIMACOMPRA,

Teste as [Número de dias da compra anterior],

Teste2 as [Número de dias da última compra com hoje]

Resident maxDataCliente;

// Classificação dos valores

left join IntervalMatch([Número de dias da última compra com hoje])

Load

De,Ate

Resident Periodos;

// Pega a descrição da tabela Periodos

left join(Data)

Load

De,

Ate,

Desc

Resident Periodos;

// Drops para tirar tabelas e certos campos;

drop table Periodos;

drop fields De,Ate from Data;

E retorna como resultado o seguinte,

Sample2.png

Anexo também o QVW que usei.

Felipe

marciomgm
Creator
Creator
Author

Obrigado!!!

felipedl
Partner - Specialist III
Partner - Specialist III

Por nada Marcio .