Ir para conteúdo
  • 0

MÉDIA MÓVEL 3M DIÁRIA - RETIRANDO DATAS FUTURAS


Alan Pacheco
Ir para solução Solucionado por Renato Rossato ,

Pergunta

  • Membros

Boa tarde!

Pessoal, vendo o curso do Leo, me surgiu uma dúvida. Eu gostaria de retirar as datas futuras da minha média móvel, porém sem utilizar um IF = blank, teria alguma maneira de remover o contexto.
QUESTÃO 16, EU RESOLVI A MESMA, PORÉM GOSTARIA DE SABER SE TEM OUTRA FORMA SEM UTILIZAR O IF, TIPO UTILIZANDO A CALCULATETABLE COM FILTER E ALL.

AGRADEÇO QUEM PUDER ME AJUDAR !!!
em anexo segue o pbix.

Medida normal da aula = 

Média Móvel Diaria =
VAR vDataContexto = MAX(dCalendario[Data])
VAR vMedMovel =
CALCULATE(
    DIVIDE([Total Vendido], DISTINCTCOUNT(dCalendario[Data])),
        DATESINPERIOD(
            dCalendario[Data],
            vDataContexto,
            -3,
            MONTH
        )
)
RETURN
vMedMovel


Medida que eu criei para retirar as datas futuras = 

Média Móvel Diaria - Retirando o Futuro =
VAR vDataContexto = MAX(dCalendario[Data])
VAR vMedMovel =
CALCULATE(
    DIVIDE([Total Vendido], DISTINCTCOUNT(dCalendario[Data])),
        DATESINPERIOD(
            dCalendario[Data],
            vDataContexto,
            -3,
            MONTH
    )
)
RETURN
IF(
    [Total Vendido] <> BLANK(),
    vMedMovel,
    BLANK()
)




image.png.90f23aeae66ce5126af336d71b0019a8.pngTrilha Champion v3.0 - Inicio Modulo 5.pbix 

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
  • Membros
  • Solução

Olá Alan, fiz um pequeno ajuste aqui com a FILTER:

Média Móvel Diaria =
VAR vDataContexto = MAX(dCalendario[Data])
VAR vMedMovel =
CALCULATE(
    DIVIDE([Total Vendido], DISTINCTCOUNT(dCalendario[Data])),
        FILTER(
        DATESINPERIOD(
            dCalendario[Data],
            vDataContexto,
            -3,
            MONTH
        ),
        dCalendario[Data] <= MAX(fVendas[Data Envio])
        )
)
RETURN
vMedMovel
 
  • Gostei 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

acho que entendi @Alan Pacheco... veja se é isso:

resultado:
image.png.1da156f7e77c20df4978e208f7913459.png

Medida alterada:

 

Média Móvel Diaria =
VAR vDataContexto =
    MAX ( dCalendario[Data] )
VAR vMedMovel =
    CALCULATE (
        DIVIDE ( [Total Vendido], DISTINCTCOUNT ( dCalendario[Data] ) ),
        DATESINPERIOD ( dCalendario[Data], vDataContexto, -3, MONTH )
    )
RETURN
    IF ( NOT ( ISBLANK ( [Total Vendido] ) ), vMedMovel )
 








 

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

  • 0
  • Membros

Opa é exatamente isso, porém tu saberia me dizer se tem como utilizar a CALCULATETABLE, FILTER E ALL igual ao Karpa utiliza, pois como tu podes ver acima eu também consegui resolver desta forma.

queria ver se seria possível alterando contexto e não tendo que colocar um IF como descrevi acima.

Com está medida ele da o mesmo resultado que o seu, porém eu queria saber se seria possível utilizando medidas de contexto.

 

Medida que eu criei para retirar as datas futuras = 

Média Móvel Diaria - Retirando o Futuro =
VAR vDataContexto = MAX(dCalendario[Data])
VAR vMedMovel =
CALCULATE(
    DIVIDE([Total Vendido], DISTINCTCOUNT(dCalendario[Data])),
        DATESINPERIOD(
            dCalendario[Data],
            vDataContexto,
            -3,
            MONTH
    )
)
RETURN
IF(
    [Total Vendido] <> BLANK(),
    vMedMovel,
    BLANK()
)
Editado por Alan Pacheco
Erro de digitação
Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

Olá Alan, cria uma coluna calculada na sua calendário com a fórmula:

dcalendario [Data] <= MAX(fVendas[Data Venda]) 

Assim vai retornar True para datas que forem menor que a maior ou igual a data máxima da fVendas.

Depois só usar a CALCULATETABLE pra filtrar a DATESINPERIOD:

Média Móvel Diaria - Retirando o Futuro =

VAR vDataContexto = MAX(dCalendario[Data])

VAR vMedMovel =

CALCULATE(

    DIVIDE([Total Vendido],

CALCULATETABLE (

DISTINCTCOUNT(dCalendario[Data])),

        DATESINPERIOD(

            dCalendario[Data],

            vDataContexto,

            -3,

            MONTH

    ),

dCalendario[Data] = TRUE()

)

RETURN

vMedMovel

Assim acredito que vai retornar da forma que deseja.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

@Renato Rossato, eu até entendi, porém a medida não funciona, pois o argumento da CALCULATETABLE pede uma tabela e não uma expressão como estã alocando com a DISTINCTCOUNT.
Referente a coluna, eu já tenho ela na minha dcalendario.

Outro ponto é a questão dos parenteses, acredito estar fora de ordem, modifiquei, porém ele informa a sequinte questão, conforme irei mostrar na segunda imagem.
Imagem 1


image.png.3a9b857df0a638dfd36ad4d58dade954.png

Imagem 2 
image.png.6e31afdffd0a12aa3b107d4bf3b12017.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

Olá Alan, fiz uma correção aqui:

Média Móvel Diaria - Retirando o Futuro =

 

VAR vDataContexto = MAX(dCalendario[Data])

 

VAR vMedMovel =

 

CALCULATE(

 

    DIVIDE([Total Vendido],

 

 

DISTINCTCOUNT(dCalendario[Data]),

CALCULATETABLE (

        DATESINPERIOD(

 

            dCalendario[Data],

 

            vDataContexto,

 

            -3,

 

            MONTH

 

    ),

 

dCalendario[Data] = TRUE()

 

)

)

RETURN

 

vMedMovel

Vê se agora retorna certo.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

Fala mestre @Renato Rossato, aloquei sua exata medida e troquei no final pela minha coluna de true e false, porém se vc aplicar no visual ainda vai ver que o grafico continua após o dia 16.
tenta fazer no PBIX ver se no seu fica igual por gentileza.

Segue print:
Como pode ver aloquei o nome de v2, pois também estou tentando resolver.
image.png.d20d57ea6fcf9a367c0132f55dc4741f.png

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