Ir para conteúdo
  • 0

Mostrar resultado de média apenas para data do contrato


Lucas Denker
Ir para solução Solucionado por Lucas Denker ,

Pergunta

  • Alunos

Bom dia pessoal! Gostaria de uma ajuda. Vou passar um pouco sobre o contexto do meu problema da melhor forma possível com exemplos e no final uma base ficticia em anexo.
Contexto:
Eu posso atualmente 2 tabelas dentro de um Excel.
Tabela 1: fContratos - representa uma tabela com todos os clientes que possuem contratos com a empresa X, as informações desta tabela são:
Cod Cliente que é um código único para representar cada cliente que fez um contrato. 
- Cod Contrato que é um código para representar o contrato feito pelo cliente.
- Data que representa a data de inicio do contrato.
Tabela 2: fVolume - representa uma tabela com todos os clientes que compraram volume de produtos Y da empresa X, nem todos os clientes que estão nesta tabela estão na contratos, as informações desta tabela são:
Cod Cliente que é um código único para representar cada cliente que fez uma compra. 
Volume quantidade comprada do produto
Possuo também uma tabela dcalendário com todas as datas da minha tabela fVolume

Problema:
Eu fiz uma medida para calcular a média de volume 6 meses antes da data de inicio do contrato, utilizando como referencia de data as datas da tabela dcalendario. Então por exemplo se o contrato começa em jan/22 minha medida calcula a média de volume desde jul/21 até dez/21.
Meu problema é que eu preciso mostrar o resultado apenas para a data em que o cliente possui contrato. Vamos supor por exemplo o cliente C10, ele possui contrato na data de abr/23. Portanto minha média vai calcular o volume que ele possui para todas as datas dentro da dcalendario, até então tudo certo, porém no resultado final eu quero que ele mostre apenas o resultado  da média para a data de contrato dele, portanto abr/23 e não para todas as datas dentro da dcalendário. Segue abaixo as medidas que criei para facilitar o entendimento e também em anexo a base teste para este exemplo:
Sei que é um problema complexo então peço desculpas se não consegui me expressar da melhor forma

Contagem 6M =
VAR DataInicialCandidata = EDATE(MIN(dCalendario[Date]), -6)
VAR DataInicial =
    IF(
        NOT(ISBLANK(LOOKUPVALUE(dCalendario[Date], dCalendario[Date], DataInicialCandidata))),
        DataInicialCandidata,
        BLANK()
    )

 

VAR DataFinalCandidata = EDATE(MIN(dCalendario[Date]), -1)
RETURN
    DATEDIFF(DataInicial, DataFinalCandidata, MONTH) + 1

--"Data Inicial: " & FORMAT(DataInicial, "dd/MM/yyyy") & " | Data Final: " & FORMAT(DataFinalCandidata, "dd/MM/yyyy")
-- Esta medida faz a contagem de meses até onde tenho dados da minha tabela

teste media =
VAR v1M =
CALCULATE(
    [Volume],
    DATEADD(dCalendario[Date], -1, MONTH)
)

 

VAR v2M =
CALCULATE(
    [Volume],
    DATEADD(dCalendario[Date], -2, MONTH)
)

 

VAR v3M =
CALCULATE(
    [Volume],
    DATEADD(dCalendario[Date], -3, MONTH)
)

 

VAR v4M =
CALCULATE(
    [Volume],
    DATEADD(dCalendario[Date], -4, MONTH)
)

 

VAR v5M =
CALCULATE(
    [Volume],
    DATEADD(dCalendario[Date], -5, MONTH)
)

 

VAR v6M =
CALCULATE(
    [Volume],
    DATEADD(dCalendario[Date], -6, MONTH)
)

 

RETURN
    DIVIDE(v1M + v2M + v3M + v4M + v5M + v6M, [Contagem 6M])

 -- Medida para calcular a média de 6 meses atrás (a função datesinperiod não retornou o resultado esperado, por isso fiz desta forma)

base teste.xlsx

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

Faça login para comentar

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



Entrar Agora
×
×
  • Criar Novo...