No Power BI é comum utilizar funções de inteligência temporal para comparar períodos, como o desempenho de vendas de um mês atual com o mesmo mês do ano anterior. No entanto, essas comparações podem ser imprecisas se não considerarmos períodos incompletos. Por exemplo, comparar 13 dias de vendas de um mês atual com o mês inteiro do ano anterior pode levar a conclusões erradas.
O Problema nas Funções de Inteligência Temporal
O Power BI oferece diversas funções para inteligência temporal, como Year over Year (YoY) e Month over Month (MoM), que ajudam a comparar períodos específicos, como meses ou anos consecutivos. Porém, um detalhe crítico pode comprometer suas análises: períodos incompletos.
Ao comparar um mês incompleto, com apenas 13 dias de dados registrados, por exemplo, com o mês anterior, ou até com o mesmo mês do ano anterior, você pode ter uma inconsistência nos resultados se usar as funções SAMEPERIODLASTYEAR ou DATEADD. Isso ocorre porque essas funções consideram o período completo, independentemente da quantidade de dados disponíveis no período atual.
📁 BAIXE O MATERIAL UTILIZADO NESTE TUTORIAL.
Identificando o Erro
Considere as seguintes medidas para cálculos dos indicadores de faturamento Year over Year (YoY) e Month over Month (MoM).
Faturamento YoY¹ =
CALCULATE(
[Faturamento],
SAMEPERIODLASTYEAR(Calendario[Data])
)
Faturamento MoM¹ =
CALCULATE(
[Faturamento],
DATEADD(Calendario[Data], -1, MONTH)
)
Aparentemente não há nenhum problema com os cálculos.
O Faturamento YoY retornado para janeiro 2024 é exatamente o faturamento de janeiro 2023 (12 meses antes). E o Faturamento MoM retornado para o mês de janeiro 2024 é o faturamento de dezembro de 2023 (1 mês antes).
Como todos esses meses estão completos, os valores retornados são os esperados.
No entanto, quando chegamos a agosto de 2024, com apenas 13 dias de dados registrados, as comparações com o mês completo de julho de 2024 ou agosto de 2023 geram resultados distorcidos.
O correto seria comparar os 13 dias de agosto de 2024, com os primeiros 13 dias de agosto de 2023, no caso de do indicador Year over Year (YoY), ou com os primeiros 13 dias de julho de 2024 para o indicador Month over Month (MoM).
Solução: Ajustando as Funções para Períodos Incompletos
Para corrigir esse problema, é necessário ajustar as medidas para considerar apenas os dias disponíveis no período atual. Isso significa comparar os 13 dias de agosto de 2024 com os 13 dias de julho de 2024 ou os 13 dias de agosto de 2023.
Passo a Passo para Ajustar as Medidas
Identificar a Última Data com Vendas Registradas
Utilize a função LASTDATE para encontrar a última data com vendas no período atual.
Faturamento YoY² =
VAR DataUltimaVenda =
LASTDATE(Vendas[Data.Pedido])
RETURN
DataUltimaVenda
No entanto, essa função retorna a última data no contexto visual. Para garantir que ela considere todo o dataset, aplicamos um filtro adicional com REMOVEFILTERS:
Faturamento YoY² =
VAR DataUltimaVenda = CALCULATE(
LASTDATE(Vendas[Data.Pedido]),
REMOVEFILTERS(Calendario)
)
Calcular a Data Limite para o Período de Comparação
Com base na última data de venda, calcule a data correspondente no período anterior (ano ou mês anterior). A função EDATE pode ser utilizada para retroceder um número específico de meses. No exemplo desse artigo, 12 meses e 1 mês, conforme necessário.
Faturamento YoY² =
VAR DataUltimaVendaGeral = CALCULATE(
LASTDATE(Vendas[Data.Pedido]),
REMOVEFILTERS(Calendario)
)
VAR DataLimite =
EDATE(DataUltimaVenda, -12)
RETURN
DataLimite
Criar a Medida Ajustada para Comparação Anual (Year-over-Year)
Utilize a função CALCULATE juntamente com DATEADD para retroceder 12 meses e aplique um filtro adicional para considerar apenas as datas até a data limite calculada.
Faturamento YoY² =
VAR DataUltimaVendaGeral = CALCULATE(
LASTDATE(Vendas[Data.Pedido]),
REMOVEFILTERS(Calendario)
)
VAR DataLimite =
EDATE(DataUltimaVenda, -12)
VAR YoY =
CALCULATE(
[Faturamento],
DATEADD(Calendario[Data], -12, MONTH),
FILTER(
ALL(Calendario), Calendario[Data] <= DataLimite
)
)
RETURN YoY
Criar a Medida Ajustada para Comparação Mensal (Month-over-Month)
De forma semelhante, ajuste a medida para comparar com o mês anterior, retrocedendo apenas um mês.
Faturamento MoM² =
VAR DataUltimaVendaGeral = CALCULATE(
LASTDATE(Vendas[Data.Pedido]),
REMOVEFILTERS(Calendario)
)
VAR DataLimite =
EDATE(DataUltimaVenda, -1)
VAR MoM=
CALCULATE(
[Faturamento],
DATEADD(Calendario[Data], -1, MONTH),
FILTER(
ALL(Calendario), Calendario[Data] <= DataLimite
)
)
RETURN MoM
Com as novas medidas, os valores passam a refletir corretamente os períodos incompletos.
Considerações Importantes
- Certifique-se de que a tabela de calendário (Calendario) esteja corretamente configurada e relacionada à tabela de vendas.
- As medidas [Faturamento] devem estar previamente definidas, representando a soma das vendas no período atual.
- Ao aplicar essas medidas, as comparações irão considerar apenas os períodos equivalentes, evitando análises incorretas devido a períodos incompletos.
Ao ajustar suas medidas conforme os passos acima, você garantirá que as comparações temporais no Power BI sejam precisas, mesmo quando os períodos atuais não estejam completos.
Gostou deste conteúdo? Confira mais no nosso YouTube!
Se você quer aprender mais técnicas práticas de Power BI e dominar a análise de dados, inscreva-se no canal da Cubo Três no YouTube! Lá você encontra tutoriais completos, passo a passo e gratuitos para elevar suas habilidades.
👉 Acesse nosso canal e confira agora!
Quer se aprofundar ainda mais? Conheça a nossa Formação em Power BI
Na Escola de Dados da Cubo Três, você terá acesso a cursos completos, do básico ao avançado, para transformar sua carreira na área de dados. Aprenda com especialistas e conquiste novas oportunidades profissionais!
Sem comentários! Seja o primeiro.