Ir para conteúdo
  • 0

Como calcular o número de clientes inativos ? ( que nao compram há + 12 meses)


CelsoEliezer
Ir para solução Solucionado por Tiago Craici - Xperiun ,

Pergunta

  • Alunos

Olá Pessoal,

Estou calculando a qtde de clientes inativos numa medida que nao estou conseguindo encapsular uma outra medida de qtde clientes ativos que está funcionando normalmente.
Dá erro de retorno de booleano... em anexo a imagem.

São 3 medidas:

1-) Clientes Positivados =   OK

Clientes Positivados =
CALCULATE(
            COUNTROWS(
                      VALUES(BI_VENDA[COD_CLIENTE])
                     )
         )

2-) Qtde Clientes Ativos ( 12 m)  = OK
 

Qt_Cli_Ativos 12 meses =
 
var lstdata = MAX('dCalendario'[Data])
 
var cn = if(
         ISFILTERED(dCalendario[AnoMês])
            ,if
                (YEAR(lstdata) = YEAR(NOW()) && MONTH(lstdata) = MONTH(NOW())
            ,EOMONTH(NOW(),-1)
            ,lstdata
                )
        ,EOMONTH(NOW(),-1)
        )
 
var primeiromes = EOMONTH(cn,-12)  
 
return
 
CALCULATE(
    [Clientes Positivados],
    FILTER(
       ALL(dCalendario),
        dCalendario[Data] > primeiromes  &&
        dCalendario[Data] <= cn
    )
)

