Ir para conteúdo
  • 0

Acumular média de unidades.


Arisson Liborio
Ir para solução Solucionado por Edson Igari ,

Pergunta

  • Alunos

Boa noite galera, 

Estou com o seguinte caso:

Preciso acumular uma média de apartamentos de forma linear 5,65  => 11,30 => 16,95... Até chegar em 192 que é o total de unidades desse exemplo.  Já tentei algumas soluções, mas sem sucesso.

image.png.52a305e9c7739d5a93f6c0a9d8e00cbf.png

Para calcular esta média estou utilizando a seguinte medida:

vDtdisponibilidade é a data que as unidades foram liberadas;

vDtprevEntrega é a data até onde preciso acumular;

Daí eu faço o total de unidades e divido pela diferença entre datas.

Não estou conseguindo ver onde estou errando, porque desse ponto não consigo acumular essa coluna Qtd Media Unidades.

Alguem consegue me ajudar? 😕

Segue o .pbix para ajudar.

Qtd Media Unidades =
 VAR vDtDisponibilidade = SELECTEDVALUE(dataPSO[dtdisp])
 VAR vDtPrevEntrega = SELECTEDVALUE(Tendencia[Data pre Entrega])
 VAR vDiferencaDatas = DATEDIFF(vDtDisponibilidade, vDtPrevEntrega,MONTH)
 VAR vTotalUnidades = CALCULATE([Qtd. Total Unidades], ALL(dCalendario))
 VAR vMediaUnidades =
 CALCULATE(
    DIVIDE(vTotalUnidades,vDiferencaDatas))
RETURN
vMediaUnidades

CasoTesteAcumuladoMedia.pbix

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 1
  • Alunos

Suave @Arisson Liborio?

Usa a medida abaixo:

Citar
Qtd Media Unidades Acumulada =
VAR _QtdMedia = [Qtd Media Unidades]
RETURN
    CALCULATE(
        SUMX(VALUES(dCalendario[AnoMesINT]), [Qtd Media Unidades]),
        FILTER(
            ALL(dCalendario),
            dCalendario[AnoMesINT] <= MAX(dCalendario[AnoMesINT])
        )
    )

image.png.4b1a271e0bfbd9edc584056e874f5237.png

Atenção que você só tem 30 meses preenchidos na coluna [Qtd Media Unidades] então o resultado acumulado vai ser 5.65 * 30 = 169.41.

Abs!

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Fala pessoal @Joao Raulino @Edson Igari, antes de tudo, muito obrigado pela ajuda!

@Joao Raulino quando adiciono sua medida ele perde o contexto, acumula de 2021 até hoje, mas também ele repete a média para todo calendário quando não há valor.

O esperado seria acumular a partir de 2021 até março que teve dado. Só que ainda preciso projetar até agosto esse mesmo valor de 5.65  que é minha data de entrega.

Relatório original:

image.png.9fd4b0ccada1c48baf186d986ebc398d.png

 

Relatório CasoTesteAcumudadoMedia

image.png.9a56e67f2a636a355ee067968fb3c777.png

 

A do @Edson Igari está funcionando, mas gostaria de parar no mes de Agosto que é minha data da tabela Tendencia[data pre Entrega]. 

Tentei ajustar da seguinte forma o tempo e ainda preciso adicionar valores de 5,65 até o mes de agosto.

Qtd Media Unid Acum 2 =
VAR vDataContexto = MAX(dCalendario[Data])
VAR vDataEntrega =
CALCULATE(
    SELECTEDVALUE(Tendencia[Data prev Entrega]),
    USERELATIONSHIP(dCalendario[Data],Tendencia[Data prev Entrega]))
RETURN
CALCULATE(
    [Media Para Acumular],
    FILTER(
        ALL(dCalendario),
        dCalendario[Data] <= vDataContexto &&
        NOT(ISBLANK([Qtd Media Unidades])&&
        dCalendario[Data] <= vDataEntrega)
    )
)

mas ainda assim não respeitou i filtro.

image.png.56807024a8503f3fdf87640509162c92.png

 

 

 

 

 

image.png

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

  • 0
  • Alunos

Suave @Arisson Liborio?

Se você quer esconder os meses em branco bastaria incluir uma condição IF() filtrando as datas:

Citar
Qtd Media Unidades Acumulada (Joao) =
VAR _QtdMedia = [Qtd Media Unidades]
VAR _QtdAcumulada =
    CALCULATE(
        SUMX(VALUES(dCalendario[AnoMesINT]), [Qtd Media Unidades]),
        FILTER(
            ALL(dCalendario),
            dCalendario[AnoMesINT] <= MAX(dCalendario[AnoMesINT])
        )
    )
VAR _MinDataPSO = CALCULATE(MIN(dataPSO[dtcontrato]), ALL(dataPSO))
VAR _MaxDataTendencia = MAX(Tendencia[Data pre Entrega])
RETURN
    IF(
        MAX(dCalendario[Data]) >= _MinDataPSO && MIN(dCalendario[Data]) <= _MaxDataTendencia,
        _QtdAcumulada
    )

O resultado seria isso:

image.png.8c7ab2f961eb48f6442f2e431654d34e.png

Detalhe que o teu modelo esta com varias datas vazias e por isso que a matriz começa no mês "BLANK". Pessoalmente acredito que isso deva ser resolvido no modelo de dados (e.g.: removendo nulos no Power Query) e não na medida DAX, por isso não filtrei esse valor ate mesmo para deixar claro que ha esse problema no modelo 😉 

Abs!

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Joao Raulino Show..

@Edson Igari também resolveu.

Agora estou me batendo para projetar estes meses até agosto. Estou me passando em algum detalhe.

Qtd Unid Proj =
VAR vDataContexto = MAX(dCalendario[Data])
VAR vDataTendencia = CALCULATE(MAX(Tendencia[Data pre Entrega]),ALL(dCalendario))
VAR vResultado =
CALCULATE(
    [Qtd Media Unidades],
    FILTER(
    ALL(dCalendario),
    dCalendario[Data] <= vDataContexto
    ))
 
RETURN
IF(
    MIN(dCalendario[Data]) <= vDataTendencia,
        vResultado
)

 

image.png.aeee24e0e5d879421b3aa8ff2ce95fc1.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Outra coisa que percebi foi que em Dez 2023 como não houve venda a linha ficou em branco.

Ele não adicionou a diferença de meses ajustei para: vDiferencaDatas = CALCULATE( DATEDIFF(vDtDisponibilidade, vDtPrevEntrega,MONTH),ALL(dCalendario)) ainda assim a linha fica vazia.

consegue me ajudar nisso tbm @Edson Igari @Joao Raulino?

image.png.3a63a67d87c7affcd6738f0acd26f0a1.png

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