Power BI Últimos 3 Meses

Então… Continuando a saga das visões para o cliente kkkkkkk. Mas brincadeiras a parte, nosso trabalho como analista é gerar insights e resolver problemas da vida real que gerem valor para nossos clientes/usuários.

O Problema

No último post falei da visão Full Year e Year to Date, mas agora o cliente falou que quer ver também a visão dos últimos 3 meses, Last 3 Months. O problema é que meu modelo de dados nesse report é um pouco mais complexo do que o normal, deixa eu explicar por cima…

Meu modelo tem 2 tabelas de datas, uma que controla a data de referencia e outro a data de input. Então pra cada mês de referencia eu tenho um ano inteiro de input. E claro, os últimos 3 meses não podem levar como base o mês atual, e sim o mês filtrado na data de referencia.

Primeiros Passos

Então quando o cliente fala que quer os últimos 3 meses na verdade ele quer os meses Março, Abril e Maio e não Outubro, Novembro e Dezembro, porém, se mudarmos a seleção da data de referencia pra o mês 4 os últimos 3 meses também vão mudar, você entendeu, rs!

A lógica do cálculo em si é simples, basta pegar duas variáveis, uma que retorne a data para o mês que corresponde ao filtro da data de referencia, e outra com a data de 3 meses atrás.

Na imagem acima temos um exemplo simples do que precisamos fazer. O desafio é gerar as medidas que vão nos retornar DataIni e DataFim.

Antes de começar, vamos ver o que temos:

clique pra ver maior

A medida “teste 3 month” está com o código da imagem anterior. Nosso objetivo é automatizar isso.

Mão na massa

Já sabemos o que precisamos, vamos criar uma medida que retorne a data fim, porque essa é a data que vem do meu filtro da data de referencia.

Pra “facilitar” o filtro que tenho na minha data de referencia não é numa coluna data, e sim numa coluna texto, que retorna várias datas. Veja na imagem anterior o slicer LE Version que está em 5+7, isso significa que estou no mês 5.

clique pra ver maior

Pra conseguir pegar a data da seleção do filtro da data referencia eu criei 3 VAR.

Na VAR maxDateReference eu pego o max da data. Eu faço isso porque dDateReference[DateReference] não é um valor scalar, ele nesse momento tá trazendo uma lista de datas e eu só quero uma, qualquer uma, não importa, porque sei que todas as datas estão no mesmo mês.

Depois, na VAR monthDt eu pego o MONTH() dessa data, que vai ser 5, porque meu filtro da date reference tá em 5+7.

Depois, na VAR vDateEnd eu calculo mesmo a data de corte que preciso, o resultado aqui vai ser 01-05-2021. Perceba que no FILTER() eu verifico qual data é igual ao mês que peguei nas VARs acima e também filtro pra tirar fora os blanks.
Tirar os BLANKS() ali foi necessário pra garantir que só vamos tratar de campos que tem valores, caso contrário o resultado seria null porque como estrou trazendo MIN() de dateInput com FILTER() de ALL() de dateInput no mes 5, logo, o resultado seria o valor mínimo do mes 5 de toda minha tabela de dateInput, que no caso é 01/05/2020. Ah, e eu sei que não vou ter dados em 2020 porque na tela tenho um slicer filtrando 2021, caso contrário essa fórmula não funcionaria, hehe.

Com isso, finalizamos nossa data fim.

clique pra ver maior

Na imagem acima já ajustei a fórmula pra usar nossa nova fórmula que criamos agora.

Na sequencia preciso criar a data de inicio, que nada mais é do que a data fim 3 meses atrás. Pra isso vou usar a função EDATE(), que eu não conhecia, só fui conhecer resolvendo esse problema e quem me apresentou ela foi o Fred, o mago!

clique pra ver maior

Perceba que mudei o sinal da lógica, por conta do resultado que EDATE() me retorna.

Pronto, a medida está finalizada, o resultado é exatamente o mesmo que tinhamos no começo, mas agora com medidas automáticas =)

clique pra ver maior

Extra, adicionando a medida no slicer

Talvez vocês tenham percebido que agora além de Full Year, Year to Date temos Last 3 Months no slicer que temos no report, de forma que o usuário pode escolher como quer ver seus dados.

Eu expliquei como criar esse slicer nesse post aqui.

Pra adicionar mais uma opção no slicer você precisa:

  1. alterar sua tabela criada manualmente, editando source e adicionando Last 3 Month
clique pra ver maior

2. Adicionar na sua medida Switch, que expliquei como fazer nesse post, mais uma fórmula, que vai retornar o Last 3 Months.

Básicamente é isso pessoal, qualquer dúvida, deixem aí nos comentários!

Publicado por Pedro Carvalho

Apaixonado por anlise de dados e Power BI

Deixe uma resposta

× Como posso te ajudar?
%d blogueiros gostam disto: