Gostaria de saber como usar a função class para criar faixas de dias sem compra.
Tenho a seguinte tabela:
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 |
Gostaria de construir uma classificação por faixa de dias com base em today() com a última compra
=Class((Today() - max(ULTIMACOMPRA)),30)
É 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
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,
Anexo também o QVW que usei.
Felipe
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,
Anexo também o QVW que usei.
Felipe
Obrigado!!!
Por nada Marcio .