Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Período Anterior

A função "SAMEPERIODLASTYEAR" deve trazer os mesmos dados do mesmo período de um ano para o outro, correto?

Por que isso só acontece com o primeiro mês de 2015?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Algo que eu não entendi é como o mês do ano atual vendeu mais que o mesmo mês do ano anterior e a margem ficou negativa.

Por exemplo Abril16 = 25604972,93, Abril15 = 248967774,44 e a margem deu -1,47%. Mas na verdade abril16 teve uma margem positiva em relação ao ano anterior, não é?

Poderiam me ajudar, por favor?

3 respostas
solução!

Oi, Julia, tudo bem?

Sua dúvida é pertinenete, e toca em dois pontos muito importantes ao usar o Power BI para comparar dados ano a ano. Então irei destrinchar por partes para um melhor entendimento:

1. Por que a função SAMEPERIODLASTYEAR só funciona em janeiro?

Antes de responder essa pergunta, vamos recapitular alguns pontos sobre como essas funções trabalham no DAX.

O que faz o TOTALYTD?

A função TOTALYTD calcula o acumulado no ano até a data atual. Por exemplo, se o contexto do seu visual é abril de 2016, ela soma de janeiro até abril de 2016. Isso significa que ela entende automaticamente o começo do ano (janeiro) e acumula até o mês corrente no filtro.

O que faz o SAMEPERIODLASTYEAR?

A função SAMEPERIODLASTYEAR pega o mesmo intervalo de datas do ano anterior. Porém, aqui está um detalhe crucial: ela não entende acumulado. Ela simplesmente pega o exato conjunto de datas do ano anterior, baseado no contexto de filtro atual.

Se o filtro do visual está em fevereiro de 2016, o SAMEPERIODLASTYEAR traz apenas fevereiro de 2015, e não de janeiro a fevereiro.

E onde está o problema?

O TOTALYTD espera um intervalo contínuo desde janeiro até o mês corrente. Quando usamos SAMEPERIODLASTYEAR dentro do TOTALYTD, esperamos que ele traga o acumulado de janeiro até aquele mês do ano anterior.

Porém, o que realmente acontece é que SAMEPERIODLASTYEAR fornece apenas o mês atual do ano anterior, quebrando a lógica de acúmulo do TOTALYTD. Isso explica por que funciona corretamente apenas em janeiro:

  • Em janeiro, tanto o mês corrente quanto o período deslocado são compostos de um único mês (janeiro). Logo, não há diferença perceptível.
  • A partir de fevereiro, o TOTALYTD de 2016 acumula janeiro + fevereiro, mas o SAMEPERIODLASTYEAR retorna somente fevereiro de 2015, gerando valores inconsistentes.

Visualizando com um exemplo

AnoMêsVendas MensaisVendas YTDSAMEPERIODLASTYEAR (Mensal)Esperado (Acumulado LY)
2015Janeiro100100--
2015Fevereiro200300--
2015Março300600--
2016Janeiro150150100100
2016Fevereiro250400200300

Perceba que a coluna SAMEPERIODLASTYEAR (Mensal) só pega o mês equivalente (jan pega jan, fev pega fev), enquanto o correto para análise YTD é acumular os meses (jan + fev + mar).

Ou seja, o SAMEPERIODLASTYEAR sozinho não tem contexto de acúmulo. Ele apenas desloca o intervalo atual para o ano anterior. Para resolver, é necessário construir uma lógica que leve o TOTALYTD aplicado diretamente sobre o período deslocado, garantindo que o acúmulo respeite o ano anterior.

Como ajustar isso?

Substitua a medida Periodo Anterior por esta versão abaixo, que usa DATESYTD, assim ele entende que precisa acumular desde janeiro no ano anterior:

Periodo Anterior =
CALCULATE(
    [Vendas Total],
    DATESYTD(
        SAMEPERIODLASTYEAR('Tabela Calendário'[Date])
    )
)

2. Sobre a margem negativa mesmo com aumento nas vendas.

Você está certa ao estranhar esse ponto, e mesmo fazendo os ajustes acima, ela trará resultados negativos, pois a nossa medida YoY % estamos usando [Vendas Total], que não é acumulada, ou seja, é apenas o valor do mês atual isolado, não o acumulado do ano.

Então, como o valor do mês atual (não acumulado) é menor que o acumulado do ano anterior, o resultado da fórmula fica negativo, mesmo o acumulado total do ano sendo maior.

Para ajustar você pode seguir utilizar [Vendas TOTALYTD] na comparação. Ficaria assim:

YoY % =
DIVIDE(
    [Vendas TOTALYTD] - [Periodo Anterior],
    [Periodo Anterior]
)

Resultado:

Matriz exibindo Ano, Mês, Vendas TOTALYTD, Período Anterior e YoY %. Vendas de 2015 e 2016. YoY % de jan a mar/2016 aparece positivo, o tota é -76,71%.  À direita, painel com medidas e hierarquia da Tabela Calendário.

Espero ter ajudado.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá! Agradeço a explicação, ficou muito mais claro!

Excelente explicação, muito obrigada!