Ir para conteúdo
  • 0

Contar número de clientes baseado em várias regras


Celso Spina
Ir para solução Solucionado por Rodrigo R1 ,

Pergunta

  • Alunos

Pessoal,

estou tentando calcular o Churn (clientes perdidos), mas a fórmula DAX é bem complexa.
Preciso contar o número de clientes que compraram no mês atual, mas não compraram no mês posterior e nem no mês anterior (ou período 1 a 12) .

Ou seja:
varResultadoAtual > 0 &&
varResultadoMesPosterior = 0 &&
varResultadoPeriodo = 0

Clientes Perdidos Churn 2 = 
VAR varResultadoAtual = [Resultado] 
VAR varResultadoMesPosterior = [Resultado Mês Posterior]
VAR varResultadoPeriodo = [Resultado Período]
RETURN
IF(
    varResultadoAtual > 0 && varResultadoMesPosterior = 0 && varResultadoPeriodo = 0,
    1,
    BLANK()
)

Fazendo por IF funcionou, mas não conta na tabela e nem contabiliza nos meses.

image.png.6f5762f665df8f6c1c1e7bc4a97c0c0f.png

 

Quando coloco numa matriz pelo tempo, ele não mostra.
image.png.77fd60de4178e041339341063d6acb48.png

 

Onde:

[Período Valor]

É um What if que você pode selecionar de 1 a 12.

[Resultado]

Resultado = SUM(fFaturamento(resultado))

 

[Resultado Período]

Resultado Período = 
CALCULATE(
    [Resultado],
    DATESINPERIOD(
        'dCalendário'[Data],
        [Data Final],
        [Período Valor] * -1,
        MONTH
    )
)

[Resultado Mês Posterior]

Resultado Mês Posterior = 
CALCULATE(
    [Resultado],
    NEXTMONTH('dCalendário'[Data])
)

Acredito que tem de ser algum CALCULTAE com vários FILTER, mas não consigo desenvolver.

 

FILTER(
    ADDCOLUMNS(
        VALUES('fFaturamento[IDCliente]),
        "Posterior",
        CALCULATE(
            SUM('fFaturamento'[Resultado]),
            NEXTMONTH('dCalendário'[Data])
        )
    ),
    [Posterior] = 0
    
)

 

Alguma ideia?

 

 

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

Amigo @Celso Spina, conforme solicitado, segue a solução:

Churn =

var clientesatuais = values(fVendas[IDCliente])

var clientesantigos = CALCULATETABLE(

VALUES(fVendas[IDCliente]),

DATEADD('dCalendário'[Data], -1, MONTH))

var clientesposterior = CALCULATETABLE(

VALUES(fVendas[IDCliente]),

DATEADD('dCalendário'[Data], +1, MONTH))

var uniao = UNION(clientesantigos, clientesposterior)

var excecao = EXCEPT(clientesatuais, DISTINCT(uniao))

return

COUNTROWS(excecao)

1276052381_DuvidaCelso.thumb.png.8857d98197f8406fae49e4588a6b2f00.png

Só copiar a medida e jogar no seu modelo.

Sucesso aí, amigo.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa tarde, @Celso Spina. Tudo bem? A lógica para sua solução eu acho melhor utilizar a teoria de conjuntos. Já tentou por ela? No curso procura por "clientes novos" - só usar o mesmo raciocínio.

Por ela você irá criar tabelas e depois usar a função EXCEPT para extrair uma nova tabela. Feito isso, vc faz um COUNTROWS dessa tabela de exceção.

Assim:

Medida = 
var clientesatuais = VALUES(fato(idclientes)

var clientesantigos =

CALCULATABLE(

VALUES(fato(idclientes),

DATEADD(dcalendario(data), - 1, MONTH))

var excecao = EXCEPT(clientesantigos, clientesatuais)

return

COUNTROWS(excecao)

Dessa forma, vc irá encontrar os clientes que compraram no mês anterior ao contexto e não compraram no mês atual (do contexto).

Espero que tenha ajudado.

Abraço e sucesso aí, amigo.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
7 minutos atrás, Rodrigo R1 disse:

Boa tarde, @Celso Spina. Tudo bem? A lógica para sua solução eu acho melhor utilizar a teoria de conjuntos. Já tentou por ela? No curso procura por "clientes novos" - só usar o mesmo raciocínio.

Por ela você irá criar tabelas e depois usar a função EXCEPT para extrair uma nova tabela. Feito isso, vc faz um COUNTROWS dessa tabela de exceção.

Assim:

Medida = 
var clientesatuais = VALUES(fato(idclientes)

var clientesantigos =

CALCULATABLE(

VALUES(fato(idclientes),

DATEADD(dcalendario(data), - 1, MONTH))

var excecao = EXCEPT(clientesantigos, clientesatuais)

return

COUNTROWS(excecao)

Dessa forma, vc irá encontrar os clientes que compraram no mês anterior ao contexto e não compraram no mês atual (do contexto).

Espero que tenha ajudado.

Abraço e sucesso aí, amigo.

Rodrigo, obrigado.

Já tentei isso, mas são 3 conjuntos para combinar

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Celso, mas se vc pensar bem, o segundo conjunto seria formado então pelo período anterior e posterior - já que vc quer retirar o atual dos 2 períodos ao mesmo tempo.

Assim, penso que poderia unir esses 2 períodos em 1 só, e depois disso fazer a exceção do período atual.

Daí iria encontrar o que precisa.

Será que assim num daria pra combinar?

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...