Ir para conteúdo
  • 0

Relacionamento tabela fato com tabela de mudança status cliente


matheusmarchezi
Ir para solução Solucionado por Michele ,

Pergunta

  • Alunos

Boa noite pessoal!

Estou com um problema com uma base de dados, já procurei soluções na internet e no curso, mas não encontrei.

A minha situação é que tenho uma base de dados com uma tabela fato que tem valores de vendas, uma tabela dimensão de clientes, e uma outra tabela que traz os registros de mudanças de status do cliente (por exemplo, cliente ativo, cliente sem compra no período, cliente voltou a comprar, etc) de forma histórica (chamada "logsitcomercial"). Cada vez que o cliente muda de status, é inserida uma nova linha nessa tabela, com a data da alteração, o status anterior e o status atual do cliente.

Já pensei em utilizar tabela bridge ou uma surrogate key, mas não consegui fazer funcionar. Como eu poderia fazer o relacionamento dessas mudanças de status dos clientes com a tabela fato de vendas para conseguir analisar os valores de acordo com o status do cliente em determinado período?

Base - Mudança Status Cliente.pbix

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

Olá @matheusmarchezi!

Se consegui compreender o que você precisa acredito que seja isso ou, pelo menos, muito próximo:

  • Criei uma coluna na sua Fato_Log para definir o status do cliente naquele MÊS e ANO, isso é bem importante, se por acaso a sua necessidade de análise/regra mudar, vai precisar mudar o código nessa coluna criada, mudar o contexto no caso.
  • Com base nessa coluna criei medidas que contem os clientes Ativos e Inativos.
  • Com base nessas duas medidas acima consegui montar as medidas que somam os valores vendidos naquele MÊS e ANO, pegando a lista de clientes Ativos e a lista de clientes Inativos e buscando se a venda é para um desses grupos.

Abaixo coloco imagens da coluna criada, das medidas e do resultado, além de anexar o .pbix com essa solução.

IMPORTANTE: Tem meses, pelo que analise, em que os clientes não possuem log, portanto existem vendas para clientes "SEM STATUS". Para que não fosse entendido como erro a soma das Vendas de Ativos e Inativos não baterem, criei uma medida para somar as vendas dos clientes SEM STATUS, assim fica mais fácil confirmar que, aparentemente, os valores parecem estar corretos. Também validei a situação de alguns clientes e pareceu estar correta dentro da regra passada.

image.png.9fb364d8b74a40583685a1df9298f61c.png

image.png.1e9cca594cd30ca71e2b2d9064af5150.png

373510098_Base-MudanaStatusCliente.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa noite @matheusmarchezi!
Tudo bem?

Alterei os relacionamentos, cardinalidades e sentidos entre as tabelas. Deixei inativo o relacionamento entre a dCalendario e a Dim_logsitcomercial. Quando você for fazer a análise por status do cliente em determinado período, ative este relacionamento via DAX utilizando o USERELASHIONSHIP.

image.png.cf4105b724529f08ced37e27b42c60bc.png

Faça o teste por favor.

Se esta resposta resolver seu problema, gentileza classificá-la como 
Solução 

Atenciosamente,

Bernardo Vitor
(31) 99116-6134
LinkedIn: https://www.linkedin.com/in/bernardo-vitor

373510098_Base-MudanaStatusCliente.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá @matheusmarchezi!

Essa sua tabela que registra os status é uma tabela histórica, então a primeira coisa a mudar, a meu ver, é considerar ela como uma tabela Fato e não uma tabela Dimensão. Considerando isso, a princípio, os relacionamentos deveriam ficar da forma exemplificada na imagem mais abaixo.

Agora para saber como montar as medidas ou até talvez criar algum campo que referencie o "momento" do cliente dentro da tabela de vendas, você consegue compartilhar como pretende analisar os dados? Por ano, mês, dia, etc.? É que com base nisso muda o contexto e pode mudar a forma que precisa montar as medidas.

Se quiseres montar um exemplo básico, pode ser no Excel, no próprio PBI, e envia um print com um resultado esperado para esses dados que compartilhasse conosco até agora, assim a gente consegue simular bem certinho como você precisa.

Eu vi que você utilizou um campo "Situação Comercial" da Dimensão Cliente, mas não consegui compreender se essa é a situação atual, pois entendo que se a situação muda ao longo do tempo, vamos precisar considerar essa Situação da tabela de logs mesmo, não a da Dimensão entendeu.

Se puder compartilhar mais detalhes/exemplos do que você precisa.

