Ir para conteúdo
  • 0

Total móvel dos últimos 3 meses onde haja valores


Flávio Pinheiro
Ir para solução Solucionado por Flávio Pinheiro ,

Pergunta

  • Membros

Olá, pessoal.
Preciso novamente da habitual ajuda com o problema relatado abaixo:
Tentei diversas abordagens (como poderão notar nas minhas diversas medidas), porem não tive sucesso (ver pbix anexo).
O problema é o seguinte: pretendo que a medida calcule os 3 últimos meses onde haja valor,
e na linha de contexto Ano mostrar o resultado da última linha do ano em questão; ver print abaixo:
caso precise mais explicação é só dizer.
Desde já agradeço por toda e qualquer ajuda.


image.png.3f0f25cad17543cedcc6063f43c06305.png

pbe_forum.pbix

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
  • Membros
Em 31/03/2023 em 17:14, Tiago Craici disse:

Boa tarde @Flávio Pinheiro


Segue resultado
image.png.fc93c029038de968dddea44b35205bcd.png


Medida:

3M 01_VAL_TOT_REPASSE =
var ano = SELECTEDVALUE(_dCALENDAR[ANO])
 
return
CALCULATE (
    [01_VAL_TOT_REPASSE],
    DATESINPERIOD ( _dCALENDAR[DATA], MAX ( _dCALENDAR[DATA] ), -3, MONTH ),
    FILTER(ALL(_dCALENDAR), _dCALENDAR[ANO] = ano)
)

@Tiago Craici Agradeço muito sua ajuda.
Fiz alguns ajustes para minha real necessidade, porem não consegui adaptá-la por completa (veja o print)
Agradeço se puder ajudar.

image.png.41dfb0761837c7f4313852b08add6660.png

image.png.41dfb0761837c7f4313852b08add6660.png







 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros
Postado (editado)

Boa tarde @Flávio Pinheiro! Acredito ter chego a seu objetivo, veja print abaixo:
image.png.4c63fa3c607512b5ddf61a6b49e6dec0.png

Foi necessário adicionar uma sequencia de mês em sua tabela calendário:
image.png.eeae0d0e37cecbb83e3c89bbf7cb4303.png

Criei duas medidas:

3M 01_VAL_TOT_REPASSE =
var DATEADD1 =
CALCULATE(
    [01_VAL_TOT_REPASSE],
    DATEADD(_dCALENDAR[DATA], -1, MONTH),
    _dCALENDAR[ANO] = MAXX(_dCALENDAR, _dCALENDAR[ANO])
)
 
var DATEADD2 =
CALCULATE(
    [01_VAL_TOT_REPASSE],
    DATEADD(_dCALENDAR[DATA], -2, MONTH),
    _dCALENDAR[ANO] = MAXX(_dCALENDAR, _dCALENDAR[ANO])
)
 
var DATEADD3 =
CALCULATE(
    [01_VAL_TOT_REPASSE],
    DATEADD(_dCALENDAR[DATA], -3, MONTH),
    _dCALENDAR[ANO] = MAXX(_dCALENDAR, _dCALENDAR[ANO])
)
 
return
 if(SELECTEDVALUE(_dCALENDAR[MES]) = BLANK(), BLANK(),
DATEADD1 + DATEADD2 + DATEADD3
 )

 

Total movel 3M =
VAR vAno =
    SELECTEDVALUE ( _dCALENDAR[ANO] )
 
var vUltMesComValor =
CALCULATE(
    MAXX(_dCALENDAR, _dCALENDAR[MES]),
    FILTER(ALLSELECTED(_dCALENDAR),
    [3M 01_VAL_TOT_REPASSE] <> BLANK()),
    _dCALENDAR[ANO] = vAno
)
 
VAR vValor =
    CALCULATE (
        [3M 01_VAL_TOT_REPASSE],
        ALL ( _dCALENDAR ),
        _dCALENDAR[MES] = vUltMesComValor,
        _dCALENDAR[ANO] = vAno
    )
 
return
    IF (
        SELECTEDVALUE(_dCALENDAR[MES]) = BLANK ()
            && SELECTEDVALUE ( _dCALENDAR[ANO] ) <> BLANK (),
        vValor,
        [3M 01_VAL_TOT_REPASSE]
    )




Em anexo o pbix. 


Sucesso! 🥇🚀












 

Flávio Pinheiro.pbix

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

  • 0
  • Membros
Postado (editado)

@Tiago Craici
A medida funciona bem para os meses sequenciais, porem quando há intervalos (gaps) ela quebra, confira o print.
No primeiro pbix que mandei eu resumi bem os dados para poder enviar; então você não iria conseguir ver as falhas de gaps, por isso anexei um com mais informações.

image.png.6de3082eec71468610c4db696d2e04a1.png

pbe_forum.pbix

Editado por Flávio Pinheiro
Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

Olá @Flávio Pinheiro, faz um ajuste na medida assim:

Total movel 3M = 
VAR vAno =
    SELECTEDVALUE ( _dCALENDAR[ANO] )
 
var vUltMesComValor =
CALCULATE(
    MAXX(_dCALENDAR, _dCALENDAR[MES]),
    FILTER(ALLSELECTED(_dCALENDAR),
    [3M 01_VAL_TOT_REPASSE] <> BLANK()),
    _dCALENDAR[ANO] = vAno
)
 
VAR vValor =
    CALCULATE (
        [3M 01_VAL_TOT_REPASSE],
        ALL ( _dCALENDAR ),
        _dCALENDAR[MES] = vUltMesComValor,
        _dCALENDAR[ANO] = vAno
    )
VAR vValor2 = 
    IF (
        SELECTEDVALUE(_dCALENDAR[MES]) = BLANK ()
            && SELECTEDVALUE ( _dCALENDAR[ANO] ) <> BLANK (),
        vValor,
        [3M 01_VAL_TOT_REPASSE]
    )
RETURN
IF(vValor2, vValor2, [01_VAL_TOT_REPASSE])

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros
Postado (editado)

Bom dia @Flávio Pinheiro!

Maravilha, que bom que conseguimos chegar a seu objetivo. 



Só peço por gentileza marcar a solução que te atendeu, no caso você marcou a sua eheeheh olha abaixo. Dessa forma fica mais fácil para os demais com mesmo problema chegar a solução mais rápido:

image.png.842557f339d2ce3e66e4d579ee0a0389.png


Sucesso! 🥇🚀
 

Editado por Tiago Craici
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...