3 Replies Latest reply: Sep 29, 2017 12:36 PM by Felip Drechsler RSS

    Classificar clientes que não compram a X dias

    Marcio Morais

      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

        • Re: Classificar clientes que não compram a X dias
          Felip Drechsler

          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