Ir para conteúdo
  • 0

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


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

Pergunta

  • Alunos

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
  • Alunos
  • 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
 
  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Admin

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

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

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

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

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

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

Faça login para comentar

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



Entrar Agora
×
×
  • Criar Novo...