Joviano

Bem vindo ao

Blog do Jovi!

O blog do Jovi tem como objetivo ajudar você com suas dúvidas, além de expandir seu conhecimento através da informação.

Valor Acumulado e Média Móvel no Power BI com Parâmetro Dinâmico

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:

Tabela calendario ligando com a fato no power bi

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 a FILTER 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:

tabela generateseries com dax
what if parameter com dax

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ção EDATE retorna a data deslocada para trás pelo número de meses definidos. Aqui, subtraímos MESES - 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 datas DT_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

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Receba conteúdos do Jovi!

Digite seu interesse abaixo:

Quer Aprender sobre Power Query?

Conheça nossa formação e tudo que você pode aprender com ela.

Mais conteúdos gratuitos para você!

OPA, vejo que você é novo por aqui!

Temos um presente de boas vindas para os amantes de Blog!

E ai FERA?!

Não vou atrapalhar tua leitura deste super artigo.

Só quero te dizer que por ser um visitante novo aqui no site, nosso sistema está programado para te enviar um cupom de desconto para a FORMAÇÃO POWER QUERY 2.0, que é um pacotão de cursos do JOVI, com mais de 300 horas de conteúdo.

Informe seus dados a seguir, que te enviaremos as instruções para resgate desse cupom exclusivo.

Após enviar, pode fechar essa janela, que seu presente já está em processamento.

A ementa possui centenas de aulas, e resumimos em um painel de PowerBI o qual enviaremos a você.

Preencha seu nome e email que em instantes receberá a ementa completa deste pacote de cursos.

Formato Aceito: [+ código do pais] [código de área] [número]