4 Replies Latest reply: Jul 11, 2016 2:24 PM by Clever Anjos RSS

    Cluster dinâmico

    Daniel Damato

      Boa tarde pessoal,

       

      Estou com a seguinte duvida:

      Suponhamos que tenho apenas 3 campos, o ID do cliente, o id de compra e o valor de cada compra.

       

      Eu preciso quebrar esta lista de clientes em clusters, mas de forma dinâmica, através de uma variável por exemplo. E saber o ticket médio de cada cluster.

       

      Eu consigo "informar" a qual cluster cada cliente pertence através dessa expressão com as variáveis "Grupo":

      if(sum(Aggr(Count(DISTINCT idcompra),idcliente)) <= vGrupo1, 'Grupo 1',

      if(sum(Aggr(Count(DISTINCT idcompra),idcliente)) <= vGrupo2 and sum(Aggr(Count(DISTINCT idcompra),idcliente)) > vGrupo1, 'Grupo 2',

      if(sum(Aggr(Count(DISTINCT idcompra),idcliente)) <= vGrupo3 and sum(Aggr(Count(DISTINCT idcompra),idcliente)) > vGrupo2, 'Grupo 3',

      if(sum(Aggr(Count(DISTINCT idcompra),idcliente)) > vGrupo3, 'Grupo 4'

      ))))

       

       

      Mas a partir daí, eu então consegui resolver o problema de encontrar o ATP de cada cluster.

       

      Podem me ajudar?

        • Re: Cluster dinâmico
          Yuri Nicolett

          Daniel, não consegui entender o que precisa.

          Por favor, encaminhe um qvw para entendermos melhor a sua necessidade

            • Re: Cluster dinâmico
              Daniel Damato

              Não posso disponibilizar esse arquivo, preciso parar um tempo e montar um fictício para isso, coisa que hoje não vou conseguir

               

               

              Mas vou tentar explicar melhor com um exemplo.

               

              Tenho 6 clientes.

              Nome | Numero de Compras | Ticket médio de compra

              Ana      | 8 |      400,00

              Victor   | 14 |     320,00

              Alex     | 21 |     380,00

              Clara    | 5  |     420,00

              Pedro   | 28 |     320,00

              Yuri      |18  |     350,00

               

              No meu manco e dados eu tenho a linha de cada compra com o valor, normalmente.

               

               

              Eu preciso quebrar esses clientes em cluster com base no numero de compras, por exemplo: Os que compraram menos de 10x, entre 10 e 20, e mais de 20x. E então calcular o ticket médio de compra de cada cluster.

              Só que essa definição de cluster têm de ser dinâmica ou seja, poder colocar < 15x , >15x por exemplo.

               

              Com a expressão que eu colei lá em cima, eu consegui nomear em qual cluster cada cliente vai cair de acordo com os parâmetros das variáveis. Mas não sei como montar uma expressão ou um set analysis que permita eu chegar no valor médio de cada.

                • Re: Cluster dinâmico
                  Yuri Nicolett

                  Bom, se entendi direito é só você usar a função class().

                  Essa função deve ser adicionada na dimensão do gráfico (dimensão calculada) e você pode colocar o parâmetro "intervalo" com uma variável que o usuário vai escolher.

                   

                  Outra possibilidade é criar essas classes em um campo em seu script.




                  Abaixo o descritivo da função:

                  class(expressão, intervalo [ , rótulo [ , deslocamento ]])

                  Cria uma classificação de expressões. O comprimento da caixa é determinado pelo número definido como intervalo. O resultado é mostrado como a<=x<b, em que a e b são os limites superior e inferior da caixa. O x pode ser substituído por um caracter arbitrário definido em rótulo. 0 normalmente é o ponto de partida padrão da classificação. Isso pode ser alterado incluindo um deslocamento.

                  Exemplos:

                  class( var,10 ) com var = 23 retorna '20<=x<30'

                  class( var,5,'value' ) com var = 23 retorna '20<= value <25'

                  class( var,10,'x',5 ) com var = 23 retorna '15<=x<25'

              • Re: Cluster dinâmico
                Clever Anjos

                Já conseguiu a resposta? Se sim, escolha uma e marque como "Correta" para fechar o tópico e nos ajudar a manter a comunidade organizada