9 Replies Latest reply: Feb 20, 2017 2:52 PM by DAVID RUBIO RSS

    Identificando Tipo de Clientes em uma tabela

    Anderson Silva

      Pessoal, Boa Tarde!

      Tudo Bem?

      Sou novato na comunidade e no Qlik View, gostaria muito da ajuda de vocês na elaboração de um script.

      As vendas no meu modelo de negócio são medidas por coleção (exemplo A0015 ). Tenho duas Tabelas, uma de vendas históricas e outra de vendas nas coleções atuais.

      Preciso flegar na tabela de vendas atuais o status dos clientes, ou seja, se ele é novo ou antigo na marca. Medimos esse indicador olhando a marca e o código do cliente, se ele apresentar alguma venda anterior na marca, ou seja, comprou uma coleção anterior, ele é considerado cliente antigo. Caso a coleção seja a primeira dele na marca ele é considerado cliente novo nessa marca.

      Posso chegar no mesmo resultado olhando se o cliente comprou apenas a coleção atual no histórico na marca. O Intuito de flegar na tabela atual é de utilizar esse indicador em alguns comparativos no dashboard.

      Pensei em concatenate, mas não sei como faria essa validação. Alguém pode me auxiliar?

       

       

      Exemplo:

       

      VENDAS ATUAIS
      MARCACLIENTECOLEÇÃODATAVENDA
      A1100055A001529/01/2017
      B1100055B001529/01/2017
      C1100055C001529/01/2017
      D1100055D001529/01/2017
      HISTÓRICO
      MARCACLIENTECOLEÇÃODATAVENDA
      A1100055A001421/11/2016
      B1100055B001212/09/2016
      A1100055A001529/01/2017
      B1100055B001529/01/2017
      C1100055C001529/01/2017
      D1100055D001529/01/2017
      SAIDA DESEJADA
      MARCACLIENTECOLEÇÃODATAVENDATIPOOBS
      A1100055A001529/01/2017CLIENTE ANTIGONão Comprou a primeira vez na marca
      B1100055B001529/01/2017CLIENTE ANTIGONão Comprou a primeira vez na marca
      C1100055C001529/01/2017CLIENTE NOVOComprou a primeira vez na marca
      D1100055D001529/01/2017CLIENTE NOVOComprou a primeira vez na marca

       

      Abs,

       

      Mensagem editada por: Anderson Silva Caso precise de maiores detalhes, por favor me comunique.

        • Re: Identificando Tipo de Clientes em uma tabela
          maicon mello

          Anderson esta meio confuso.

          Entendi que você precisa mas olhando seu exemplo ele confundi.

          A0015 tenho na tab atual e historica com mesma data e não é primeira compra.

          D0015 mesma coisa e é a primeira compra ?



          Pode explicar melhor ?

            • Re: Identificando Tipo de Clientes em uma tabela
              Anderson Silva

              Maicon, Muito Obrigado!

               

              Isso mesmo, a tabela de vendas históricas apresenta todas as vendas, inclusive as das coleções atuais.

              A ideia é verificar se o cliente comprou apenas a coleção atual na marca  consultando a tabela histórica de vendas.

              Exemplo: Se o cliente 1100055 comprou a marca A apenas na coleção 0015 ele é considerado cliente novo (nesta marca). No caso acima, ele é considerado um cliente antigo, pois já comprou na coleção 0014 na marca A.

              A Marca é a primeira letra da coleção, sendo assim vou deixar a coleção separada para facilitar.

              VENDAS ATUAIS
              MARCACLIENTECOLEÇÃODATAVENDA
              A1100055001529/01/2017
              B1100055001529/01/2017
              C1100055001529/01/2017
              D1100055001529/01/2017
              HISTÓRICO
              MARCACLIENTECOLEÇÃODATAVENDA
              A1100055001421/11/2016
              B1100055001212/09/2016
              A1100055001529/01/2017
              B1100055001529/01/2017
              C1100055001529/01/2017
              D1100055001529/01/2017
              SAIDA DESEJADA
              MARCACLIENTECOLEÇÃODATAVENDATIPOOBS
              A1100055001529/01/2017CLIENTE ANTIGONão Comprou a primeira vez na marca
              B1100055001529/01/2017CLIENTE ANTIGONão Comprou a primeira vez na marca
              C1100055001529/01/2017CLIENTE NOVOComprou a primeira vez na marca
              D1100055001529/01/2017CLIENTE NOVOComprou a primeira vez na
            • Re: Identificando Tipo de Clientes em uma tabela
              JACKSON RIBEIRO ALFONSO

              Bom dia !

               

              Penso que um jeito simples de fazer é criar um mapping por cliente e marca, assim:

              1 - Carrega a tabela de HISTORICO.

              2 - Cria o Mapping:

              MapaCliente:

              Mapping

              Load DISTINCT CLIENTE &'|'&MARCA, 'Antigo' as Status RESIDENT HISTORICO;

               

              3 - Usa o mapa para flegar o cliente como novo ou antigo, na carga da tabela vendas atuais, assim:

               

              ApplyMap('MapaCliente',CLIENTE &'|'&MARCA,'Novo') As TipoCliente

               

              Acho que assim já resolve.

              Abs

              • Re: Identificando Tipo de Clientes em uma tabela
                JACKSON RIBEIRO ALFONSO

                Não me preocupei com as chaves no script. Segue exemplo.

                 

                Obs: Outra coisa que você pode fazer é, criar primeiro o MapaCliente, baseado em um load temporario da tabela HISTORICO, e na hora de concatenar as tabelas usa o mapping na hora de carregar a tabela de VENDAS_ATUAIS, lembrando que para funcionar, carrega primeiro o Historico e depois concatena a Vendas Atual para concatenar.

                 

                HISTORICO:

                Load * inline [

                MARCA, CLIENTE, COLEÇÃO, DATAVENDA

                A, 1100055, A0014, 21/11/2016

                B, 1100055, B0012, 12/09/2016

                A, 1100055, A0015, 29/01/2017

                B, 1100055, B0015, 29/01/2017

                C, 1100055, C0015, 29/01/2017

                D, 1100055, D0015, 29/01/2017

                ];

                 

                MapaCliente:

                Mapping

                Load DISTINCT CLIENTE &'|'&MARCA, 'Antigo' as Status RESIDENT HISTORICO;

                 

                 

                VENDAS_ATUAIS:

                Load ApplyMap('MapaCliente',CLIENTE &'|'&MARCA,'Novo') As TipoCliente, * inline [

                MARCA, CLIENTE, COLEÇÃO, DATAVENDA

                A, 1100055, A0015, 29/01/2017

                B, 1100055, B0015, 29/01/2017

                C, 1100055, C0015, 29/01/2017

                D, 1100055, D0015, 29/01/2017

                E, 1100055, D0015, 29/01/2017

                ] ;

                  • Re: Identificando Tipo de Clientes em uma tabela
                    Anderson Silva

                    Oi Jackson, Muito obrigado pela resposta !

                    Acho que é algo muito próximo disso.

                    Era para aparecer a marca "C e D" como primeira compra, lembrando que as compras atuais também fazem parte do histórico. Acho que o problema estaria  na validação, o script precisa verificar a chave CLIENTE &'|'&MARCA na tabela atuais antes de mapear. No Mapping ele não poderia considerar a compra atual, mas só as diferentes dela na marca. Se ele não comprou alguma coleção diferente a da tabela atual no histórico, ela é cliente novo.

                    Grande Abraço

                  • Re: Identificando Tipo de Clientes em uma tabela
                    Alessandro Furtado

                    Anderson,

                     

                    veja se isto é o que precisa

                     

                    2017-01-30 19_45_33-QlikView x64 - [C__Furtado_Qlik_QlikView_Demos_Community_Historico Compra.qvw].png

                    • Re: Identificando Tipo de Clientes em uma tabela
                      Alessandro Furtado

                      Ate deve ter uma forma mais simples, mas o tico e teco esta baleado.......

                       

                       

                       

                       

                       

                       

                      Vendas_Atual:

                      LOAD

                               *

                      INLINE [

                      MARCA, CLIENTE,COLEÇÃO, DATAVENDA

                      A, 1100055 ,0015, 29/01/2017

                      B, 1100055 ,0015, 29/01/2017

                      C, 1100055 ,0015, 29/01/2017

                      D, 1100055 ,0015, 29/01/2017

                      ];

                       

                       

                      left join

                       

                       

                      HISTÓRICO:

                      LOAD

                              MARCA,

                              CLIENTE,

                              min(DATAVENDA)                 as Primeira_Compra

                              Group by MARCA,CLIENTE;

                      LOAD  *

                      INLINE [

                      MARCA, CLIENTE,COLEÇÃO, DATAVENDA

                      A, 1100055, 0014 ,21/11/2016

                      B, 1100055, 0012 ,12/09/2016

                      A, 1100055, 0015 ,29/01/2017

                      B, 1100055, 0015 ,29/01/2017

                      C, 1100055, 0015 ,29/01/2017

                      D, 1100055, 0015 ,29/01/2017

                      ];

                       

                       

                      left join

                      LOAD

                              MARCA,

                              CLIENTE,

                              DATAVENDA,

                              if(DATAVENDA = Primeira_Compra,'Cliente Novo','Cliente Antigo')          as Tipo

                      Resident     Vendas_Atual;