3- Qtde Cientes Inativos ( que não compram há + 12 meses)
  (em tese, pela teoria dos conjuntos seria a diferença entre   os clientes gerais  vs.  clientesAtivos
E gostaria de encapsular a medida de qtde clientes ativos numa calculatetable e usar ao final dentro do except.

 

Qt Clientes Inativos =
 var ClientesAtivos =
      CALCULATETABLE (
                      VALUES(BI_VENDA[COD_CLIENTE]),            -- Tabela de vendas com clientes
                      [Qt_Cli_Ativos 12 meses] > 0              -- Aplicando a métrica encapsulada
                     )  
  VAR ClientesGerais =
  CALCULATETABLE(
                  VALUES(BI_VENDA[COD_CLIENTE])
                )
 
  VAR vExcept = EXCEPT(ClientesAtivos, ClientesGerais)
 
  RETURN
  COUNTROWS(vExcept)

erronacalculatetable.jpg.8265e7ebcf3221a80d7cd69a12c91a60.jpg

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
  • Admin
  • Solução

@CelsoEliezer veja se a medida abaixo atende: 

Qt Clientes Inativos =
VAR ClientesAtivos =
    CALCULATETABLE (
        VALUES ( BI_VENDA[COD_CLIENTE] ),
        FILTER ( VALUES ( BI_VENDA[COD_CLIENTE] ), [Qt_Cli_Ativos 12 meses] > 0 )
    )
VAR ClientesGerais =
     VALUES ( BI_VENDA[COD_CLIENTE] ) 
VAR vExcept =
    EXCEPT ( ClientesAtivos, ClientesGerais )
RETURN
    COUNTROWS ( vExcept )

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
9 horas atrás, Tiago Craici - Xperiun disse:

@CelsoEliezer veja se a medida abaixo atende: 

Qt Clientes Inativos =
VAR ClientesAtivos =
    CALCULATETABLE (
        VALUES ( BI_VENDA[COD_CLIENTE] ),
        FILTER ( VALUES ( BI_VENDA[COD_CLIENTE] ), [Qt_Cli_Ativos 12 meses] > 0 )
    )
VAR ClientesGerais =
     VALUES ( BI_VENDA[COD_CLIENTE] ) 
VAR vExcept =
    EXCEPT ( ClientesAtivos, ClientesGerais )
RETURN
    COUNTROWS ( vExcept )

 

@Tiago Craici - Xperiun

Bom dia!

Eu testei a sua medida mas nao trouxe o cálculo, retornando nulos.
Baseado na teoria dos conjuntos eu mudei aqui a métrica e aparentemente deu bom, mas acabei não usando a função except entre tabelas, apenas a diferença entre medidas mesmo.

Veja em anexo.

No entanto,  eu tentei diversas formas encapsular uma medida como a de qtclientesAtivos para compará-la com o total de clientes gerais da tabela  e não tive sucesso.
Vou dar a  vc os créditos pela iniciativa de resolver este desafio.  SInceramente ainda não entendi como poderia encapsular uma medida dentro de uma calculatetable.  Um bom desafio.
Obrigado pela ajuda!
 

Solução Clientes inativos.jpg

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
7 minutos atrás, Bruno Abdalla de Souza disse:

Anexa o pbix @CelsoEliezer.

Oi @Bruno Abdalla de Souza,  tudo bem?

Infelizmente é um pbix muito complexo, com + 20 tabelas,  e para mascarar os dados ficaria um tanto complexo, mesmo com poucos dados, além de ser  questão de LGPD da empresa etc
Mas mesmo assim, obrigado pelo seu costumeiro  apoio aqui no forum.  Sempre TOP  desde o nosso tempo do bootcamp. show!
 

Editado por CelsoEliezer
complemento
  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
Qt Clientes Inativos =
VAR ClientesAtivos =
    CALCULATETABLE(
        VALUES(BI_VENDA[COD_CLIENTE]),
        FILTER(VALUES ( BI_VENDA[COD_CLIENTE]), [Qt_Cli_Ativos 12 meses] > 0)
    )
VAR ClientesGerais =
     VALUES(BI_VENDA[COD_CLIENTE]) 
VAR vExcept =
    EXCEPT(ClientesGerais, ClientesAtivos)
RETURN
    COUNTROWS(vExcept)

@CelsoEliezer, só mudei a ordem na EXCEPT. Tente isso.

Editado por Bruno Abdalla de Souza
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
9 minutos atrás, Bruno Abdalla de Souza disse:
Qt Clientes Inativos =
VAR ClientesAtivos =
    CALCULATETABLE(
        VALUES(BI_VENDA[COD_CLIENTE]),
        FILTER(VALUES ( BI_VENDA[COD_CLIENTE]), [Qt_Cli_Ativos 12 meses] > 0)
    )
VAR ClientesGerais =
     VALUES(BI_VENDA[COD_CLIENTE]) 
VAR vExcept =
    EXCEPT(ClientesGerais, ClientesAtivos)
RETURN
    COUNTROWS(vExcept)

@CelsoEliezer, só mudei a ordem na EXCEPT. Tente isso.

@Bruno Abdalla de Souza, tudo joia?

Testei aqui mas não deu bom, mesmo usando a inversão das tabelas na except.   Fique bem curioso de não dar certo desta forma. Mas mesmo assim, valeu!

Obrigado + 1 vez.
Show!

Solução do Bruno Abdalla.jpg

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
2 minutos atrás, Tiago Craici - Xperiun disse:

Um detalhe também @CelsoEliezer cuidado com os filtros (segmentador) aplicado na página. 👍

@Tiago Craici - Xperiun,  

Olá @Tiago Craici - Xperiune @Bruno Abdalla de Souza

Parabéns pela ajuda de ambos,

Sucesso!!

De fato @Tiago Craici - Xperiun tinha razão quando percebeu que a métrica pudesse estar sofrendo influência de segmentador, no caso era o filtro de data que estava apontado apenas para o ano atual.
Com a alteração que eu fiz na própria métrica que o @Bruno Abdalla de Souza sugeriu trocar as tabelas dentro da função except ,  eu alterei  a tabela de clientes gerais para varrer toda a dcalendário, aí funcionou. 
veja o anexo.
Parabéns a todos!!!!!  Desafio vencido , ufa!

Solução final da métrica encapsulada no desafio.jpg

  • Like 2
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...