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

  • Alunos

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

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)
)
Link para o comentário
Compartilhar em outros sites

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

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

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

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

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

Faça login para comentar

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



Entrar Agora
×
×
  • Criar Novo...