Média móvel Power BI usando DAX Simplificado

Compartilhe!

Média móvel Power BI usando DAX Simplificado

Vamos considerar um conjunto de dados de vendas. O objetivo é analisar o volume diário de vendas. Se simplesmente construirmos um relatório que traça o valor das vendas dividido por dia, o resultado é difícil de decifrar.

A seguir está a série temporal das vendas totais diárias:

Total Sales = SUM(Orders[Sales])
GRAFICO POWER BI

O gráfico acima mostra grandes variações no valor total de vendas com um padrão de tendência horizontal.

Na modelagem de dados estatísticos, uma abordagem comum é calcular a média de um determinado período superior apenas ao nível do dia, especialmente quando a série temporal mostra um padrão horizontal ao longo de um período. Também é conhecido como Média Móvel.

O que é uma média móvel?

O método de médias móveis usa a média dos valores de dados k mais recentes na série temporal. Chamamos isso de movimento porque toda vez que uma nova observação se torna disponível para a série temporal, ela substitui a observação mais antiga na equação pelo valor mais recente e calcula uma nova média. Assim, os períodos sobre os quais a média é calculada mudam, ou se movem, a cada período subsequente.

A seguir está um exemplo de média móvel de 3 períodos ( k = 3)

Média movel power bi

Bora continuar?

Calculando a média móvel no Power BI

O objetivo aqui é calcular a média móvel dos últimos 30 dias.

Então, k = 30

Os especialistas recomendam a criação de pelo menos uma tabela de calendário no modelo de dados. No modelo atual, criei uma tabela de calendário e estabeleci a relação:

POWER BI

Em seguida, crie uma medida com o seguinte código:

Avg Sales (MA 30 days) =
//Selecting the date in the range
VAR _LastDate =
MAX ( dtCalendar[Date] )
//Defining the duration to be considered for average calculation(k)
VAR _Duration = 30
//Filtering the Calendar Table for the defined range
VAR _CalculationPeriod =
FILTER (
ALL ( dtCalendar ), — Removing any external filters context applied
AND (
dtCalendar[Date] > _LastDate — _Duration, — the range start date
dtCalendar[Date] <= _LastDate — the range end date ) ) //Calculating the Moving Average VAR _MovingAverage = IF ( COUNTROWS ( _CalculationPeriod ) >= _Duration, — Condition to check minimum number of days for the calculation.
CALCULATE (
AVERAGEX(dtCalendar,[Total Sales]), — Calculating average of the total sales amount
_CalculationPeriod
)
)
RETURN
_MovingAverage

A fórmula determina primeiro a última data visível; no visual, porque o contexto do filtro definido pelo visual está no nível da data, ele retorna a data selecionada (VAR _LastDate)

Em seguida, ele cria um conjunto de todas as datas entre a última data e a última data menos 30 dias (VAR _CalculationPeriod).

Por fim, a última etapa é usar este período como filtro no CALCULATE, de forma que o AVERAGEX final itere ao longo dos 30 dias, computando a média das vendas diárias.

O resultado do cálculo é apresentado no gráfico abaixo:

Média movel criado

A linha da média móvel é mais suave do que as vendas diárias, o que simplifica o processo de análise de tendências.

Via: medium

Você pode encontrar o arquivo pbix de amostra aqui

Como criar um tabela manualmente e inserir dados manualmente?

Compartilhe!