1
resposta

Dúvida - Medias Moveis fórmula

Surgiu a seguinte dúvida em minha cabeça a partir do código da medida "media movel 30 dias"abaixo:

var DataAtual = MAX(Tb_Calendario[Date])

RETURN
IF(
    COUNTROWS(Tb_ItensNotas)>0,

    AVERAGEX(
        DATESBETWEEN(

            Tb_Calendario[Date],
            DataAtual- 30,
            DataAtual),

        [Total Vendas]
           
        )
)

Partindo do pressuposto que a variavel DataAtual obtém sempre a data mais atual da tabela calendário e que por sua vez a tabela calendário sempre será formada por datas mais atuais que estiverem no modelo trabalhado em questão,neste projeto da aula seria a seguinte 31/12/2018.

Voltando para o código acima, percebemos que ele vai filtrar o intervalo de duas tabelas, e dentro dos paraâmetros estarei descontando sempre 30 dias da DataAtual.

Uma vez que eu crie uma segmentação de dados por ano com base nas datas da tabela calendário, vamos supor que o usuário filtre pelo ano de 2016, a fórmular deveria obter a data mais atual dentro do ano de 2016 de acordo com os valores de datas presentes na tabela calendário e logo em seguida, retornar as datas e as médias que estão entre 30 dias a contar data data mais atual disponível, mas percebo que isto não está acontecendo.

Este assunto não está muito claro para mim.

Por favor me ajudem.

1 resposta

Olá, Gabriel, tudo bem?

A medida que você apresentou calcula a média móvel das vendas nos últimos 30 dias, considerando o contexto de filtro aplicado. Vamos analisar cada parte dela:

  • DataAtual = MAX(Tb_Calendario[Date]): Essa linha define uma variável chamada DataAtual que recebe a data mais recente da tabela Tb_Calendario.
    Importante: essa data é a mais recente dentro do contexto de filtro atual. Se você não tiver nenhum filtro aplicado, será 31/12/2018 (como você mencionou). Mas, se você filtrar por 2016, será 31/12/2016 (ou a última data de 2016 presente na sua tabela).

  • COUNTROWS(Tb_ItensNotas) > 0: Essa condição verifica se existem linhas na tabela Tb_ItensNotas. Isso serve para evitar erros caso não haja dados para o período selecionado.

  • DATESBETWEEN(Tb_Calendario[Date], DataAtual - 30, DataAtual): Essa função retorna uma tabela contendo todas as datas entre DataAtual - 30 e DataAtual, ou seja, um período de 30 dias.

  • AVERAGEX(..., [Total Vendas]): Essa função calcula a média de [Total Vendas] para cada data na tabela retornada por DATESBETWEEN.

Se o seu resultado estiver diferente do esperado, por favor envie um print da sua tela para que eu possa analisar melhor.

Abaixo criei uma tabela com Tb_Calendario[Date], [Total Vendas] e a medida Média Móvel 30 dias

Gráfico e tabela no Power BI mostrando a média móvel de 30 dias das vendas de 2016. No gráfico superior, há dois pontos representando a média móvel de 30 dias e a média móvel do mesmo período do ano anterior (LY) para o dia 31 de dezembro. Abaixo, a tabela apresenta as colunas Data, Total de Vendas, Total Móvel 30 dias e Média Móvel 30 dias. O destaque está em 31/12/2016, com Total de Vendas de 172.145,88 e Média Móvel de 204.731,34. O total acumulado das vendas no período é de 77.858.696,54.
Verifique se o seu resultado está igual ao exemplo acima.

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!