Ir para conteúdo
  • 0

Criar visão safrada de clientes


Filippo Cupolillo
Ir para solução Solucionado por Erick Oliveira ,

Pergunta

  • Membros

Boa noite,

Estou com uma dúvida aqui para montar uma visão "safrada" dos clientes (quanto tempo cada cliente demora pra resgatar os pontos a partir da primeira data de credito). No caso do segundo debito, seria a partir do segundo credito seguido do primeiro debito.

Fiz um vídeo explicando, não sei se ficou muito claro, mas se não ficou, eu faço outro aqui.

O vídeo está em anexo.

Agradeço desde já

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
  • Membros
  • Solução

Boa noite Filippo,

Segue uma solução utilizando uma base fictícia:

Primeiramente criei no power query uma coluna de índice com a tabela classificada pela "Data do Extrato" e pelo "Débito ou Crédito", posteriormente criei duas colunas calculadas (em uma delas o DAX ficou um pouco extenso).

Coluna auxiliar que conta cada vez que ocorre um debito para o mesmo CPF_CNPJ:

Índice ocorrencia debito = 
VAR tTabelaIndex = // Conta cada ocorrencia de debito para aquele CNPJ 
    FILTER (
        fLancamento,
        fLancamento[CPF_CNPJ] = EARLIER(fLancamento[CPF_CNPJ]) &&
        fLancamento[Débito ou Crédito] = "Debito" &&
        fLancamento[Índice] <= EARLIER(fLancamento[Índice]) 
    )
VAR vIndex = COUNTROWS(tTabelaIndex)
RETURN
vIndex


Coluna que calcula os dias desde o primeiro crédito até o détido:

Dias até debitar = 
// Limite inferior de data do debito
VAR vLimInferiorDebito = // Adiciona uma coluna com o valor da data do ultimo debito na primeira linha de "credito" após o debito
CALCULATE(
    MAX([Data do Extrato]),
    FILTER(
    fLancamento,
        fLancamento[CPF_CNPJ] = EARLIER(fLancamento[CPF_CNPJ]) &&
        fLancamento[Data do Extrato] + 1 <= EARLIER(fLancamento[Data do Extrato]) &&
        [Débito ou Crédito] = "Debito"

    )
)
// Limite superior de data do debito
VAR vLimSuperiorDebito = // Adiciona uma coluna com o valor da data do proximo debito na linha do "debito" em diante
CALCULATE( 
    MAX([Data do Extrato]),
    FILTER(
        fLancamento,
        fLancamento[CPF_CNPJ] = EARLIER(fLancamento[CPF_CNPJ]) &&
        fLancamento[Índice ocorrencia debito] <= EARLIER(fLancamento[Índice ocorrencia debito]) + 1 &&
        [Débito ou Crédito] = "Debito"

    )
)
// Valor da data do credito para diferença de data
VAR vDataCredito = 
CALCULATE(
    MIN([Data do Extrato]),
    FILTER(
        fLancamento,
        fLancamento[CPF_CNPJ] = EARLIER(fLancamento[CPF_CNPJ]) &&
        [Débito ou Crédito] = "Credito" &&
        fLancamento[Data do Extrato] >= vLimInferiorDebito &&
        fLancamento[Data do Extrato] < vLimSuperiorDebito
    )
)
RETURN

IF(
    [Débito ou Crédito] = "Debito",
    DATEDIFF(vDataCredito,fLancamento[Data do Extrato],DAY),
    DATEDIFF(vDataCredito,vLimSuperiorDebito,DAY)
)

 

Abaixo o resultado:

image.png.878a26699be1461fc211b542ef885ee1.png

 

Criar visão safrada de clientes.pbix

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

  • 0
  • Membros

Boa noite, @Filippo Cupolillo. Tudo bem amigo?

Segue minha sugestão para a solução do seu case:

Solução R1 =

 

var vcliente = SELECTEDVALUE(Tabela[ID])

 

var diadebito = CALCULATE(

                        SELECTEDVALUE(

                                    Tabela[Data]),

                                        Tabela[Tipo] = "Débito")

 

var debitoanterior = CALCULATE(

                            Max(

                                Tabela[Data]),

                                    Tabela[Tipo] = "Débito",

                                    dcalendario[Date] < diadebito)

 

var primeirocredito = CALCULATE(

                                MIN(Tabela[Data]),

                                 FILTER(

                                     ALLSELECTED(Tabela),

                                      Tabela[Tipo] = "Crédito" &&

                                        Tabela[ID] = vcliente &&

                                         Tabela[Data] < diadebito &&

                                          Tabela[Data] > debitoanterior))

 

return

DATEDIFF(primeirocredito, diadebito + 1, DAY)

 

Como você não disponibilizou base, eu criei uma semelhante para tentar ajudar a solucionar sua dúvida.

Basta fazer alguns pequenos ajustes na medida para chegar na solução que deseja - talvez acrescentar uma ou outra coluna do seu contexto de avaliação...

image.png.3e446551ba88461059010bfc383f11fe.png

Espero que tenha conseguido ajudar, amigo.

Sucesso aí....🚀🚀🚀🚀🚀

Abraço

Duvida Fellippo Mentoria.pbix

  • Gostei 1
  • Obrigado(a) 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...