image.png.ddb15aee3db2c463966494d9295427c4.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá @matheusmarchezi!

Hoje acabei me lembrando de uma aula do curso sobre "Dimensões que mudam ao longo do tempo (Slowly Changing Dimensions)" e pensei que talvez esse seja o caso da sua Dimensão, chegou a dar uma olhada nessa aula já?

https://play.powerbiexperience.com/curso/tc-2-power-query-e-linguagem-m/5177/50872

Quando conseguires nos contar um pouco mais sobre a sua regra de negócio, como funciona esse seu log:

  • Tem um todo dia para cada cliente?
  • Por exemplo, se você quiser as comprar por Ano/Mês e o cliente tiver mais de um registro dentro desse mês, como fica? Vale o status igual ou menos à data de venda?
  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa noite pessoal!

@Bernardo Vitor, testei aqui sua sugestão, mas não funcionou. Os valores não ficam corretos quando tento analisar, por exemplo, a quantidade histórica vendida para um cliente que hoje está classificado como "inativo".

@Michele, a coluna "Situação Comercial" da tabela de dimensão Clientes traz o status atual do cliente. Acontece que inicialmente eu apenas tinha a tabela de clientes, com essa informação nela, e depois eu consegui essa tabela com o histórico de mudanças dos status dos clientes. Talvez as informações de status atual do cliente não esteja "batendo" entre as duas tabelas em alguns casos devido a máscara que eu fiz nos dados.

Em relação às análises, eu preciso fazer elas por ano e mês, e seria basicamente a quantidade e/ou percentual de clientes que entraram no status de "inativo" no período atual (algo como churn rate). E em caso de houver mais de um registro no mesmo mês para um cliente, deverá ser considerado o mais recente. Em relação aos códigos da situação, o código "AICLP315147" representa um cliente inativo, sem compras a algum tempo, e os demais consideramos como ativos.

Após realizar a postagem aqui, também achei essa aula sobre Slowly Changing Dimensions, e dei uma pesquisa na internet, e acho que essa tabela se enquadraria melhor nesse escopo. Porém mesmo assim ainda estou tendo dificuldades para fazer medidas que deem de fato um valor de clientes inativos e ativos em um determinado mês, pois pode ocorrer de o cliente ter mais de uma alteração no próprio mês.

Em relação ao período da atualização do status do cliente, ele pode variar de cliente para cliente, pois cada cliente é enquadrado dentro de uma categoria (dependendo do tipo/porte da empresa), e cada categoria tem um período distinto para essa atualização.

Eu até criei uma coluna com a data fim da situação atual do cliente, com base na próxima atualização que ocorreu para o cliente, e quando é a última atualização coloquei uma data aleatória (31/12/9999).

Uma medida que criei para tentar calcular a quantidade de clientes inativos por mês / ano foi a abaixo, porém não deu certo.

Clientes Inativados =
CALCULATE(
    DISTINCTCOUNT(fato_logsitcomercial[idCliente]),
    fato_logsitcomercial[Sit. Comercial Atual] = "AICLP315147",
    dCalendario[Data] >= MIN(fato_logsitcomercial[Data Alt.]) && dCalendario[Data] <= MAX(fato_logsitcomercial[Data Fim Sit. Atual])
)

Editado por matheusmarchezi
Link para o comentário
Compartilhar em outros sites

  • 0

@matheusmarchezi

Olá tudo bem?

Talvez a sequencia de vídeos de "Modelagem Complexa de CRM" possa te ajudar:
https://play.powerbiexperience.com/curso/tc-5a-exercicios-e-desafios-com-dax/5183/25220

 

Por gentileza Define a Melhor resposta para o tópico, para isso basta ir naquela que mais te ajudou e clicar em uma das duas opções conforme print:

image.thumb.png.27677df6d05fb37e31442172527bab4f.png.60d03ab4e8f6fadddbf077b7e1d63847.png

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá pessoal, boa noite!

Peço desculpa pela demora em responder, tive alguns problemas que me obrigaram a paralisar esse projeto por algum tempo, mas estou retornando agora.

@Michele a sua solução me ajudou com parte do problema: encontrar a quantidade de clientes que mudaram o status para INATIVO ou ATIVO em determinado mês. Mas um outro dado que eu preciso levantar é a relação / quantidade total de clientes que estão ativos ou inativos no período / mês, não apenas que tiveram a mudança de status.

Estou enviando em anexo um pbix com uma base menor, só com 3 clientes, caso auxilie.

Agradeço o apoio até aqui.

forum-powerbi.pbix

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...