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!

Published by Pedro Carvalho

Apaixonado por análise de dados e Power BI

One thought on “Power BI Últimos 3 Meses

  1. Muito bom.
    Mas você conseguiu fazer também com CALCULATETABLE?
    Estou tendo este problema. Tentando gerar uma tabela dinamicamente a partir de filtro de data de corte e só funciona com hardcode.

    Se vc puder dar uma luz, muito agradeço!

    Regiao_Anterior =
    –Com o valor que vem do Slider, não funciona
    –var vDias = Slider[Slider Value]

    –Com o valor hardcode, funciona
    var vDias = 2

    var vCNPJAnterior =
    DISTINCT(
    SELECTCOLUMNS(
    CALCULATETABLE(‘Export’,
    ‘Export'[EMISSAO] < MAXX('Export', 'Export'[EMISSAO]) – vDias
    )
    , "CNPJ"
    , 'Export'[CNPJ]
    )
    )

    return vCNPJAnterior

    Like

Deixe uma resposta

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: