Aprenda a criar medidas de valor acumulado e média móvel com um parâmetro variável no Power BI. Vamos fazer isso usando variáveis no DAX, deixando de lado as funções nativas para entender o processo de forma mais profunda.
Introdução
Vamos começar pelo básico. O valor acumulado é essencialmente a soma de todos os valores até um determinado ponto no tempo.
Imagine que você está juntando moedas em um cofrinho.
Cada nova moeda que você coloca, você soma com as que já estão lá.
O valor acumulado é essa soma crescente.
A Dimensão TEMPO [ tabela Calendario ]
Para trabalhar com valores acumulados e médias móveis, é crucial ter uma tabela de datas. No Power BI, uma tabela de datas permite organizar e segmentar os dados ao longo do tempo.
Caso o seu modelo de dados não a tenha, é crucial que você crie uma, mesmo que de modo simples
dCalendario = CALENDAR(min(TabelaFaturamento[ColunaDATA]),max(TabelaFaturamento[ColunaDATA]))
Explicação:
CALENDAR
: Esta função cria uma tabela com uma coluna de datas.MIN(TabelaFaturamento[ColunaDATA])
: Define a data mínima na sua tabela de fatos.MAX(TabelaFaturamento[ColunaDATA])
: Define a data máxima na sua tabela de fatos.
Essa tabela vai abranger todas as datas do seu conjunto de dados, garantindo que todas as possíveis datas sejam cobertas.
Você pode incrementar esse exemplo, colocando já alguns atributos extra, tudo de uma vez só
dCalendario =
ADDCOLUMNS(
CALENDAR(min(TabelaFaturamento[ColunaDATA]),max(TabelaFaturamento[ColunaDATA]))
"ANO",YEAR([Date]),
"MES",MONTH([Date]),
"MES-INICIO",DATE(YEAR([Date]),MONTH([Date]),1)
)
-- coluna [Date] é a coluna criada automaticamente no modelo
Mas aqui já fica uma dica muito importante, onde você pode (e deve) criar uma tabela CALENDARIO num Fluxo de Dados (do Power BI), ou até mesmo no SQL, e ao carregar as tabelas do modelo, já trazer essa calendario”zão” junto.
Supondo que você inclua qualquer coluna nessa tabela CALENDÁRIO lá onde ela está armazenada, ao atualizar os modelos de dados, todos estarão com essa nova coluna.
Isso eu falo no módulo MODELAGEM DE DADOS NO POWER BI lá da nossa FORMAÇÃO POWER QUERY 2.0.
E aqui nessa aula gratuita, eu lembro-me de ter usado essa técnica na prática
Vinculando as Tabelas
Vincule a tabela dimensão (Calendário) com a Fato, para que possamos criar as medias inteligentes nos próximos passos:
Minha sugestão aqui, é que você comece a aprender a deixar SEMPRE a dimensão acima, e o(s) fato(s) abaixo.
Isso facilita demais o entendimento de “quem está filtrando quem”.
Criando a Medida de Valor Acumulado
Agora que temos nossa tabela de datas, vamos criar a medida de valor acumulado.
ValorAcumulado =
VAR DataAtual = MAX(Calendario[Date])
VAR ValorAcumulado =
CALCULATE(
SUM(TabelaFaturamento[ValorVenda]),
FILTER(
ALL(Calendario),
Calendario[Date] <= DataAtual
)
)
RETURN
ValorAcumulado
Explicação:
VAR DataAtual = MAX(Calendario[Date])
: Cria uma variável que armazena a maior data no contexto, ou seja, se você estiver com dados de 1900 a 2030 na tela, e estiver filtrando os anos de 2023 e 2024, essa função retornará31/12/2024
, que é a maior data no contexto. Lembrando que cada “linha da tabelinha” é um filtro que está sendo aplicado.VAR ValorAcumulado
: Cria uma variável para armazenar o valor acumulado até a maior data.CALCULATE
: É a super calculadora que calcula uma medida, de acordo com filtros aplicados.SUM(TabelaFaturamento[ValorVenda])
: Soma os valores de faturamento.FILTER
: Filtra os dados para incluir apenas as datas até a data atual.ALL(Calendario)
: Remove os filtros na coluna de data para garantir que todas as datas sejam consideradas. Para que aFILTER
possa filtrar as linhas que deseja.
Entendendo a Média Móvel
A média móvel é uma forma de suavizar os dados, calculando a média dos valores em um período de tempo específico.
Imagine que você está monitorando a temperatura diariamente, mas quer saber a média dos últimos 7 dias.
Isso ajuda a entender a tendência sem se preocupar com variações diárias.
Definindo o Parâmetro
Para calcular a média móvel, precisamos de um parâmetro que defina o número de dias para a média.
Vamos criar isso usando um “What If Parameter”.
No Power BI, vá até a guia “Modelagem” e selecione “Novo Parâmetro”.
Defina o nome como zMeses
e configure os valores de 1 a 12.
Se olhar na barra de fórmulas, deve ter gerado algo similar a isso aqui:
zMeses = GENERATESERIES(1, 12, 1)
Quando você cria um parâmetro, o Power BI cria uma medida, para mostrar o valor selecionado, e uma tabela de valores físicos:
Com isso em mente, sabemos que essa medida retorna o valor do mês selecionado no SLICER (filtro), e com isso, podemos usar como parâmetro no nosso cálculo de meses da média móvel.
Criando a Medida de Média Móvel
Com o parâmetro criado, vamos criar a medida que calcula a média móvel.
Faturamento Média Móvel =
VAR MESES = [Valor zMeses]
VAR DT_ATUAL = MAX(Calendario[MES-INICIO])
VAR DT_ANT = EDATE(DT_ATUAL, -MESES +1) -- vai retornar o inicio de N meses anteriores
VAR VALOR =
CALCULATE(
[_Faturamento], -- supondo que já tenha uma medida de valor total do faturamento no modelo de dados
FILTER(
ALL(Calendario),
Calendario[MES-INICIO] >= DT_ANT
&& Calendario[MES-INICIO] <= DT_ATUAL
)
)
RETURN
VALOR
Explicação:
VAR MESES = [DiasMediaMovel]
: Define a quantidade de meses para calcular a média móvel com base no parâmetro selecionado.VAR DT_ATUAL = MAX(Calendario[MES-INICIO])
: Define a data atual no contexto da linha.VAR DT_ANT = EDATE(DT_ATUAL, -MESES + 1)
: Calcula a data de início para o período da média móvel subtraindo os meses definidos pelo parâmetro.EDATE(DT_ATUAL, -MESES + 1)
: A funçãoEDATE
retorna a data deslocada para trás pelo número de meses definidos. Aqui, subtraímosMESES - 1
para incluir o mês atual no cálculo.
CALCULATE
: Altera o contexto de cálculo.[_Faturamento]
: Medida que calcula o faturamento.FILTER
: Filtra os dados para incluir apenas o período definido pelas datasDT_ANT
atéDT_ATUAL
.ALL(Calendario)
: Remove os filtros da tabela Calendario para garantir que todas as datas sejam consideradas.
Essa medida calcula a média móvel considerando um intervalo de meses definido dinamicamente pelo parâmetro DiasMediaMovel
.
Vou te ajudar ainda mais nessa sopa de letrinhas
Para aprender DAX, nada melhor que uma boa video aula, bem passo a passo, explicando cada decisão e cada perigo que pode aparecer.
Por isso eu criei uma aula no meu canal do Youtube para te ensinar isso tudo detalhadamente
E ainda tem material de apoio
CLIQUE AQUI e acesse nossa CENTRAL DE CONTEÚDOS e nela tem um link para nossa pasta com os materiais de apoio de nossas aulas.
O arquivo dessa aula é o “20240611_MediaMovelDinamica.zip”
Conclusão
Fala sério, FERA! Aprender a criar medidas de valor acumulado e média móvel com variáveis no Power BI não só te dá mais controle sobre os dados, mas também te ajuda a entender melhor os processos por trás dessas análises.
Agora você pode aplicar isso em qualquer análise que precise de um acompanhamento mais detalhado.
Quer aprender mais truques como esse?
CLIQUE AQUI e vem conhecer a Formação Power Query 2.0 e transforme sua forma de trabalhar com dados!
Por hoje é isso,
Forte Abraço