Ir para conteúdo
  • 0

Criar visão safrada de clientes


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

Pergunta

  • Alunos

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
  • Alunos
  • 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

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

  • 0
  • Alunos

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

  • Like 1
  • Thanks 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...